A’ sgrùdadh einnsean Mediastreamer2 VoIP. Pàirt 1

Tha stuth an artaigil air a thoirt bho mo seanail zen.

Ro-ràdh

Is e an artaigil seo toiseach sreath de artaigilean mu ghiollachd mheadhanan fìor-ùine a’ cleachdadh einnsean Mediastreamer2. Bidh an taisbeanadh a’ toirt a-steach na sgilean as lugha a bhith ag obair ann an inneal-crìochnachaidh Linux agus prògramadh ann an cànan C.

Is e Mediastreamer2 an einnsean VoIP air cùl pròiseact fòn voip bathar-bog stòr fosgailte mòr-chòrdte. Fòn-làimhe. Ann an Linphone tha Mediastreamer2 a’ buileachadh a h-uile gnìomh co-cheangailte ri fuaim is bhidio. Tha liosta mionaideach de fheartan einnsean ri fhaicinn air an duilleag Mediastreamer seo. Tha an còd tùsail an seo: GitLab.

Nas fhaide san teacsa, airson goireasachd, an àite an fhacail Mediastreamer2 cleachdaidh sinn an comharradh Ruiseanach aige: “media streamer”.

Chan eil eachdraidh a chruthachadh gu tur soilleir, ach a rèir a chòd stòr, chleachd e an leabharlann roimhe glib, a tha, mar gum biodh, a’ nochdadh dàimh fad às a dh’ fhaodadh a bhith ann GStreamer. An coimeas ri sin tha an streapadair meadhanan a’ coimhead nas aotrom. Nochd a 'chiad dreach de Linphone ann an 2001, agus mar sin aig an àm seo tha sruth nam meadhanan ann agus a' leasachadh airson faisg air 20 bliadhna.

Aig cridhe sruth nam meadhanan tha ailtireachd ris an canar “Sruth dàta” (sruth dàta). Tha eisimpleir de leithid de dh'ailtireachd air a shealltainn anns an fhigear gu h-ìosal.

A’ sgrùdadh einnsean Mediastreamer2 VoIP. Pàirt 1

Anns an ailtireachd seo, tha an algairim giollachd dàta air a shònrachadh chan ann le còd prògram, ach le sgeama (graf) airson gnìomhan ceangail a ghabhas rèiteachadh ann an òrdugh sam bith. Canar sìoltachain ris na gnìomhan sin.

Tha an ailtireachd seo ga dhèanamh comasach comas giollachd mheadhanan a chuir an gnìomh ann an cruth seata de shìoltachain ceangailte ri sgeama giollachd agus tar-chuir trafaic RTP fòn VoIP.

Tha an comas sìoltachain a chur còmhla ann an sgeamaichean neo-riaghailteach, leasachadh sìmplidh sìoltachain ùra, cur an gnìomh sruthan mheadhanan mar leabharlann neo-eisimeileach air leth, a’ leigeil leis a chleachdadh ann am pròiseactan eile. A bharrachd air an sin, faodaidh am pròiseact a bhith ann an raon VoIP, leis gu bheil e comasach sìoltachain a rinn thu fhèin a chuir ris.

Tha an leabharlann sìoltachain a chaidh a thoirt seachad gu bunaiteach gu math beairteach agus, mar a chaidh ainmeachadh roimhe, faodar a leudachadh le sìoltachain den dealbhadh againn fhèin. Ach an toiseach, bheir sinn cunntas air na sìoltachain deiseil a thig an cois sruth nam meadhanan. Seo an liosta aca:

Filters fuaim

Glacadh claisneachd agus ath-chluich

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Fuaim dùthchasach Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Seirbheis Ciudha Fuaim (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Seirbheis Aonad Fuaim (Mac OS X)
  • Ealain (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Cluicheadair faidhle (faidhlichean amh/wav/pcap) (Linux): MS_FILE_PLAYER
  • Cluicheadair faidhle (faidhlichean amh / wav) (Windows): MS_WINSND_READ
  • Sgrìobh gu faidhle (faidhlichean wav) (Linux): MS_FILE_REC
  • Sgrìobh gu faidhle (faidhlichean wav) (Windows): MS_WINSND_WRITE
  • Aonad Fuaim Mac (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
  • Fuaim Windows (Windows)

Còdachadh / còdachadh claisneachd

  • G.711 a-law: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-lagh: 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 sreathach: MS_L16_ENC, MS_L16_DEC
  • Sealladh: MS_SPEEX_ENC, MS_SPEEX_DEC

Giullachd fuaim

  • Tionndadh seanail (mono-> stereo, stereo-> mono): MS_CHANNEL_ADAPTER
  • Co-labhairt: MS_CONF
  • Gineadair DTMF: MS_DTMF_GEN
  • Sguir dheth mac-talla (speex): MS_SPEEX_EC
  • Cothromaiche: MS_EQUALIZER
  • Measgadair: MS_MIXER
  • Neach-dìolaidh call pacaid (PLC): MS_GENERIC_PLC
  • Ath-shampall: MS_RESAMPLE
  • Lorgaire tòna: MS_TONE_DETECTOR
  • Smachd tomhas-lìonaidh agus tomhas ìre chomharran: MS_VOLUME

Filters bhidio

Glacadh bhidio agus ath-chluich

  • Android a ghlacadh
  • ath-chluich android
  • Glacadh AV Foundation (iOS)
  • Ath-chluich AV Foundation (iOS)
  • Glacadh DirectShow (Windows)
  • Ath-chluich DrawDib (Windows)
  • Ath-chluich bhon taobh a-muigh - A’ cur bhidio chun t-sreath as àirde
  • Ath-chluich GLX (Linux): MS_GLXVIDEO
  • Mire - Dealbh gluasadach synthetach: MS_MIRE
  • Ath-chluich OpenGL (Mac OS X)
  • Ath-chluich OpenGL ES2 (Android)
  • Glacadh Quicktime (Mac OS X)
  • Ath-chluich SDL: MS_SDL_OUT
  • Toradh ìomhaigh statach: MS_STATIC_IMAGE
  • Glacadh bhidio airson Linux (V4L) (Linux): MS_V4L
  • Glacadh bhidio Airson Linux 2 (V4L2) (Linux): MS_V4L2_CAPTURE
  • Glacadh bhidio4windows (DirectShow) (Windows)
  • Glacadh bhidio4windows (DirectShow) (Windows CE)
  • Glacadh bhidio airson Windows (vfw) (Windows)
  • Ath-chluich XV (Linux)

Còdachadh / còdachadh bhidio

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Sneachda: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (dì-chòdachadh a-mhàin): MS_H264_DEC
  • Teòiridh: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

Giullachd bhidio

  • Dealbh jpeg saor an asgaidh
  • Tionndadh cruth picteil: MS_PIX_CONV
  • Resizer
  • Filters eile
  • Malairt bhlocaichean dàta eadar snàithleanan: MS_ITC_SOURCE, MS_ITC_SINK
  • A’ cruinneachadh bhlocaichean dàta bho ioma-chur a-steach gu aon toradh: MS_JOIN
  • Faigh / tar-chuir RTP: MS_RTP_SEND, MS_RTP_RECV
  • A’ dèanamh lethbhreac de dhàta cuir a-steach gu iomadh toradh: MS_TEE
  • Luchd crìochnaichte: MS_VOID_SINK
  • Stòr Sàmhchair: MS_VOID_SOURCE

Плагины

Filters fuaim

  • AMR-NB encoder / decoder
  • G.729 còdaiche/dì-chòdachadh
  • iLBC encoder / decoder
  • SILK encoder / decoder

    Filters bhidio

  • H.264 bathar-bog encoder
  • Encoder/dì-chòdaidh luathaichte bathar-cruaidh H.264 V4L2

Às deidh tuairisgeul goirid air a’ chriathrag, tha ainm an t-seòrsa air a shealltainn, a thèid a chleachdadh nuair a chruthaicheas tu eisimpleir ùr den chriathrag seo. Anns na leanas, bheir sinn iomradh air an liosta seo.

Stàladh fo Linux Ubuntu

A-nis stàlaidhidh sinn an streapadair mheadhanan air a’ choimpiutair agus togaidh sinn a’ chiad iarrtas againn leis.

Chan fheum stàladh Mediastremer2 air coimpiutair no inneal mas-fhìor a’ ruith Ubuntu sgilean sònraichte sam bith. An-seo agus gu h-ìosal, comharraichidh an samhla "$" an t-slige gu luath airson òrdughan a chuir a-steach. An fheadhainn sin. ma chì thu an samhla seo san liostadh aig toiseach na loidhne, is e seo an loidhne anns a bheilear a’ sealltainn òrdughan a bhith air an cur an gnìomh anns a’ chrìoch.

Thathas den bheachd gu bheil cothrom aig do choimpiutair air an eadar-lìn tro na ceumannan san artaigil seo.

A’ stàladh a’ phacaid libmediastremer-dev

Cuir air bhog an inneal-crìochnachaidh agus sgrìobh an àithne:

$ sudo apt-get update

Thèid iarraidh ort facal-faire airson atharraichean a dhèanamh, cuir a-steach e agus bheir manaidsear a’ phacaid ùrachadh air na stòran-dàta aige. Às deidh sin, feumaidh tu ruith:

$ sudo apt-get install libmediastreamer-dev

Thèid na pasganan eisimeileachd riatanach agus an leabharlann sruthadh mheadhanan fhèin a luchdachadh sìos agus a chuir a-steach gu fèin-ghluasadach.

Bidh meud iomlan nam pasgan deb eisimeileachd a chaidh a luchdachadh sìos timcheall air 35 MB. Gheibhear mion-fhiosrachadh mun phacaid stàlaichte leis an àithne:

$ dpkg -s libmediastreamer-dev

Freagair eisimpleir:

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/

Stàladh innealan leasachaidh

Stàlaich an compiler C agus na h-innealan a tha na chois:

$ sudo apt-get install gcc

Nì sinn sgrùdadh air an toradh le bhith ag iarraidh an dreach compiler:

$ gcc --version

Bu chòir don fhreagairt a bhith rudeigin mar seo:

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.

A 'togail agus a' ruith an tagraidh deuchainn

Bidh sinn a 'cruthachadh a-steach dachaigh pasgan airson na pròiseactan oideachaidh againn, canaidh sinn e tuigseach:

$ mkdir ~/mstutorial

Cleachd an deasaiche teacsa as fheàrr leat agus cruthaich faidhle prògram C ris an canar mstest.c leis an t-susbaint a leanas:

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

Bidh e a’ tòiseachadh sruth nam meadhanan, a’ clò-bhualadh fàilte, agus a’ dol a-mach.

Sàbhail am faidhle agus cuir ri chèile an tagradh deuchainn leis an àithne:

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

Thoir an aire gu bheil an loidhne

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

dùinte ann an comharran-luirg, a tha suidhichte air a 'mheur-chlàr san aon àite ris an litir "Ё".

Mura h-eil mearachdan anns an fhaidhle, nochdaidh faidhle san eòlaire às deidh a chuir ri chèile mstest. Tòisichidh sinn am prògram:

$ ./mstest

Bidh an toradh mar seo:

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.

Anns an liostadh seo, chì sinn na teachdaireachdan mearachd a tha leabharlann ALSA a’ taisbeanadh, tha e air a chleachdadh gus smachd a chumail air a’ chairt-fuaim. Tha luchd-leasachaidh sruth nam meadhanan iad fhèin den bheachd gu bheil seo àbhaisteach. Anns a 'chùis seo, tha sinn gu deònach ag aontachadh riutha.

A-nis tha sinn uile deiseil airson a bhith ag obair leis na meadhanan streamer. Tha sinn air leabharlann streamer nam meadhanan a chuir a-steach, an inneal cruinneachaidh, agus a’ cleachdadh tagradh deuchainn, air dearbhadh gu bheil na h-innealan air an rèiteachadh agus gu bheil sruth nam meadhanan a’ tòiseachadh gu soirbheachail.

Air adhart artaigil cruthaichidh sinn tagradh a chruinnicheas agus a ruitheas giollachd comharra claisneachd ann an sreath de ghrunn shìoltachain.

Source: www.habr.com