Ho hlahloba enjene ea Mediastreamer2 VoIP. Karolo ea 1

Thepa ea sehlooho e nkiloe ho ea ka mocha oa zen.

Selelekela

Sengoliloeng sena ke qalo ea letoto la lingoloa tse mabapi le ts'ebetso ea mecha ea litaba ea nako ea nnete e sebelisang enjene ea Mediastreamer2. Tlhahiso e tla kenyelletsa tsebo e fokolang ea ho sebetsa setsing sa Linux le lenaneo ka puo ea C.

Mediastreamer2 ke enjine ea VoIP e ka morao ho projeke e tsebahalang ea software ea voIP ea mohala. mohala. Ho Linphone Mediastreamer2 e sebelisa mesebetsi eohle e amanang le molumo le video. Lethathamo le qaqileng la likarolo tsa enjine le ka bonoa leqepheng lena la Mediastreamer. Khoutu ea mohloli ke ena: GitLab.

Ho ea pele ka mongolo, bakeng sa boiketlo, ho e-na le lentsoe Mediastreamer2 re tla sebelisa tlhaloso ea eona ea Serussia: "media streamer".

Histori ea pōpo ea eona ha e hlake ka ho feletseng, empa ho ea ka khoutu ea eona ea mohloli, e kile ea sebelisa laebrari glib, eo, ka tsela ea tšoantšetso, e fanang ka maikutlo a kamano e ka bang hōle le GStreamer. Ha ho bapisoa le seo media streamer se shebahalang se le bobebe haholoanyane. Mofuta oa pele oa Linphone o hlahile ka 2001, ka hona hajoale media streamer e teng mme e tsoela pele ka lilemo tse ka bang 20.

Bohareng ba media streamer ke mohaho o bitsoang "Data flow" (data flow). Mohlala oa mohaho o joalo o bontšoa setšoantšong se ka tlase.

Ho hlahloba enjene ea Mediastreamer2 VoIP. Karolo ea 1

Mohahong ona, algorithm ea ts'ebetso ea data ha e hlalosoe ka khoutu ea lenaneo, empa ka morero (graph) bakeng sa ho kopanya mesebetsi e ka hlophisoang ka tatellano leha e le efe. Mesebetsi ena e bitsoa li-filters.

Mohaho ona o etsa hore ho khonehe ho kenya ts'ebetsong ts'ebetso ea ts'ebetso ea mecha ea litaba ka mokhoa oa sete ea li-filters tse amanang le mokhoa oa ho sebetsana le sephethephethe sa VoIP fonong ea RTP le phetisetso.

Bokhoni ba ho kopanya li-filters ka merero e ikemetseng, nts'etsopele e bonolo ea li-filters tse ncha, ts'ebetsong ea media streamer e le laebrari e ikemetseng e ikemetseng, e lumella hore e sebelisoe mererong e meng. Ho feta moo, morero ona o ka ba tšimong ea VoIP, kaha hoa khoneha ho eketsa li-filters tse entsoeng ke uena.

Laeborari ea li-filters e fanoeng ke kamehla e ruile haholo, 'me joalo ka ha ho se ho boletsoe, e ka atolosoa ka li-filters tsa moralo oa rona. Empa pele, a re hlaloseng li-filters tse lokiselitsoeng tse tlang le media streamer. Lenane la bona ke lena:

Lisefa tsa molumo

Ho hapa molumo le ho bapala hape

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Molumo oa tlhaho oa Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Tšebeletso ea Moqolo oa Molumo (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Tšebeletso ea Audio Unit (Mac OS X)
  • Bonono (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Sebapali sa faele (lifaele tse tala/wav/pcap) (Linux): MS_FILE_PLAYER
  • Sebapali sa faele (lifaele tse tala/wav) (Windows): MS_WINSND_READ
  • Ngola faeleng (lifaele tsa wav) (Linux): MS_FILE_REC
  • Ngolla faele (wav files) (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)

Khoutu ea molumo / decoding

  • G.711 a-law: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-law: 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

Ts'ebetso ea molumo

  • Phetolelo ea kanale (mono->stereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Seboka: MS_CONF
  • Jenereithara ea DTMF: MS_DTMF_GEN
  • Ho hlakoloa ha molumo (speex): MS_SPEEX_EC
  • Molekane: MS_EQUALIZER
  • Motsoaki: MS_MIXER
  • Motlatsi oa Tahlehelo ea Phakete (PLC): MS_GENERIC_PLC
  • Mohlala: MS_RESAMPLE
  • Mohloli oa molumo: MS_TONE_DETECTOR
  • Taolo ea molumo le tekanyo ea boemo ba lets'oao: MS_VOLUME

Lisefa tsa video

Ho hapa le ho bapala video

  • ho ts'oaroa ha android
  • ho bapala ha android
  • AV Foundation Capture (iOS)
  • Papali ea AV Foundation (iOS)
  • DirectShow Capture (Windows)
  • Ho bapala ka DrawDib (Windows)
  • Ho bapala ka ntle - Ho romella video sebakeng se kaholimo
  • Ho bapala ha GLX (Linux): MS_GLXVIDEO
  • Mire - Senepe sa maiketsetso se tsamaeang: MS_MIRE
  • Ho bapala ha OpenGL (Mac OS X)
  • Ho bapala ha OpenGL ES2 (Android)
  • Quicktime Capture (Mac OS X)
  • Ho bapala ka SDL: MS_SDL_OUT
  • Sephetho sa setšoantšo se tsitsitseng: MS_STATIC_IMAGE
  • Video For Linux (V4L) hapa (Linux): MS_V4L
  • Video For Linux 2 (V4L2) hapa (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) e hapa (Windows)
  • Video4windows (DirectShow) e hapa (Windows CE)
  • Video bakeng sa Windows (vfw) hapa (Windows)
  • XV playback (Linux)

Khouto ea video/decoding

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

Ts'ebetso ea video

  • setšoantšo sa jpeg
  • Sefetoleli sa sebopeho sa pixel: MS_PIX_CONV
  • Resizer
  • Lisefa tse ling
  • Phapanyetsano ea li-blocks tsa data lipakeng tsa likhoele: MS_ITC_SOURCE, MS_ITC_SINK
  • Ho bokella li-block tsa data ho tloha ho tse ngata tse kentsoeng ho ea ho tlhahiso e le 'ngoe: MS_JOIN
  • RTP amohela/fetisa: MS_RTP_SEND, MS_RTP_RECV
  • Ho kopitsa lintlha tse kentsoeng ho liphetho tse ngata: MS_TEE
  • Mojaro o felisitsoeng: MS_VOID_SINK
  • Mohloli oa khutso: MS_VOID_SOURCE

Li-plugins

Lisefa tsa molumo

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

    Lisefa tsa video

  • H.264 software ea khouto
  • H.264 V4L2 hardware e potlakisang encoder/decoder

Ka mor'a tlhaloso e khutšoanyane ea filthara, ho bontšoa lebitso la mofuta, le sebelisoang ha ho etsoa mohlala o mocha oa sefe sena. Ho tse latelang, re tla bua ka lethathamo lena.

Ho kenya tlas'a Linux Ubuntu

Joale re tla kenya media streamer khomphuteng mme re hahe kopo ea rona ea pele ka eona.

Ho kenya Mediastremer2 khomphuteng kapa mochini o sebetsang oa Ubuntu ha o hloke tsebo e khethehileng. Mona le ka tlase, letšoao "$" le tla bolela molaetsa oa khetla oa ho kenya litaelo. Tseo. haeba lethathamong u bona letšoao lena qalong ea mola, joale ona ke mola oo ho oona ho bonts'itsoeng litaelo tse lokelang ho phethwa bothateng.

Ho nahanoa hore nakong ea mehato e hlahang sehloohong sena, khomphuta ea hau e na le monyetla oa ho kena Inthaneteng.

Ho kenya sephutheloana sa libmediastremer-dev

Qala terminal ebe u ngola taelo:

$ sudo apt-get update

U tla botsoa password ea ho etsa liphetoho, e kenye 'me mookameli oa sephutheloana o tla ntlafatsa datha tsa eona. Ka mor'a moo, o lokela ho matha:

$ sudo apt-get install libmediastreamer-dev

Liphutheloana tse hlokahalang tsa ho itšetleha le laeborari ea media streamer ka boeona li tla khoasolloa le ho kengoa.

Kakaretso ea boholo ba lipakete tse jarollotsoeng tsa deb e tla ba 35 MB. Lintlha tse mabapi le sephutheloana se kentsoeng li ka fumanoa ka taelo:

$ dpkg -s libmediastreamer-dev

Mohlala oa karabo:

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/

Ho kenya lisebelisoa tsa ntlafatso

Kenya komporo ea C le lisebelisoa tse tsamaeang le eona:

$ sudo apt-get install gcc

Re hlahloba sephetho ka ho kopa mofuta oa compiler:

$ gcc --version

Karabo e lokela ho ba ntho e kang ena:

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.

Ho aha le ho tsamaisa Kopo ea Teko

Re theha ka lapeng foldara bakeng sa merero ea rona ea thupelo, ha re e bitse tsa thuto:

$ mkdir ~/mstutorial

Sebelisa mohlophisi oa mongolo oo u o ratang 'me u thehe faele ea lenaneo la C e bitsoang mstest.c ka litaba tse latelang:

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

E qala media streamer, e hatisa tumeliso, 'me ea tsoa.

Boloka faele 'me u bokelle kopo ea tlhahlobo ka taelo:

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

Hlokomela hore mola

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

e kentsoeng ka matšoao a quotation, a fumanehang lebokoseng sebakeng se le seng le lengolo "Ё".

Haeba faele e se na liphoso, joale ka mor'a ho bokella faele e tla hlaha bukeng mstest. Re qala lenaneo:

$ ./mstest

Sephetho se tla ba tjena:

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.

Lethathamong lena, re bona melaetsa ea liphoso eo laebrari ea ALSA e e bonts'ang, e sebelisetsoa ho laola karete ea molumo. Baetsi ba mecha ea litaba ka bobona ba lumela hore sena se tloaelehile. Tabeng ena, re lumellana le bona ka lekhonono.

Hona joale kaofela re ikemiselitse ho sebetsa le media streamer. Re kentse laeborari ea media streamer, sesebelisoa sa ho bokella, mme re sebelisa ts'ebeliso ea liteko, re netefalitse hore lisebelisoa li hlophisitsoe mme media streamer e qala ka katleho.

E 'ngoe sehlooho re tla theha sesebelisoa se tla kopanya le ho tsamaisa ts'ebetso ea lets'oao la molumo ka ketane ea li-filters tse 'maloa.

Source: www.habr.com