Sahaminta mashiinka Mediastreamer2 VoIP. Qaybta 1

Nuxurka maqaalku waxa aan ka soo qaatay kanaalka zen.

Horudhac

Maqaalkani waa bilawga maqaallo taxane ah oo ku saabsan habaynta warbaahinta waqtiga-dhabta ah iyadoo la adeegsanayo mishiinka Mediastreamer2. Soo jeedintu waxay ku lug yeelan doontaa xirfadaha ugu yar ee ka shaqaynta terminalka Linux iyo barnaamijka luuqada C.

Mediastreamer2 waa matoorka VoIP ee ka dambeeya mashruuca taleefoonka voip software il furan oo caan ah. Telefoonka gacanta. Gudaha Linphone Mediastreamer2 waxa ay fulisaa dhammaan hawlaha la xidhiidha codka iyo muuqaalka. Liis faahfaahsan oo ku saabsan sifooyinka matoorka ayaa laga arki karaa boggan Mediastreamer. Koodhka isha waa halkan: GitLab.

Dheeraad ah ee qoraalka, si ay ugu habboonaato, halkii erayga Mediastreamer2 waxaan isticmaali doonaa qoraalkeeda Ruushka: "media streamer".

Taariikhda abuurkeedu gabi ahaanba ma cadda, laakiin marka la eego koodhka isha, waxay hore u isticmaashay maktabadda glib, kaas oo, sida ay ahayd, tilmaamaysa xiriir fog oo suurtagal ah GStreamer. Marka la barbardhigo kan streamer-ka warbaahintu uu u eg yahay mid fudud. Nooca ugu horreeya ee Linphone wuxuu soo muuqday 2001, sidaas darteed xilligan xaadirka ah streamer warbaahintu wuu jiraa oo wuxuu kobcayaa ku dhawaad ​​20 sano.

Xudunta baahinta warbaahintu waa qaab dhismeed loo yaqaan "Data flow" (data flow). Tusaalaha qaab-dhismeedka noocan oo kale ah ayaa lagu muujiyay sawirka hoose.

Sahaminta mashiinka Mediastreamer2 VoIP. Qaybta 1

Qaab dhismeedkan, algorithm-ka habaynta xogta laguma qeexin koodka barnaamijka, laakiin waxaa lagu qeexaa qaab-dhismeedka (garaafka) ee hawlaha isku xidhka ee loo habayn karo hab kasta. Hawlahan waxaa loo yaqaan filtarrada.

Nashqadan qaabdhismeedku waxa ay suurtogal ka dhigaysaa in la hirgeliyo hab-shaqaynta warbaahinta qaab shaandhooyin ah oo ku xidhan nidaamka taraafikada iyo gudbinta taleefoonka VoIP ee RTP.

Awoodda isku-darka filtarrada ee qorshayaasha aan loo baahnayn, horumarinta fudud ee filtarrada cusub, hirgelinta streamer media sida maktabad madax-bannaan oo madaxbannaan, u oggolow in loo isticmaalo mashaariicda kale. Waxaa intaa dheer, mashruucu wuxuu ku jiri karaa goobta VoIP, maadaama ay suurtagal tahay in lagu daro filtarrada la sameeyay.

Maktabadda shaandhada ee sida caadiga ah loo keenay aad bay hodan u tahay oo, sidii horeba loo sheegay, waxa lagu kordhin karaa filtarrada nakhshadeenna ah. Laakiin marka hore, aan sharaxno filtarrada diyaarsan ee la socda qulqulka warbaahinta. Waa kuwan liiskooda:

filtarrada codka

Qabashada maqalka iyo dib u soo celinta

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Codka hooyo Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Adeegga Safka Maqalka (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Adeegga Qaybta Maqalka (Mac OS X)
  • Farshaxanka (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Daaqadaha): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Ciyaartoyga (faylalka cayriin/wav/pcap) (Linux): MS_FILE_PLAYER
  • Ciyaartoyga faylka (faylalka cayriin/wav) (Windows): MS_WINSND_READ
  • Ku qor faylka (faylalka wav) (Linux): MS_FILE_REC
  • Ku qor faylka (faylalka wav) (Windows): MS_WINSND_WRITE
  • Cutubka Maqalka Mac (Mac OS X)
  • MME (Daaqadaha)
  • OSS (Linux): MS_OSS_WRITE, MS_OSS_READ
  • PortAudio (Mac OS X)
  • PulseAudio (Linux): MS_PULSE_WRITE, MS_PULSE_READ
  • Daaqadaha Sound (Daaqadaha)

Codaynta/dejinta codka

  • 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
  • PCM toosan: MS_L16_ENC, MS_L16_DEC
  • Hadalka: MS_SPEEX_ENC, MS_SPEEX_DEC

Habaynta codka

  • Beddelka kanaalka (mono->stereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Shirka: MS_CONF
  • Dhaliyaha DTMF: MS_DTMF_GEN
  • Joojinta Echo (speex): MS_SPEEX_EC
  • Equalizer: MS_EQUALIZER
  • Isku-dhafka: MS_MIXER
  • Kharashka Khasaaraha Xidhmada (PLC): MS_GENERIC_PLC
  • Tusaale ahaan: MS_RESAMPLE
  • Dareeraha codka: MS_TONE_DETECTOR
  • Xakamaynta codka iyo cabbiraadda heerka signalka: MS_VOLUME

Filter-yada

Qabashada muuqaalka iyo dib-u-ciyaarista

  • qabashada android
  • dib u ciyaarista android
  • Qabashada AV Foundation (iOS)
  • Soo celinta AV Foundation (iOS)
  • Qabashada DirectShow (Daaqadaha)
  • Dib u soo celinta DrawDib (Windows)
  • Dib-u-ciyaarista dibadda - U dirida muuqaal lakabka sare
  • Dib u soo celinta GLX (Linux): MS_GLXVIDEO
  • Mire - Sawir dhaqaaqa synthetic: MS_MIRE
  • Dib-u-ciyaarista OpenGL (Mac OS X)
  • Dib-u-ciyaarista OpenGL ES2 (Android)
  • Qabashada degdega ah (Mac OS X)
  • Dib u soo celinta SDL: MS_SDL_OUT
  • Soo saarida sawirka taagan: MS_STATIC_IMAGE
  • Fiidiyowga loogu talagalay Linux (V4L) qabashada (Linux): MS_V4L
  • Fiidiyowga loogu talagalay Linux 2 (V4L2) qabashada (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) qabashada (Windows)
  • Video4windows (DirectShow) qabashada (Windows CE)
  • Fiidiyowga loogu talagalay Windows (vfw) qabashada (Windows)
  • Dib u soo celinta XV (Linux)

Codaynta/dejinta fiidyowga

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Barafka: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (kaliya koodhka): MS_H264_DEC
  • Aragtida: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

Habaynta muuqaalka

  • jpeg sawir qaade
  • Beddelaha qaabka Pixel: MS_PIX_CONV
  • Dib u habeyn
  • filtarrada kale
  • Isdhaafsiga xogta blocks inta u dhaxaysa dunta: MS_ITC_SOURCE, MS_ITC_SINK
  • Uruurinta baloogyada xogta agabyo badan ilaa hal wax soo saar: MS_JOIN
  • RTP qaado/gudbi: MS_RTP_SEND, MS_RTP_RECV
  • Koobiyaynta xogta galinta ee soo saaris badan: MS_TEE
  • culayska la joojiyay: MS_VOID_SINK
  • Isha aamusnaanta: MS_VOID_SOURCE

Plugins

filtarrada codka

  • AMR-NB codeer/decoder
  • G.729 cod-bixiye
  • iLBC codeer/kodeeye
  • SILK codeer/kodeeye

    Filter-yada

  • H.264 codeeyaha software
  • H.264 V4L2 koodheeyaha dardargeliyay hardware-ka

Sharaxaad gaaban ka dib shaandhada, magaca nooca ayaa la muujiyay, kaas oo la isticmaalo marka la abuurayo tusaale cusub oo shaandhadan ah. Waxa soo socda, waxaanu tixraaci doonaa liiskan.

Ku rakibida Linux Ubuntu

Hadda waxaan ku rakibi doonaa streamer-ka warbaahinta kumbuyuutarka waxaana ku dhisi doonaa codsigeena ugu horreeya.

Ku rakibida Mediastremer2 kumbuyuutar ama mashiinka farsamada gacanta ee Ubuntu uma baahna xirfado gaar ah. Halkan iyo hoosta, calaamadda "$" waxay muujin doontaa degdegga qolofka gelitaanka amarrada. Kuwaas. Haddii liiska aad ku aragto calaamaddan bilawga xariiqda, markaa tani waa xariiqda amarada lagu muujiyay in lagu fuliyo terminalka.

Waxaa loo malaynayaa in inta lagu jiro tillaabooyinka maqaalkan, kombayutarkaagu uu geli karo internetka.

Ku rakibida xirmada libmediastremer-dev

Bilaw terminalka oo ku qor amarka:

$ sudo apt-get update

Waxaa lagu weydiin doonaa furaha sirta ah si aad wax uga bedesho, geliso, maamulaha xirmada ayaa cusbooneysiin doona xogtiisa. Taas ka dib, waxaad u baahan tahay inaad ordo:

$ sudo apt-get install libmediastreamer-dev

Xirmooyinka ku-tiirsanaanta lagama maarmaanka ah iyo maktabadda streamer media lafteeda si toos ah ayaa loo soo dejin doonaa oo loo rakibi doonaa.

Tirada guud ee xirmooyinka deb ku-tiirsanaanta la soo dejiyay waxay noqon doontaa ku dhawaad ​​35 MB. Faahfaahinta ku saabsan xirmada rakiban waxaa laga heli karaa amarka:

$ dpkg -s libmediastreamer-dev

Tusaale ahaan jawaabta:

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/

Ku rakibida qalabka horumarinta

Ku dheji C compiler iyo qalabyada la socda:

$ sudo apt-get install gcc

Waxaanu hubinaa natiijada anagoo waydiina nooca isku xidhka:

$ gcc --version

Jawaabtu waa inay noqotaa sidatan:

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.

Dhisida iyo socodsiinta Codsiga Tijaabada

Waxaan ku abuurnaa guriga Galka mashaariicdayada casharrada, aynu wacno caqli-galnimo:

$ mkdir ~/mstutorial

Isticmaal tifaftiraha qoraalka aad jeceshahay oo samee faylka barnaamijka C ee la yiraahdo mstest.c oo leh nuxurka soo socda:

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

Waxay bilawday baahinta baahinta, waxay daabacdaa salaanta, oo ka baxdaa.

Kaydi faylka oo ku soo ururi arjiga tijaabada amarka:

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

Ogow in khadka

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

ku lifaaqan calaamado xigasho, kuwaas oo ku yaal kiiboodhka isla meesha uu ku yaal xarafka "Ё".

Haddii faylka uusan ku jirin khaladaad, ka dib marka la isku daro faylka ayaa ka soo muuqan doona tusaha mstest. Waxaan ku bilaabaynaa barnaamijka:

$ ./mstest

Natiijadu waxay noqon doontaa sidatan:

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.

Liiskan, waxaan ku aragnaa fariimaha khaldan ee ay maktabadda ALSA soo bandhigto, waxaa loo isticmaalaa in lagu xakameeyo kaadhka codka. Soo-saareyaasha streamer-ka warbaahinta laftooda ayaa rumeysan in tani ay tahay mid caadi ah. Xaaladdan oo kale, waxaan si cagajiid ah ku raacsanahay iyaga.

Hadda waxaan dhammaanteen qarka u saarannahay inaan la shaqeyno baahinta warbaahinta. Waxaan rakibnay maktabadda streamer-ka warbaahinta, aaladda isku-dubbaridka, iyo adeegsiga codsi tijaabo ah, waxaan xaqiijinnay in qalabka la habeeyey oo baahinta warbaahintu ay si guul leh u billowday.

Xiga maqaal waxaanu samayn doonaa codsi ururin doona oo socodsiin doona habaynta signalka maqalka ee silsilad dhawr filtarro ah.

Source: www.habr.com