Tshawb xyuas lub cav Mediastreamer2 VoIP. Ntu 1

Cov ntaub ntawv ntawm tsab xov xwm yog muab los ntawm kuv zen channel.

Taw qhia

Kab lus no yog qhov pib ntawm cov kab lus hais txog kev tshaj tawm xov xwm hauv lub sijhawm siv lub tshuab Mediastreamer2. Qhov kev nthuav qhia yuav koom nrog cov txuj ci yam tsawg kawg nkaus ntawm kev ua haujlwm hauv Linux davhlau ya nyob twg thiab programming hauv C lus.

Mediastreamer2 yog lub cav VoIP tom qab qhov nrov qhib software voip xov tooj project. Xov Tooj Cua. Hauv Linphone Mediastreamer2 siv txhua txoj haujlwm ntsig txog suab thiab yees duab. Cov npe ncauj lus kom ntxaws ntawm lub cav nta tuaj yeem pom ntawm nplooj ntawv Mediastreamer no. Qhov chaws code nyob ntawm no: GitLab.

Ntxiv rau hauv cov ntawv nyeem, kom yooj yim, es tsis txhob lo lus Mediastreamer2 peb yuav siv nws cov lus Lavxias: "media streamer".

Cov keeb kwm ntawm nws cov creation tsis meej kiag li, tab sis txiav txim los ntawm nws qhov chaws code, nws yav tas los siv lub tsev qiv ntawv Cib, uas, raws li nws tau, qhia txog kev sib raug zoo nyob deb nrog GStreamer. Nyob rau hauv kev sib piv nrog uas cov xov xwm streamer zoo li sib sib zog nqus. Thawj version ntawm Linphone tau tshwm sim hauv 2001, yog li tam sim no cov xov xwm streamer tshwm sim thiab txhim kho yuav luag 20 xyoo.

Hauv plawv ntawm cov xov xwm streamer yog ib qho qauv hu ua "Data flow" (cov ntaub ntawv ntws). Ib qho piv txwv ntawm xws li ib tug architecture yog qhia nyob rau hauv daim duab hauv qab no.

Tshawb xyuas lub cav Mediastreamer2 VoIP. Ntu 1

Nyob rau hauv no architecture, cov ntaub ntawv ua algorithm yog teev tsis yog los ntawm ib tug program code, tab sis los ntawm ib tug scheme (graph) rau kev sib txuas ua hauj lwm uas yuav tsum tau teem nyob rau hauv tej kev txiav txim. Cov haujlwm no hu ua cov lim dej.

Qhov kev tsim qauv no ua rau nws muaj peev xwm ua tau raws li kev tshaj tawm kev ua haujlwm nyob rau hauv daim ntawv ntawm cov ntxaij lim dej txuas nrog VoIP xov tooj RTP kev ua haujlwm thiab kev sib kis.

Lub peev xwm los ua ke cov ntxaij lim dej rau hauv cov phiaj xwm tsis txaus ntseeg, kev txhim kho yooj yim ntawm cov ntxaij lim dej tshiab, kev siv cov xov xwm streamer ua ib lub tsev qiv ntawv ywj pheej, tso cai rau nws siv rau lwm cov haujlwm. Ntxiv mus, qhov project tuaj yeem ua haujlwm hauv VoIP, vim nws muaj peev xwm ntxiv cov ntxaij lim dej los ntawm nws tus kheej.

Lub tsev qiv ntawv lim muab los ntawm lub neej ntawd yog qhov nplua nuj heev thiab, raws li tau hais tseg, tuaj yeem txuas ntxiv nrog cov lim dej ntawm peb tus kheej tsim. Tab sis ua ntej, cia peb piav qhia txog kev npaj cov lim dej uas tuaj nrog cov xov xwm streamer. Nov yog lawv daim ntawv teev npe:

Suab lim

Suab capture thiab playback

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Android haiv neeg suab (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
  • Cov ntaub ntawv player (raw / wav / pcap files) (Linux): MS_FILE_PLAYER
  • File player (raw/wav files) (Windows): MS_WINSND_READ
  • Sau rau cov ntaub ntawv (wav files) (Linux): MS_FILE_REC
  • Sau rau cov ntaub ntawv (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 Suab (Windows)

Suab 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
  • Speex: MS_SPEEX_ENC, MS_SPEEX_DEC

Kev ua suab nrov

  • Kev hloov pauv channel (mono-> lub tso suab, lub tso suab->mono): MS_CHANNEL_ADAPTER
  • Kev sib tham: MS_CONF
  • DTMF Generator: MS_DTMF_GEN
  • Echo tshem tawm (speex): MS_SPEEX_EC
  • Equalizer: MS_EQUALIZER
  • Mixer: MS_MIXER
  • Packet Loss Compensator (PLC): MS_GENERIC_PLC
  • Resampler: MS_RESAMPLE
  • Lub suab ntes: MS_TONE_DETECTOR
  • Volume tswj thiab teeb liab ntsuas theem: MS_VOLUME

Cov ntxaij lim dej video

Video capture thiab playback

  • Android capture
  • android playback
  • AV Foundation capture (iOS)
  • AV Foundation playback (iOS)
  • DirectShow Capture (Windows)
  • DrawDib playback (Windows)
  • Sab nraud playback - Xa video mus rau txheej saum toj kawg nkaus
  • GLX playback (Linux): MS_GLXVIDEO
  • Mire - Synthetic txav duab: MS_MIRE
  • OpenGL playback (Mac OS X)
  • OpenGL ES2 playback (Android)
  • Quicktime Capture (Mac OS X)
  • SDL playback: MS_SDL_OUT
  • Cov duab tso zis zoo li qub: MS_STATIC_IMAGE
  • Video Rau Linux (V4L) capture (Linux): MS_V4L
  • Video Rau Linux 2 (V4L2) capture (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) ntes (Windows)
  • Video4windows (DirectShow) ntes (Windows CE)
  • Video for Windows (vfw) capture (Windows)
  • XV playback (Linux)

Video encoding / txiav suab

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Snow: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (txiav txim siab nkaus xwb): MS_H264_DEC
  • Theora: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

Kev ua yeeb yaj kiab

  • jpeg swb
  • Pixel hom converter: MS_PIX_CONV
  • Resizer
  • Lwm cov lim
  • Sib pauv cov ntaub ntawv thaiv ntawm cov xov: MS_ITC_SOURCE, MS_ITC_SINK
  • Sau cov blocks ntawm cov ntaub ntawv los ntawm ntau qhov kev nkag mus rau ib qho kev tso zis: MS_JOIN
  • RTP txais / xa tawm: MS_RTP_SEND, MS_RTP_RECV
  • Luam cov ntaub ntawv nkag mus rau ntau qhov kev tso tawm: MS_TEE
  • Terminated load: MS_VOID_SINK
  • Silence Source: MS_VOID_SOURCE

Plugins

Suab lim

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

    Cov ntxaij lim dej video

  • H.264 software encoder
  • H.264 V4L2 kho vajtse nrawm encoder/decoder

Tom qab cov lus piav qhia luv luv ntawm lub lim, lub npe ntawm hom tau pom, uas yog siv thaum tsim ib qho piv txwv tshiab ntawm cov lim no. Hauv dab tsi hauv qab no, peb yuav xa mus rau daim ntawv teev npe no.

Installation nyob rau hauv Linux Ubuntu

Tam sim no peb yuav nruab qhov media streamer ntawm lub computer thiab tsim peb thawj daim ntawv thov nrog nws.

Txhim kho Mediastremer2 ntawm lub computer lossis lub tshuab virtual khiav Ubuntu tsis tas yuav muaj kev txawj tshwj xeeb. Ntawm no thiab hauv qab no, lub cim "$" yuav qhia txog lub plhaub kom nkag mus rau cov lus txib. Cov. yog tias nyob rau hauv cov npe koj pom cov cim no thaum pib ntawm kab, ces qhov no yog kab uas cov lus txib tau pom tias yuav raug tua hauv lub davhlau ya nyob twg.

Nws yog assumed tias thaum lub sij hawm cov kauj ruam nyob rau hauv no tsab xov xwm, koj lub computer muaj kev nkag tau mus rau hauv Internet.

Txhim kho libmediastremer-dev pob

Tua tawm lub davhlau ya nyob twg thiab ntaus cov lus txib:

$ sudo apt-get update

Koj yuav raug nug kom tus password hloov pauv, nkag mus rau nws thiab tus thawj tswj pob yuav hloov kho nws cov ntaub ntawv. Tom qab ntawd, koj yuav tsum khiav:

$ sudo apt-get install libmediastreamer-dev

Cov pob khoom tsim nyog nyob thiab cov tsev qiv ntawv xov xwm streamer nws tus kheej yuav raug rub tawm thiab nruab.

Tag nrho qhov loj ntawm qhov rub tawm dependency deb pob yuav yog kwv yees li 35 MB. Cov ntsiab lus hais txog lub pob teeb tsa tuaj yeem pom nrog cov lus txib:

$ dpkg -s libmediastreamer-dev

Teb piv txwv:

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/

Txhim kho cov cuab yeej txhim kho

Nruab C compiler thiab nws cov cuab yeej nrog:

$ sudo apt-get install gcc

Peb txheeb xyuas qhov tshwm sim los ntawm kev nug cov compiler version:

$ gcc --version

Cov lus teb yuav tsum yog ib yam zoo li no:

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.

Tsim thiab khiav daim ntawv thov mus sib hais

Peb tsim nyob rau hauv tsev folder rau peb tej yaam num qhia, cia hu nws mstutorial:

$ mkdir ~/mstutorial

Siv koj cov ntawv nyeem uas koj nyiam thiab tsim cov ntaub ntawv C hu ua ua mstest.c nrog cov ntsiab lus hauv qab no:

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

Nws pib lub xov xwm streamer, luam tawm kev txais tos, thiab tawm mus.

Txuag cov ntaub ntawv thiab sau cov ntawv xeem nrog cov lus txib:

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

Nco ntsoov tias kab

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

nyob rau hauv cov lus hais, uas nyob rau ntawm cov keyboard nyob rau tib qhov chaw raws li tsab ntawv "Ё".

Yog tias cov ntaub ntawv tsis muaj qhov yuam kev, tom qab muab tso ua ke cov ntaub ntawv yuav tshwm sim hauv phau ntawv teev npe ua mstest. Peb pib qhov program:

$ ./mstest

Cov txiaj ntsig yuav zoo li no:

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.

Hauv daim ntawv teev npe no, peb pom cov lus yuam kev uas ALSA lub tsev qiv ntawv qhia, nws yog siv los tswj daim npav suab. Cov tsim tawm ntawm cov xov xwm streamer lawv tus kheej ntseeg tias qhov no yog qhov qub. Hauv qhov no, peb tsis kam lees nrog lawv.

Tam sim no peb txhua tus tau teeb tsa ua haujlwm nrog cov xov xwm streamer. Peb tau teeb tsa lub tsev qiv ntawv xov xwm streamer, cov cuab yeej muab tso ua ke, thiab siv daim ntawv thov sim, xyuas tias cov cuab yeej raug teeb tsa thiab cov xov xwm streamer pib ua tiav.

Tom ntej no Tshooj peb yuav tsim ib daim ntawv thov uas yuav sib sau ua ke thiab ua haujlwm ntawm lub suab teeb liab hauv cov saw ntawm ntau lub lim.

Tau qhov twg los: www.hab.com