Su'esu'e le afi Mediastreamer2 VoIP. Vaega 1

O mea o le tusiga e maua mai i laʻu zen alavai.

Faatomuaga

O lenei tusiga o le amataga lea o se faasologa o tala e uiga i le faʻagaioiina o ala o faasalalauga i le taimi moni e faʻaaoga ai le Mediastreamer2 engine. I le taimi o le faʻaaliga, o le a faʻaaogaina le poto masani i le galue i le Linux terminal ma polokalame i le gagana C.

Mediastreamer2 o le afi VoIP i tua o le lauiloa tatala-punavai voip polokalama polokalama polokalama telefoni. Linphone Mediastreamer2 faʻatinoina galuega uma e fesoʻotaʻi ma leo ma vitio. E mafai ona va'aia se lisi au'ili'ili o gafatia afi i luga ole itulau lea Mediastreamer. O le source code o loʻo i ai iinei: GitLab.

I le faʻaopoopoga i le tusitusiga, mo le faʻaogaina, nai lo le upu Mediastreamer2 o le a matou faʻaogaina lona faʻamatalaga Rusia: "mediastreamer".

O le tala faasolopito o lona foafoaga e leʻo manino atoatoa, ae faʻamasinoina i lona faʻailoga puna, na faʻaaogaina muamua le faletusi Fiafia, lea e foliga mai e faaataata mai ia i tatou i se sootaga mamao e mafai ma GStreamer. I le faʻatusatusaga, o le faʻasalalauga faʻasalalau e foliga sili atu le mama. O le lomiga muamua o Linphone na fa'aalia i le 2001, o lea la i le taimi nei o lo'o i ai le fa'asalalauga fa'asalalau ma o lo'o atina'e mo le toeitiiti 20 tausaga.

O le faʻasalalauga faʻasalalau e faʻavae i luga o se fausaga e taʻua o le "Data flow". O se faʻataʻitaʻiga o sea fausaga o loʻo faʻaalia i le ata o loʻo i lalo.

Su'esu'e le afi Mediastreamer2 VoIP. Vaega 1

I totonu o lenei fausaga, o le faʻasologa o faʻamaumauga algorithm e le o faʻamaonia e le polokalame code, ae o se ata (kalafa) o fesoʻotaʻiga galuega e mafai ona faʻatulagaina i soʻo se faasologa. O nei galuega e ta'ua o filiga.

O lenei fausaga e mafai ai ona faʻatinoina galuega faʻatautaia o ala o faasalalauga i le tulaga o se seti o filiga e fesoʻotaʻi i totonu o se matagaluega mo le faʻaogaina ma le felauaiga o fefaʻatauaiga RTP o se telefoni VoIP.

O le mafai ona faʻafesoʻotaʻi faʻamaʻi i totonu o fuafuaga faʻapitoa, atinaʻe faigofie o filiga fou, ma le faʻatinoina o le faʻasalalauga faʻasalalau o se faletusi tutoʻatasi tutoʻatasi e mafai ai ona faʻaaogaina i isi galuega. E le gata i lea, o le poloketi e mafai ona i ai i le fanua o le VoIP, talu ai e mafai ona faʻaopoopo ni filiga na faia e oe lava ia.

O le faletusi fa'amama e fai si mauoa ma, e pei ona ta'ua muamua, e mafai ona fa'alauteleina i filiga o la tatou lava mamanu. Ae muamua, o le a matou faʻamatalaina filiga ua saunia e sau ma le faʻasalalauga faʻasalalau. O la latou lisi lenei:

Filifiliga leo

Pu'e leo ma toe ta'alo

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • leo fa'aletino Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Au'aunaga Tuli Leo (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Au'aunaga Iunite leo (Mac OS X)
  • Arts (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Fai faila (faila/wav/pcap faila) (Linux): MS_FILE_PLAYER
  • Fai faila (faila/wav faila) (Windows): MS_WINSND_READ
  • Tusi i faila (wav faila) (Linux): MS_FILE_REC
  • Tusi i faila (wav faila) (Windows): MS_WINSND_WRITE
  • Vaega leo Mac (Mac OS X)
  • MME (Pupuni)
  • OSS (Linux): MS_OSS_WRITE, MS_OSS_READ
  • PortAudio (Mac OS X)
  • PulseAudio (Linux): MS_PULSE_WRITE, MS_PULSE_READ
  • Pupuni Leo (Pupuni)

Fa'ailoga leo/fa'ailoga

  • G.711 a-tulafono: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-tulafono: 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 laina: MS_L16_ENC, MS_L16_DEC
  • Tautala: MS_SPEEX_ENC, MS_SPEEX_DEC

Fa'alogo leo

  • Fa'aliliuga ala (mono-> stereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Fonotaga: MS_CONF
  • DTMF generator: MS_DTMF_GEN
  • Faalēaogā leo (speex): MS_SPEEX_EC
  • Fa'atusa: MS_EQUALIZER
  • Faafefiloi: MS_MIXER
  • Fa'ato'a leiloa o afifi (PLC): MS_GENERIC_PLC
  • Toe fa'atusa: MS_RESAMPLE
  • Su'e leo: MS_TONE_DETECTOR
  • Pulea le leo ma le fuaina o fa'ailoga: MS_VOLUME

Filifiliga vitio

Pu'e vitiō ma toe ta'alo

  • Pu'e Android
  • Ta'aloga Android
  • AV Foundation Pu'e (iOS)
  • Toe ta'alo le AV Foundation (iOS)
  • DirectShow pueina (Windows)
  • Toe ta'alo DrawDib (Pupuni)
  • Toe fa'afofoga i fafo - Lafo le vitio i le tulaga maualuga
  • Toe ta'alo GLX (Linux): MS_GLXVIDEO
  • Mire - Ata fa'agaioiina: MS_MIRE
  • Toe ta'alo OpenGL (Mac OS X)
  • Toe ta'alo OpenGL ES2 (Android)
  • Pu'e taimi vave (Mac OS X)
  • SDL toe ta'alo: MS_SDL_OUT
  • Fa'atosina o ata fa'aletonu: MS_STATIC_IMAGE
  • Vitio Mo Linux (V4L) pu'eina (Linux): MS_V4L
  • Vitio Mo Linux 2 (V4L2) pu'eina (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) pu'eina (Windows)
  • Video4windows (DirectShow) pu'eina (Windows CE)
  • Vitio Mo Pupuni (vfw) pu'eina (Pupuni)
  • Toe ta'alo XV (Linux)

Vitio encoding/decoding

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Kiona: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (na'o le decoder): MS_H264_DEC
  • Theora: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

Fa'agaioiga vitiō

  • JPEG ata
  • Fa'aliliuga fa'avasega Pixel: MS_PIX_CONV
  • Resizer
  • Isi filiga
  • Fetufaaiga o poloka faʻamatalaga i le va o filo: MS_ITC_SOURCE, MS_ITC_SINK
  • Aoina o poloka fa'amaumauga mai le tele o mea e fa'aoga i le tasi galuega: MS_JOIN
  • Talia/fa'asalalau RTP: MS_RTP_SEND, MS_RTP_RECV
  • Kopiina o fa'amatalaga fa'aoga i le tele o galuega faatino: MS_TEE
  • Avega Faafetaui: MS_VOID_SINK
  • Fa'afilemu puna: MS_VOID_SOURCE

Plugins

Filifiliga leo

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

    Filifiliga vitio

  • H.264 software encoder
  • H.264 V4L2 encoder/decoder ma meafaigaluega fa'avavevave

A maeʻa se faʻamatalaga puupuu o le faamama, e faʻaalia le igoa ituaiga, lea e faʻaaogaina pe a fatuina se faʻataʻitaʻiga fou o lenei faamama. I le talanoaga o loʻo mulimuli mai o le a tatou vaʻai i lenei lisi.

Faʻapipiʻi i lalo ole Linux Ubuntu

O lenei o le a matou faʻapipiʻi le ala o faasalalauga i luga o lau komepiuta ma fausia la matou talosaga muamua i ai.

O le faʻapipiʻiina o le Mediastremer2 i luga o se komepiuta poʻo se masini komepiuta e faʻaogaina le Ubuntu e le manaʻomia ni tomai faʻapitoa. O iinei ma lalo ifo, o le faailoga "$" o le a faʻaalia ai le faʻamalosi o le atigi mo le ulufale atu i tulafono. O na. afai i le lisi e te vaʻai ai i lenei faʻailoga i le amataga o se laina, o lona uiga o se laina lea e faʻaalia ai poloaiga e faʻatino i le laina.

E fa'apea a'o fa'atino laasaga o lo'o fa'amatalaina i lenei tusiga, e maua e lau komepiuta le Initaneti.

Faʻapipiʻi le pusa libmediastromer-dev

Tatala le laina ma lolomi le poloaiga:

$ sudo apt-get update

O le a fesiligia oe mo se faʻaupuga e fai ai suiga; ulufale i ai ma o le a faʻafouina e le pule o pusa ana faʻamaumauga. A maeʻa lenei mea e tatau ona e faia:

$ sudo apt-get install libmediastreamer-dev

Ole a otometi lava ona la'u mai ma fa'apipi'i pusa fa'alagolago e mana'omia ma le faletusi streamer lava ia.

Ole aofa'iga ole la'uina o afifi fa'alagolago ile aitalafu ole a tusa ole 35 MB. O faʻamatalaga e uiga i le afifi faʻapipiʻi e mafai ona maua i le poloaiga:

$ dpkg -s libmediastreamer-dev

Fa'ata'ita'iga tali:

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/

Fa'apipi'i Meafaigaluega Atina'e

Faʻapipiʻi le C compiler ma ana meafaigaluega faʻatasi:

$ sudo apt-get install gcc

Matou te siakiina le taunuʻuga e ala i le talosagaina o le faʻapipiʻi faʻasologa:

$ gcc --version

O le tali e tatau ona pei o lenei:

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.

Fausia ma fa'agaoioia se talosaga fa'ata'ita'i

Matou te fatuina i totonu aiga faila mo a tatou galuega faʻaaoaoga, seʻi taʻua mstutorial:

$ mkdir ~/mstutorial

Fa'aoga lau fa'atonu tusitusiga e sili ona e fiafia iai ma fai se faila polokalame C e ta'ua mstest.c fa'atasi ai ma mea nei:

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

E amatalia le ala o faasalalauga, lolomi se faafeiloaiga, ma faauma le faatinoga.

Faasaoina le faila ma tuufaatasia le suʻega suʻega ma le poloaiga:

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

Faamolemole ia matau o le laina

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

o loʻo faʻapipiʻiina i faʻailoga o upusii, o loʻo tuʻuina i luga o le piano i le nofoaga e tasi ma le mataitusi "Y".

Afai o le faila e le o iai ni mea sese, ona maeʻa lea ona tuʻufaʻatasia le faila o le a faʻaalia i totonu o le lisi mstest. Tatou fa'agasolo le polokalame:

$ ./mstest

O le taunuuga o le a pei o lenei:

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.

I lenei lisi matou te vaʻai ai i faʻamatalaga sese na faia e le faletusi ALSA, lea e faʻaaogaina e pulea ai le kata leo. O le au atiaʻe o le aufaasālalau streamer latou te talitonu o se mea masani lea. I lenei tulaga, e mautinoa lava tatou te ioe faatasi ma i latou.

O lea la ua matou sauni e galulue ma le fa'asalalauga fa'asalalau. Na matou fa'apipi'iina le faletusi o ala o fa'asalalauga, le meafaigaluega tu'ufa'atasia, ma fa'aoga se fa'ata'ita'iga talosaga e fa'amaonia ai na fa'atulaga meafaigaluega ma amata manuia le fa'asalalauga.

Sosoo ai tusiga o le a matou fatuina se talosaga e aoina ma faʻatautaia le faʻaogaina o faailoilo leo i se filifili o le tele o filiga.

puna: www.habr.com