Mikaroka ny motera Mediastreamer2 VoIP. Fizarana 1

Ny fitaovan'ny lahatsoratra dia nalaina avy amin'ny ahy fantsona zen.

fampidirana

Ity lahatsoratra ity dia fiandohan'ny andian-dahatsoratra momba ny fanodinana media amin'ny fotoana tena izy amin'ny fampiasana ny motera Mediastreamer2. Ny famelabelarana dia ahitana ny fahaiza-manao faran'izay kely indrindra amin'ny fiasana amin'ny terminal Linux sy ny fandaharana amin'ny fiteny C.

Mediastreamer2 no motera VoIP ao ambadiky ny tetikasa finday voip finday malaza. telefaonina. Ao amin'ny Linphone Mediastreamer2 dia mampihatra ny fiasa rehetra mifandraika amin'ny feo sy horonan-tsary. Ny lisitr'ireo endri-javatra maotera dia azo jerena ato amin'ity pejy Mediastreamer ity. Ny kaody loharano dia eto: GitLab.

Ao amin'ny lahatsoratra, ho fanamorana, ho solon'ny teny hoe Mediastreamer2 dia hampiasa ny fanamarihana Rosiana izahay: "media streamer".

Ny tantaran'ny famoronana azy dia tsy mazava tsara, fa raha jerena amin'ny kaody loharano dia nampiasa ny tranomboky teo aloha izy glib, izay, raha ny marina, dia manondro ny mety ho fifandraisana lavitra amin'ny GStreamer. Raha ampitahaina amin'ny hoe ny streamer media dia toa maivana kokoa. Ny dikan-teny voalohany amin'ny Linphone dia niseho tamin'ny 2001, ka amin'izao fotoana izao dia misy ny streamer media ary mivoatra efa ho 20 taona.

Ao am-pon'ny fampitam-baovao dia misy rafitra antsoina hoe "Data flow" (data flow). Ny ohatra iray amin'ny maritrano toy izany dia aseho amin'ny sary etsy ambany.

Mikaroka ny motera Mediastreamer2 VoIP. Fizarana 1

Amin'ity maritrano ity, ny algorithm fanodinana data dia tsy voafaritra amin'ny alΓ lan'ny code program, fa amin'ny alΓ lan'ny skema (grafika) ho an'ny fampifandraisana ireo asa izay azo alamina amin'ny filaharana rehetra. Ireo fiasa ireo dia antsoina hoe sivana.

Ity maritrano ity dia mamela ny fampiharana ny fampandehanana ny fanodinana media amin'ny endrika sivana iray mifandray amin'ny rafitra fanodinana sy fandefasana ny fifamoivoizana RTP finday VoIP.

Ny fahafahana manambatra ny sivana amin'ny tetika tsy misy dikany, ny fampivoarana tsotra ny sivana vaovao, ny fampiharana ny streamer amin'ny haino aman-jery ho toy ny tranomboky misaraka tsy miankina, mamela azy hampiasaina amin'ny tetikasa hafa. Ankoatr'izay, ny tetikasa dia mety ho eo amin'ny sehatry ny VoIP, satria azo atao ny manampy sivana nataon'ny tena.

Ny tranombokin'ny sivana nomen'ny default dia tena manankarena ary, araka ny efa voalaza, dia azo itarina miaraka amin'ny sivana amin'ny endrikay manokana. Fa aloha, andeha hofaritantsika ireo sivana efa vita izay miaraka amin'ny streamer media. Ity ny lisitr'izy ireo:

Sivana feo

Famerenana sy famerenam-peo

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Feon'ny Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Serivisy filaharana audio (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Serivisy Unit Audio (Mac OS X)
  • Zavakanto (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Mpilalao fisie (rakitra manta/wav/pcap) (Linux): MS_FILE_PLAYER
  • Mpilalao rakitra (rakitra manta/wav) (Windows): MS_WINSND_READ
  • Manorata amin'ny rakitra (rakitra wav) (Linux): MS_FILE_REC
  • Soraty amin'ny rakitra (rakitra wav) (Windows): MS_WINSND_WRITE
  • Mac Audio Unit (Mac OS X)
  • MME (Windows)
  • OSS (Linux): MS_OSS_WRITE, MS_OSS_READ
  • PortAudio (Mac OS X)
  • PulseAudio (Linux): MS_PULSE_WRITE, MS_PULSE_READ
  • Windows Sound (Windows)

Audio encoding/decoding

  • G.711 a-lalΓ na: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 Β΅-lalΓ na: MS_ULAW_DEC, MS_ULAW_ENC
  • G.722: MS_G722_DEC, MS_G722_ENC
  • G.726: MS_G726_32_ENC, MS_G726_24_ENC, MS_G726_16_ENC
  • GSM: MS_GSM_DEC, MS_GSM_ENC
  • Linear PCM: MS_L16_ENC, MS_L16_DEC
  • Speex: MS_SPEEX_ENC, MS_SPEEX_DEC

Fanodinana feo

  • Fiovana fantsona (mono->stereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Fihaonambe: MS_CONF
  • Mpamorona DTMF: MS_DTMF_GEN
  • Fanafoanana ny Akon (speex): MS_SPEEX_EC
  • Equalizer: MS_EQUALIZER
  • Mixer: MS_MIXER
  • Packet Loss Compensator (PLC): MS_GENERIC_PLC
  • Resampler: MS_RESAMPLE
  • Mpizaha feo: MS_TONE_DETECTOR
  • Fanaraha-maso ny feo sy ny fandrefesana ny haavon'ny famantarana: MS_VOLUME

Sivana video

Fangalana horonan-tsary sy playback

  • android capture
  • Android playback
  • AV Foundation capture (iOS)
  • AV Foundation playback (iOS)
  • DirectShow Capture (Windows)
  • Playback DrawDib (Windows)
  • Playback ivelany - Mandefa horonan-tsary mankany amin'ny sosona ambony
  • GLX playback (Linux): MS_GLXVIDEO
  • Mire - Sary mihetsika synthetic: MS_MIRE
  • OpenGL playback (Mac OS X)
  • OpenGL ES2 playback (Android)
  • Quicktime Capture (Mac OS X)
  • Famerenana SDL: MS_SDL_OUT
  • Famoahana sary static: MS_STATIC_IMAGE
  • Video ho an'ny Linux (V4L) fakana (Linux): MS_V4L
  • Horonantsary ho an'ny Linux 2 (V4L2) fakana (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) fakana (Windows)
  • Video4windows (DirectShow) fakana (Windows CE)
  • Video ho an'ny Windows (vfw) fakana (Windows)
  • XV playback (Linux)

Video encoding/decoding

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, lanezy: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (decoder ihany): MS_H264_DEC
  • Theora: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

Fanodinana horonan-tsary

  • sary jpeg
  • Mpanova endrika Pixel: MS_PIX_CONV
  • Resizer
  • Sivana hafa
  • Fifanakalozana sakana data eo anelanelan'ny kofehy: MS_ITC_SOURCE, MS_ITC_SINK
  • Manangona sakana angon-drakitra avy amin'ny fidirana maro mankany amin'ny vokatra tokana: MS_JOIN
  • RTP mandray / mandefa: MS_RTP_SEND, MS_RTP_RECV
  • Mandika ny angona fidirana amin'ny vokatra marobe: MS_TEE
  • Nitsahatra ny entana: MS_VOID_SINK
  • Loharano fahanginana: MS_VOID_SOURCE

Plugins

Sivana feo

  • AMR-NB encoder/decoder
  • G.729 encoder/decoder
  • iLBC encoder/decoder
  • Silk encoder/decoder

    Sivana video

  • H.264 software encoder
  • H.264 V4L2 fitaovana accelerated encoder/decoder

Aorian'ny famaritana fohy momba ny sivana dia aseho ny anaran'ilay karazana, izay ampiasaina rehefa mamorona ohatra vaovao amin'ity sivana ity. Amin'ity manaraka ity dia hojerentsika ity lisitra ity.

Fametrahana eo ambanin'ny Linux Ubuntu

Ankehitriny dia hametraka ny media streamer amin'ny solosaina isika ary hanangana ny fampiharana voalohany miaraka aminy.

Ny fametrahana ny Mediastremer2 amin'ny solosaina na milina virtoaly mitantana Ubuntu dia tsy mitaky fahaiza-manao manokana. Eto sy etsy ambany, ny mari-pamantarana "$" dia manondro ny bitsika amin'ny fampidirana baiko. Ireo. Raha ao amin'ny lisitra ianao dia mahita an'io marika io eo am-piandohan'ny andalana, dia ity no tsipika izay asehon'ny baiko ho tanterahina ao amin'ny terminal.

Heverina fa mandritra ireo dingana ato amin'ity lahatsoratra ity dia afaka miditra amin'ny Internet ny solosainao.

Fametrahana ny fonosana libmediastremer-dev

Sokafy ny terminal ary soraty ny baiko:

$ sudo apt-get update

Angatahina ny tenimiafina hanaovana fanovana ianao, ampidiro ao ary ny mpitantana ny fonosana dia hanavao ny angonany. Aorian'izay dia mila mihazakazaka ianao:

$ sudo apt-get install libmediastreamer-dev

Ny fonosana fiankinan-doha ilaina sy ny tranombokin'ny media streamer mihitsy dia alaina sy apetraka ho azy.

Tokony ho 35 MB eo ho eo ny haben'ny fonosan'ny fiankinan-doha alaina. Ny antsipiriany momba ny fonosana napetraka dia azo jerena amin'ny baiko:

$ dpkg -s libmediastreamer-dev

Valiny ohatra:

Package: libmediastreamer-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 244
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Source: linphone
Version: 3.6.1-2.5
Depends: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev
Description: Linphone web phone's media library - development files
Linphone is an audio and video internet phone using the SIP protocol. It
has a GTK+ and console interface, includes a large variety of audio and video
codecs, and provides IM features.
.
This package contains the development libraries for handling media operations.
Original-Maintainer: Debian VoIP Team <[email protected]>
Homepage: http://www.linphone.org/

Fametrahana fitaovana fampandrosoana

Apetraho ny C compiler sy ny fitaovana miaraka aminy:

$ sudo apt-get install gcc

Manamarina ny valiny izahay amin'ny alΓ lan'ny fangatahana ny version compiler:

$ gcc --version

Ny valiny dia tokony ho toy izao:

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Manorina sy mampandeha ny fampiharana andrana

Mamorona izahay an-trano lahatahiry ho an'ny tetikasa fampianaranay, andao hiantso azy mstutorial:

$ mkdir ~/mstutorial

Ampiasao ny tonian-dahatsoratra tianao indrindra ary mamorona rakitra programa C antsoina hoe mstest.c miaraka amin'ireto votoaty manaraka ireto:

#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
  ms_init();
  printf ("Mediastreamer is ready.n");
}

Izy io dia manomboka ny streamer media, manonta fiarahabana ary mivoaka.

Tehirizo ny rakitra ary amboary ny fampiharana fitsapana miaraka amin'ny baiko:

$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`

Mariho fa ny tsipika

`pkg-config mediastreamer --libs --cflags`

voasivana amin'ny marika teny, izay hita eo amin'ny fitendry eo amin'ny toerana mitovy amin'ny litera "Ё".

Raha tsy misy hadisoana ny rakitra, dia aorian'ny fanangonana dia hisy rakitra hiseho ao amin'ny lahatahiry mstest. Manomboka ny programa izahay:

$ ./mstest

Ny vokatra dia ho toy izao:

ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL default:0
ortp-warning-Could not attach mixer to card: Invalid argument
ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0
ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0
ortp-warning-Strange, sound card HDA Intel PCH does not seems to be capable of anything, retrying with plughw...
Mediastreamer is ready.

Amin'ity lisitra ity dia hitantsika ny hafatra diso izay asehon'ny tranomboky ALSA, ampiasaina hifehezana ny kara-peo. Ny mpamorona ny media streamer ny tenany dia mino fa ara-dalΓ na izany. Amin'ity tranga ity dia miombon-kevitra amin'izy ireo izahay.

Ankehitriny isika dia vonona ny hiasa miaraka amin'ny streamer media. Napetrakay ny tranomboky streamer media, ny fitaovana fanangonana, ary ny fampiasana fampiharana andrana, nanamarina fa voarindra ireo fitaovana ary manomboka am-pahombiazana ny fampitam-baovao.

Manaraka lahatsoratra hamorona fampiharana izay hanangona sy hampandeha ny fanodinana famantarana feo ao anaty rojo sivana maromaro.

Source: www.habr.com