Binciko injin Mediastreamer2 VoIP. Kashi na 1

An ɗauko kayan labarin daga nawa zen channel.

Gabatarwar

Wannan labarin shine farkon jerin labarai game da sarrafa kafofin watsa labarai na ainihi ta amfani da injin Mediastreamer2. Yayin gabatarwar, ƙananan ƙwarewar aiki a cikin tashar Linux da shirye-shirye a cikin yaren C za su shiga ciki.

Mediastreamer2 injin VoIP ne a bayan sanannen aikin buɗaɗɗen tushen software na wayar voip. Kayan waya. A cikin Linphone Mediastreamer2 yana aiwatar da duk ayyuka masu alaƙa da sauti da bidiyo. Ana iya ganin cikakken jerin fasalulluka na injin akan wannan shafin Mediastreamer. Lambar tushe tana nan: GitLab.

Bugu da ari a cikin rubutu, don dacewa, maimakon kalmar Mediastreamer2 za mu yi amfani da bayaninta na Rasha: "Mai watsa labarai streamer".

Tarihin halittarsa ​​bai cika bayyana ba, amma idan aka yi la’akari da lambar tushe, a baya ya yi amfani da ɗakin karatu glib, wanda, kamar yadda yake, yana nuna yiwuwar dangantaka mai nisa da GStreamer. Idan aka kwatanta da abin da kafofin watsa labarai streamer ya fi nauyi. Sigar farko ta Linphone ta bayyana a cikin 2001, don haka a halin yanzu mai watsa shirye-shiryen watsa labarai yana wanzu kuma yana haɓaka kusan shekaru 20.

A cikin zuciyar mai rafi na kafofin watsa labaru akwai gine-ginen da ake kira "Data flow" (data flow). An nuna misalin irin wannan gine-gine a cikin hoton da ke ƙasa.

Binciko injin Mediastreamer2 VoIP. Kashi na 1

A cikin wannan gine-ginen, algorithm na sarrafa bayanai ba a kayyade shi ta hanyar lambar shirin ba, amma ta tsari (jadawali) don haɗa ayyukan da za a iya shirya ta kowane tsari. Ana kiran waɗannan ayyuka masu tacewa.

Wannan gine-ginen yana ba da damar aiwatar da ayyukan sarrafa kafofin watsa labaru a cikin nau'in saitin tacewa da aka haɗa a cikin tsari don sarrafawa da watsa zirga-zirgar RTP na wayar VoIP.

Ikon haɗa masu tacewa a cikin tsare-tsare na sabani, sauƙi mai sauƙi na sababbin masu tacewa, aiwatar da kafofin watsa labaru a matsayin ɗakin karatu mai zaman kansa, yana ba da damar yin amfani da shi a wasu ayyukan. Haka kuma, aikin na iya kasancewa a fagen VoIP, tunda yana yiwuwa a ƙara matattarar da aka yi ta hannun mutum.

Laburaren tacewa da aka kawo ta tsohuwa yana da wadata sosai kuma, kamar yadda aka ambata, ana iya tsawaita tare da tacewa na ƙirar mu. Amma da farko, bari mu bayyana shirye-shiryen tacewa waɗanda ke zuwa tare da rafi na kafofin watsa labarai. Ga jerin su:

Masu tace sauti

Ɗaukar sauti da sake kunnawa

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Sautin asali na Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Sabis na Queue Audio (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Sabis na Na'urar Sauti (Mac OS X)
  • Arts (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Mai kunna fayil (fayil ɗin raw/wav/pcap) (Linux): MS_FILE_PLAYER
  • Mai kunna fayil (fayil ɗin raw/wav) (Windows): MS_WINSND_READ
  • Rubuta zuwa fayil (fayilolin wav) (Linux): MS_FILE_REC
  • Rubuta zuwa fayil (fayilolin 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)

Sauti mai rikodin rikodin sauti

  • G.711 a-law: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-doka: 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 mai layi: MS_L16_ENC, MS_L16_DEC
  • Magana: MS_SPEEX_ENC, MS_SPEEX_DEC

sarrafa sauti

  • Canza tashoshi (mono->stereo, sitiriyo->mono): MS_CHANNEL_ADAPTER
  • Taro: MS_CONF
  • DTMF Generator: MS_DTMF_GEN
  • Sokewar echo (speex): MS_SPEEX_EC
  • Mai daidaitawa: MS_EQUALIZER
  • Mai haɗawa: MS_MIXER
  • Fakitin Asarar Ramuwa (PLC): MS_GENERIC_PLC
  • Mai Sake Samfura: MS_RESAMPLE
  • Mai gano sauti: MS_TONE_DETECTOR
  • Ikon ƙara da ma'aunin sigina: MS_VOLUME

Bidiyo tace

Ɗaukar bidiyo da sake kunnawa

  • android kama
  • sake kunnawa android
  • AV Foundation kama (iOS)
  • sake kunnawa AV Foundation (iOS)
  • Ɗauki DirectShow (Windows)
  • DrawDib sake kunnawa (Windows)
  • sake kunnawa na waje - Aika bidiyo zuwa saman Layer
  • sake kunnawa GLX (Linux): MS_GLXVIDEO
  • Mire - Hoton motsi na roba: MS_MIRE
  • Bude GL sake kunnawa (Mac OS X)
  • Bude GL ES2 sake kunnawa (Android)
  • Ɗaukar saurin lokaci (Mac OS X)
  • sake kunnawa SDL: MS_SDL_OUT
  • Fitowar hoto a tsaye: MS_STATIC_IMAGE
  • Bidiyo Don Linux (V4L) kama (Linux): MS_V4L
  • Bidiyo Don Linux 2 (V4L2) kama (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) kama (Windows)
  • Video4windows (DirectShow) kama (Windows CE)
  • Bidiyo Don Windows (vfw) kama (Windows)
  • sake kunnawa XV (Linux)

Rubutun bidiyo/dekodi

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Dusar ƙanƙara: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (dikodi kawai): MS_H264_DEC
  • Theora: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

sarrafa bidiyo

  • jpeg hoto
  • Mai canza tsarin Pixel: MS_PIX_CONV
  • Resizer
  • Wasu tacewa
  • Musayar tubalan bayanai tsakanin zaren: MS_ITC_SOURCE, MS_ITC_SINK
  • Tattara tubalan bayanai daga abubuwa da yawa zuwa fitarwa guda: MS_JOIN
  • RTP karba/ watsa: MS_RTP_SEND, MS_RTP_RECV
  • Ana kwafi bayanan shigar da bayanai zuwa abubuwa da yawa: MS_TEE
  • An ƙare lodi: MS_VOID_SINK
  • Tushen Shiru: MS_VOID_SOURCE

Plugins

Masu tace sauti

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

    Bidiyo tace

  • H.264 mai rikodin software
  • H.264 V4L2 na'ura mai kara kuzari/dikodi

Bayan ɗan taƙaitaccen bayanin tacewa, ana nuna sunan nau'in, wanda ake amfani dashi lokacin ƙirƙirar sabon misali na wannan tacewa. A cikin abin da ke gaba, za mu koma ga wannan jeri.

Shigarwa a ƙarƙashin Linux Ubuntu

Yanzu za mu shigar da kafofin watsa labarai streamer a kan kwamfutar kuma mu gina aikace-aikacen mu na farko da shi.

Shigar da Mediastremer2 akan kwamfuta ko injin kama-da-wane da ke gudana Ubuntu baya buƙatar kowane ƙwarewa na musamman. Anan da ƙasa, alamar "$" za ta nuna alamar harsashi don shigar da umarni. Wadancan. idan a cikin jeri ka ga wannan alamar a farkon layin, to wannan shine layin da aka nuna ana aiwatar da umarni a cikin tashar.

Ana ɗauka cewa yayin matakan da ke cikin wannan labarin, kwamfutarka tana da damar yin amfani da Intanet.

Shigar da kunshin libmediastremer-dev

Kaddamar da tashar kuma buga umarni:

$ sudo apt-get update

Za a tambaye ku kalmar sirri don yin canje-canje, shigar da shi kuma mai sarrafa kunshin zai sabunta bayanansa. Bayan haka, kuna buƙatar gudu:

$ sudo apt-get install libmediastreamer-dev

Za a sauke da shigar da fakitin abubuwan dogaro da suka wajaba da ɗakin karatu na mai rafi da kanta.

Jimlar girman fakitin bashin abin dogaro da aka zazzage zai zama kusan 35 MB. Ana iya samun cikakkun bayanai game da kunshin da aka shigar tare da umarnin:

$ dpkg -s libmediastreamer-dev

Misalin amsa:

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/

Shigar da kayan aikin haɓakawa

Shigar da mai tarawa C da kayan aikin sa:

$ sudo apt-get install gcc

Muna duba sakamakon ta neman sigar mai tarawa:

$ gcc --version

Amsar yakamata ta kasance kamar haka:

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.

Gina da Gudanar da Aikace-aikacen gwaji

Muna ƙirƙira a ciki home babban fayil don ayyukan koyarwa, bari mu kira shi mstutorial:

$ mkdir ~/mstutorial

Yi amfani da editan rubutu da kuka fi so kuma ƙirƙirar fayil ɗin shirin C da ake kira mstest.c tare da abun ciki mai zuwa:

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

Yana fara fitar da kafofin watsa labarai streamer, buga gaisuwa, da fita.

Ajiye fayil ɗin kuma haɗa aikace-aikacen gwaji tare da umarni:

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

Lura cewa layin

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

an lulluɓe cikin alamomin ambato, waɗanda ke kan madannai a wuri ɗaya da harafin "Ё".

Idan fayil ɗin bai ƙunshi kurakurai ba, to bayan haɗawa fayil zai bayyana a cikin kundin adireshi mstest. Mun fara shirin:

$ ./mstest

Sakamakon zai kasance kamar haka:

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.

A cikin wannan jeri, muna ganin saƙonnin kuskure waɗanda ɗakin karatu na ALSA ke nunawa, ana amfani da shi don sarrafa katin sauti. Masu haɓaka kafofin watsa labaru da kansu sun yi imanin cewa wannan al'ada ce. A wannan yanayin, za mu yarda da su.

Yanzu duk mun shirya don yin aiki tare da mai watsa labarai. Mun shigar da ɗakin karatu na mai rafi, kayan aikin tattarawa, da kuma amfani da aikace-aikacen gwaji, an tabbatar da cewa an daidaita kayan aikin kuma mai watsa shirye-shiryen ya fara nasara cikin nasara.

Na gaba labarin za mu ƙirƙiri aikace-aikacen da za su haɗawa da sarrafa sarrafa siginar sauti a cikin jerin abubuwan tacewa da yawa.

source: www.habr.com