Te tirotiro i te miihini Mediastreamer2 VoIP. Wāhanga 1

Ko nga rauemi o te tuhinga i tangohia mai i taku zen teihana.

Whakataki

Ko tenei tuhinga te timatanga o te raupapa tuhinga e pa ana ki te tukatuka pāpāho-a-waa ma te whakamahi i te miihini Mediastreamer2. Ko te whakaaturanga ka uru ki nga pukenga iti rawa o te mahi i roto i te tauranga Linux me te hotaka i roto i te reo C.

Ko Mediastreamer2 te miihini VoIP kei muri i te kaupapa waea rongonui rongonui-tuwhera-puna waea voip. waea. I roto i te Linphone Mediastreamer2 ka whakatinana i nga mahi katoa e pa ana ki te tangi me te ataata. Ka kitea he rarangi taipitopito o nga ahuatanga miihini i tenei wharangi Mediastreamer. Kei konei te waehere puna: GitLab.

I tua atu i roto i te tuhinga, mo te pai, hei utu mo te kupu Mediastreamer2 ka whakamahia e matou tana tohu Russian: "media streamer".

Ko te hitori o tona hanganga kaore i te tino marama, engari ma te whakatau i tana waehere puna, i whakamahia e ia te whare pukapuka i mua Tere, e tohu ana mo te hononga tawhiti pea me GStreamer. Ina whakaritea ki te ahua o te riipene pāpāho he maamaa ake. I puta mai te putanga tuatahi o Linphone i te tau 2001, no reira i tenei wa kei te noho tonu te riipene pāpāho me te whanake mo te tata ki te 20 tau.

Kei te ngakau o te roma pāpāho he hoahoanga e kiia nei ko "Rere Raraunga" (rerenga raraunga). Ko tetahi tauira o taua hoahoanga e whakaatuhia ana i te ahua i raro nei.

Te tirotiro i te miihini Mediastreamer2 VoIP. Wāhanga 1

I roto i tenei hoahoanga, ko te algorithm tukatuka raraunga kaore i tohua e te waehere papatono, engari na te kaupapa (kauwhata) mo te hono i nga mahi ka taea te whakarite i tetahi ota. Ko enei mahi ka kiia he whiriwhiringa.

Ko tenei hoahoanga ka taea ki te whakatinana i te mahi tukatuka pāpāho i roto i te ahua o te huinga whiriwhiringa e hono ana ki te waea VoIP RTP tukatuka waka me te kaupapa tuku.

Ko te kaha ki te whakakotahi i nga whiriwhiringa ki roto i nga kaupapa herekore, te whanaketanga ngawari o nga whiriwhiringa hou, te whakatinanatanga o te riipene pāpāho hei whare pukapuka motuhake motuhake, ka taea te whakamahi ki etahi atu kaupapa. Ano, ka taea te kaupapa i roto i te mara VoIP, na te mea ka taea te taapiri i nga whiriwhiringa i mahia e koe ake.

He tino whai rawa te whare pukapuka tātari i tukuna mai e te taunoa, a, kua whakahuahia ake nei, ka taea te whakaroa atu me nga whiriwhiringa o ta tatou ake hoahoa. Engari ko te tuatahi, me whakamaarama i nga whiriwhiringa kua rite ka tae mai me te riipene pāpāho. Anei ta ratou rarangi ingoa:

Nga whiriwhiringa oro

Te hopu ororongo me te purei ano

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Oro taketake Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Ratonga Tūtira Ororongo (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Ratonga Wae Ororongo (Mac OS X)
  • Toi (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • Oro Tika (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Kaipāho kōnae (kōnae raw/wav/pcap) (Linux): MS_FILE_PLAYER
  • Pūpāpāho kōnae (kōnae raw/wav) (Windows): MS_WINSND_READ
  • Tuhia ki te konae (wav files) (Linux): MS_FILE_REC
  • Tuhia ki te konae (wav files) (Windows): MS_WINSND_WRITE
  • Waehe Ororongo 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
  • Windows Sound (Windows)

Ororongo whakawaehere/ wetewaewae

  • G.711 a-ture: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-ture: 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 Raina: MS_L16_ENC, MS_L16_DEC
  • Speex: MS_SPEEX_ENC, MS_SPEEX_DEC

Tukatuka tangi

  • Hurihuri hongere (mono->tereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Huihuinga: MS_CONF
  • Kaihanga DTMF: MS_DTMF_GEN
  • Whakakoretanga oro (speex): MS_SPEEX_EC
  • Kaiwhakarite: MS_EQUALIZER
  • Whakaranu: MS_MIXER
  • Ka utua te Packet Loss (PLC): MS_GENERIC_PLC
  • Kaitauira: MS_RESAMPLE
  • Pūtirotiro oro: MS_TONE_DETECTOR
  • Whakahaere rōrahi me te ine taumata tohu: MS_VOLUME

Nga whiriwhiringa ataata

Te hopu ataata me te purei ano

  • hopu phi
  • purei phi
  • Hopu AV Foundation (iOS)
  • Whakahoki AV Foundation (iOS)
  • Hopu DirectShow (Windows)
  • Te purei hoki DrawDib (Windows)
  • Te purei o waho - Te tuku ataata ki te paparanga runga
  • GLX purei (Linux): MS_GLXVIDEO
  • Mire - Pikitia neke hangahanga: MS_MIRE
  • Whakahoki OpenGL (Mac OS X)
  • OpenGL ES2 purei hoki (Android)
  • Hopu Wa Tere (Mac OS X)
  • Te purei SDL: MS_SDL_OUT
  • Putanga atahanga pateko: MS_STATIC_IMAGE
  • Ataata Mo Linux (V4L) hopu (Linux): MS_V4L
  • Ataata Mo Linux 2 (V4L2) hopu (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) hopu (Windows)
  • Video4windows (DirectShow) hopu (Windows CE)
  • Ataata mo Windows (vfw) hopu (Windows)
  • Whakahoki XV (Linux)

Whakawaehere / wetewaehere ataata

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

Tukatuka ataata

  • whakaahua whakaahua jpeg
  • Kaitahuri hōputu pika: MS_PIX_CONV
  • Rezer
  • Ētahi atu tātari
  • Te whakawhiti i nga paraka raraunga i waenga i nga miro: MS_ITC_SOURCE, MS_ITC_SINK
  • Te kohikohi poraka raraunga mai i nga whakauru maha ki te putanga kotahi: MS_JOIN
  • RTP whiwhi/tuku: MS_RTP_SEND, MS_RTP_RECV
  • Te tārua raraunga tāuru ki ngā putanga maha: MS_TEE
  • Kua mutu te uta: MS_VOID_SINK
  • Puna Wahangu: MS_VOID_SOURCE

monomai

Nga whiriwhiringa oro

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

    Nga whiriwhiringa ataata

  • H.264 rorohiko encoder
  • H.264 V4L2 pūmārō whakatere whakawaehere/whakawetewaehere

Whai muri i te whakaahuatanga poto mo te tātari, ka whakaatuhia te ingoa o te momo, ka whakamahia i te wa e hanga ana i tetahi tauira hou o tenei tātari. I nga mea e whai ake nei, ka tirohia e matou tenei rarangi.

Te whakaurunga i raro i te Linux Ubuntu

Inaianei ka whakauruhia e matou te riipene pāpāho ki runga i te rorohiko me te hanga i ta maatau tono tuatahi.

Ko te whakauru i te Mediastremer2 i runga i te rorohiko, i te miihini mariko ranei e whakahaere ana i te Ubuntu kaore e hiahiatia he pukenga motuhake. I konei me raro, ko te tohu "$" ka tohu i te anga wawe mo te whakauru whakahau. Ko era. Mena kei roto i te raarangi ka kite koe i tenei tohu i te timatanga o te raina, koinei te rarangi e whakaatuhia ana nga whakahau kia mahia ki te tauranga.

E kiia ana i nga waahanga o tenei tuhinga, ka uru to rorohiko ki te Ipurangi.

Te whakauru i te kete libmediastremer-dev

Whakarewahia te tauranga ka pato i te whakahau:

$ sudo apt-get update

Ka tonohia koe mo tetahi kupuhipa hei whakarereke, whakauruhia, ka whakahouhia e te kaiwhakahaere o te kete nga papa korero. I muri i tera, me rere koe:

$ sudo apt-get install libmediastreamer-dev

Ko nga kohinga whakawhirinaki e tika ana me te whare pukapuka streamer media ka tangohia aunoa, ka whakauruhia.

Ko te rahi katoa o nga kohinga nama ti'aturi kua tikiakehia he 35 MB. Ka kitea nga korero mo te kete kua whakauruhia ma te whakahau:

$ dpkg -s libmediastreamer-dev

Tauira whakautu:

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/

Te whakauru taputapu whanaketanga

Tāutahia te C compiler me ona taputapu e hono ana:

$ sudo apt-get install gcc

Ka tirohia te hua ma te patai ki te putanga whakahiato:

$ gcc --version

Me penei te whakautu:

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.

Te hanga me te whakahaere i te tono whakamatautau

Ka hanga tatou i roto home kōpaki mo a maatau kaupapa ako, me karanga mstutorial:

$ mkdir ~/mstutorial

Whakamahia to ētita kuputuhi tino pai ka hanga he konae papatono C e kiia nei mstest.c me nga ihirangi e whai ake nei:

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

Ka arawhiti te riipene pāpāho, ka ta i te mihi, ka puta.

Tiakina te konae ka whakahiatohia te tono whakamatautau me te whakahau:

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

Kia mahara ko te raina

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

kei roto i nga tohu whakahua, kei runga i te papapātuhi i te waahi ano ko te reta "Ё".

Mena karekau he hapa i roto i te konae, katahi ka puta he konae i muri i te whakahiatotanga ki te raarangi mstest. Ka timata tatou i te kaupapa:

$ ./mstest

Ka penei te hua:

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 tenei rarangi, ka kite matou i nga karere hapa e whakaatuhia ana e te whare pukapuka ALSA, ka whakamahia hei whakahaere i te kaari tangi. Ko nga kaiwhakawhanake o te riipene pāpāho e whakapono ana he mea noa tenei. I tenei keehi, ka whakaae matou ki a raatau.

Inaianei kua rite taatau ki te mahi me te riipene pāpāho. Kua whakaurua e matou te whare pukapuka roma pāpāho, te taputapu whakahiato, me te whakamahi i te tono whakamatautau, kua manatokohia kua whirihorahia nga taputapu me te arataki angitu o te riipene pāpāho.

Whai muri Tuhinga ka hangahia e matou he tono ka whakahiato me te whakahaere i te tukatuka o te tohu ororongo i roto i te mekameka o nga whiriwhiringa maha.

Source: will.com