Kuongorora iyo Mediastreamer2 VoIP injini. Chikamu 1

Zvinyorwa zvechinyorwa zvakatorwa kubva kwangu zen channel.

Nhanganyaya

Ichi chinyorwa ndiko kutanga kwenhevedzano yezvinyorwa nezve real-time media processing uchishandisa iyo Mediastreamer2 injini. Mharidzo ichabatanidza hunyanzvi hunyanzvi hwekushanda muLinux terminal uye chirongwa mumutauro weC.

Mediastreamer2 ndiyo injini yeVoIP kuseri kweiyo yakakurumbira yakavhurika sosi software voIP foni chirongwa. foni. MuLinphone Mediastreamer2 inoshandisa ese mabasa ane chekuita nekurira uye vhidhiyo. Rondedzero yakadzama yeinjini maficha inogona kuoneka pane ino Mediastreamer peji. Iyo source code iri pano: GitLab.

Kuwedzera mune zvinyorwa, kuti zvive nyore, panzvimbo yezwi Mediastreamer2 tichashandisa chinyorwa chayo cheRussia: "media streamer".

Nhoroondo yekusikwa kwayo haina kujeka zvachose, asi tichitarisa nekodhesi yayo, yakamboshandisa raibhurari glib, iyo, sokunge zvakadaro, inoratidza hukama hunogona kuitika huri kure GStreamer. Mukuenzanisa iyo iyo media streamer inotaridzika yakareruka. Iyo yekutanga vhezheni yeLinphone yakaonekwa muna 2001, saka parizvino media media iripo uye inokura kweanoda kusvika makore makumi maviri.

Pamwoyo wemedia streamer chivakwa chinonzi "Data flow" (data flow). Muenzaniso wezvivakwa zvakadaro unoratidzwa mumufananidzo uri pasi apa.

Kuongorora iyo Mediastreamer2 VoIP injini. Chikamu 1

Muchivakwa ichi, data processing algorithm inotsanangurwa kwete nekodhi yepurogiramu, asi nechirongwa (girafu) chekubatanidza mabasa anogona kurongwa mune chero hurongwa. Mabasa aya anonzi mafirita.

Ichi chivakwa chinoita kuti zvikwanise kuita iyo midhiya yekugadzirisa mashandiro muchimiro cheseti yemafirita akabatana neVoIP foni RTP traffic process uye transmission scheme.

Iko kugona kusanganisa mafirita muzvirongwa zvekupokana, kusimudzira kuri nyore kwemafirita matsva, kuitiswa kweiyo media streamer seyakazvimiririra raibhurari yakaparadzana, bvumira kuti ishandiswe mune mamwe mapurojekiti. Uyezve, chirongwa ichi chinogona kunge chiri mumunda weVoIP, sezvo zvichikwanisika kuwedzera mafirita akagadzirwa wega.

Raibhurari yekusefa inopihwa nekusarudzika yakapfuma uye, sezvatotaurwa, inogona kuwedzerwa nemafirita edhizaini yedu. Asi chekutanga, ngatitsanangure mafirita akagadzirira anouya nemedia streamer. Heino rondedzero yavo:

Masefa enzwi

Audio kutora uye kutamba

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Android native ruzha (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Audio Queue Service (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Audio Unit Service (Mac OS X)
  • Arts (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Faira mutambi (mbishi/wav/pcap mafaera) (Linux): MS_FILE_PLAYER
  • Faira inoridza (mbishi/wav mafaera) (Windows): MS_WINSND_READ
  • Nyora kufaira (wav mafaira) (Linux): MS_FILE_REC
  • Nyora kufaira (wav mafaira) (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-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
  • Kutaura: MS_SPEEX_ENC, MS_SPEEX_DEC

Sound processing

  • Kushandurwa kwechiteshi (mono->stereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Musangano: MS_CONF
  • DTMF jenareta: MS_DTMF_GEN
  • Echo kukanzura (kutaura): MS_SPEEX_EC
  • Kuenzana: MS_EQUALIZER
  • Musanganisi: MS_MIXER
  • Packet Loss Compensator (PLC): MS_GENERIC_PLC
  • Mutevedzeri: MS_RESAMPLE
  • Toni detector: MS_TONE_DETECTOR
  • Kudzora vhoriyamu uye kuyerwa kwechiyero chechiratidzo: MS_VOLUME

Vhidhiyo mafirita

Vhidhiyo kutora uye kutamba zvakare

  • android kutora
  • android playback
  • AV Foundation kutora (iOS)
  • AV Foundation yekutamba (iOS)
  • DirectShow Capture (Windows)
  • DrawDib playback (Windows)
  • Kutamba kwekunze - Kutumira vhidhiyo kune yepamusoro layer
  • GLX yekutamba (Linux): MS_GLXVIDEO
  • Mire - Synthetic inofamba mufananidzo: MS_MIRE
  • OpenGL playback (Mac OS X)
  • OpenGL ES2 kutamba (Android)
  • Quicktime Capture (Mac OS X)
  • Kutamba kweSDL: MS_SDL_OUT
  • Mufananidzo wakamira wakabuda: MS_STATIC_IMAGE
  • Vhidhiyo YeLinux (V4L) tora (Linux): MS_V4L
  • Vhidhiyo YeLinux 2 (V4L2) tora (Linux): MS_V4L2_CAPTURE
  • Vhidhiyo4windows (DirectShow) kutora (Windows)
  • Vhidhiyo4windows (DirectShow) kutora (Windows CE)
  • Vhidhiyo YeWindows (vfw) tora (Windows)
  • XV kutamba (Linux)

Vhidhiyo encoding/decoding

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

Video processing

  • jpeg mufananidzo
  • Pixel fomati inoshandura: MS_PIX_CONV
  • Resizer
  • Mamwe mafirita
  • Kuchinjana kwe data blocks pakati pe threads: MS_ITC_SOURCE, MS_ITC_SINK
  • Kuunganidza mabhuraki edata kubva kune akawanda mapopu kune imwechete inobuda: MS_JOIN
  • RTP gamuchira/kutumira: MS_RTP_SEND, MS_RTP_RECV
  • Kukopa data rekuisa kune akawanda akabuda: MS_TEE
  • Kuremerwa mutoro: MS_VOID_SINK
  • Kunyarara Kwakabva: MS_VOID_SOURCE

Mapulagi

Masefa enzwi

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

    Vhidhiyo mafirita

  • H.264 software encoder
  • H.264 V4L2 hardware yakamhanyisa encoder/decoder

Mushure mekutsanangurwa kupfupi kwesefa, zita rerudzi rinoratidzwa, rinoshandiswa pakugadzira chiitiko chitsva chesefa iyi. Mune zvinotevera, isu tichanongedzera kune iyi runyorwa.

Kuiswa pasi peLinux Ubuntu

Iye zvino tichaisa iyo media streamer pakombuta uye tovaka yedu yekutanga application nayo.

Kuisa Mediastremer2 pakombuta kana muchina chaiwo unoshanda Ubuntu haudi chero hunyanzvi. Pano uye pazasi, chiratidzo "$" chinoreva iyo shell yekumhanyisa yekupinda mirairo. Avo. kana mune rondedzero ukaona chiratidzo ichi pakutanga kwemutsara, saka uyu ndiwo mutsara umo mirairo inoratidzwa kuti itevedzwe muterminal.

Zvinofungidzirwa kuti panguva yematanho ari muchinyorwa chino, komputa yako inokwanisa kuwana Internet.

Kuisa iyo libmediastremer-dev package

Vhura iyo terminal uye nyora murairo:

$ sudo apt-get update

Iwe uchakumbirwa password kuti uchinje, pinda iyo uye mutariri wepakeji achavandudza dhatabhesi rayo. Pashure paizvozvo, unofanira kumhanya:

$ sudo apt-get install libmediastreamer-dev

Iyo inodiwa yekutsamira mapakeji uye iyo media media streamer raibhurari pachayo inozotorwa otomatiki nekuiswa.

Saizi yese yeakadhawunirodha dependency deb mapakeji anokwana 35 MB. Ruzivo rwepakeji yakaiswa inogona kuwanikwa nemurairo:

$ dpkg -s libmediastreamer-dev

Mhinduro muenzaniso:

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/

Kuisa maturusi ebudiriro

Isa iyo C compiler uye maturusi ayo anoperekedza:

$ sudo apt-get install gcc

Isu tinotarisa mhedzisiro nekubvunza iyo compiler vhezheni:

$ gcc --version

Mhinduro yacho inofanira kuva seizvi:

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.

Kugadzira uye kumhanyisa Chikumbiro cheKuedza

Isu tinogadzira mukati musha folda yemapurojekiti edu edzidziso, ngatiidaidze mstutorial:

$ mkdir ~/mstutorial

Shandisa yako yaunofarira mavara edhita uye gadzira C chirongwa faira inonzi mstest.c nezvinotevera zvirimo:

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

Inotangisa media streamer, inodhinda kwaziso, uye kubuda.

Sevha iyo faira uye nyora bvunzo application nemurairo:

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

Cherechedza kuti mutsetse

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

akavharirwa mune quotation mamaki, ayo ari pane kiibhodhi munzvimbo imwechete netsamba "Ё".

Kana iyo faira isina zvikanganiso, ipapo mushure mekubatanidza faira ichaonekwa mudhairekitori mstest. Tinotanga purogiramu:

$ ./mstest

Mhedzisiro ichava seizvi:

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.

Muchirongwa ichi, tinoona mameseji ekukanganisa anoratidzwa neraibhurari yeALSA, inoshandiswa kudzora kadhi rekurira. Vagadziri vemedia streamer ivo pachavo vanotenda kuti izvi zvakajairika. Panyaya iyi, tinobvumirana navo tichizengurira.

Iye zvino isu tese tagadzirira kushanda nemedia streamer. Isu takaisa raibhurari yemedia streamer, chishandiso chekubatanidza, uye nekushandisa muyedzo application, takaona kuti maturusi akagadziridzwa uye media media inotangisa zvinobudirira.

Next chinyorwa isu tichagadzira application iyo inoungana uye inomhanyisa kugadziridzwa kwechiratidzo chekuteerera muketani yemafirita akati wandei.

Source: www.habr.com