Ke ʻimi nei i ka ʻenekini Mediastreamer2 VoIP. Mahele 1

Lawe ʻia ka mea o ka ʻatikala mai kaʻu zen channel.

Hōʻike

ʻO kēia ʻatikala ka hoʻomaka ʻana o nā ʻatikala e pili ana i ka hoʻoili ʻana i ka media manawa maoli me ka hoʻohana ʻana i ka mīkini Mediastreamer2. E pili ana ka hōʻike ʻana i nā mākau haʻahaʻa o ka hana ʻana ma ke kikowaena Linux a me nā polokalamu ma ka ʻōlelo C.

ʻO Mediastreamer2 ka ʻenekini VoIP ma hope o ka polokalamu kelepona voip kelepona kaulana. kelepona. Ma Linphone Mediastreamer2 hoʻokō i nā hana āpau e pili ana i ke kani a me ke wikiō. Hiki ke ʻike ʻia kahi papa inoa kikoʻī o nā hiʻohiʻona mīkini ma kēia ʻaoʻao Mediastreamer. Aia ke code kumu: GitLab.

Ma kahi o ka kikokikona, no ka maʻalahi, ma kahi o ka huaʻōlelo Mediastreamer2 e hoʻohana mākou i kāna ʻōlelo Lūkini: "media streamer".

ʻAʻole maopopo loa ka mōʻaukala o kāna hana ʻana, akā no ka hoʻoholo ʻana ma kāna kumu kumu, ua hoʻohana mua ia i ka waihona ʻO Glib, ka mea, me he mea lā, e hōʻike ana i kahi pilina mamao me GStreamer. I ka hoʻohālikelike ʻana me ka mea ʻoi aku ka māmā o ka streamer media. Ua ʻike ʻia ka mana mua o Linphone i ka makahiki 2001, no laila i kēia manawa aia ka streamer media a hoʻomohala no kahi kokoke i 20 mau makahiki.

Aia ma ka puʻuwai o ka streamer media kahi hale hana i kapa ʻia ʻo "Data flow" (data flow). Hōʻike ʻia kahi laʻana o ia ʻano hoʻolālā ma ke kiʻi ma lalo nei.

Ke ʻimi nei i ka ʻenekini Mediastreamer2 VoIP. Mahele 1

Ma kēia hoʻolālā, ʻaʻole i hōʻike ʻia ka algorithm o ka hoʻoili ʻana i ka ʻikepili e kahi code program, akā ma kahi hoʻolālā (graph) no ka hoʻopili ʻana i nā hana i hiki ke hoʻonohonoho ʻia i kēlā me kēia kauoha. Kapa ʻia kēia mau hana he kānana.

Hiki i kēia hoʻolālā ke hoʻokō i ka hana hoʻoili media ma ke ʻano o kahi hoʻonohonoho o nā kānana i hoʻopili ʻia i ke kelepona VoIP RTP traffic processing and transmission scheme.

ʻO ka hiki ke hoʻohui i nā kānana i loko o nā hoʻolālā ʻokoʻa, ka hoʻomohala maʻalahi o nā kānana hou, ka hoʻokō ʻana i ka streamer media ma ke ʻano he waihona kūʻokoʻa kūʻokoʻa, e ʻae ʻia e hoʻohana ʻia i nā papahana ʻē aʻe. Eia kekahi, hiki i ka papahana ma ke kahua o VoIP, no ka mea hiki ke hoʻohui i nā kānana i hana ʻia e kekahi.

ʻO ka waihona kānana i hāʻawi ʻia e ka paʻamau he waiwai nui a, e like me ka mea i ʻōlelo ʻia, hiki ke hoʻonui ʻia me nā kānana o kā mākou hoʻolālā ponoʻī. Akā ʻo ka mea mua, e wehewehe kākou i nā kānana i mākaukau i hele mai me ka streamer media. Eia kā lākou papa inoa:

Nā kānana kani

Hoʻopaʻa leo a pāʻani hou

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Leo ʻōiwi Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Hana Līlani Leo (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Hana ʻĀpana Leo (Mac OS X)
  • Noi (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Mea pāʻani waihona (nā waihona raw/wav/pcap) (Linux): MS_FILE_PLAYER
  • Mea pāʻani waihona (nā waihona maka/wav) (Windows): MS_WINSND_READ
  • Kākau i ka waihona (wav files) (Linux): MS_FILE_REC
  • Kākau i ka waihona (wav files) (Windows): MS_WINSND_WRITE
  • ʻĀpana Leo 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)

Hoʻopāpā leo/decoding

  • G.711 a-kānāwai: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-kānāwai: 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
  • ʻŌlelo: MS_SPEEX_ENC, MS_SPEEX_DEC

Hoʻoponopono kani

  • Ka hoʻololi ʻana i ke ala (mono->stereo, stereo->mono): MS_CHANNEL_ADAPTER
  • Hui: MS_CONF
  • Mea Hana DTMF: MS_DTMF_GEN
  • Hoʻopau leo ​​(speex): MS_SPEEX_EC
  • Mea hoʻohālikelike: MS_EQUALIZER
  • Mea hui: MS_MIXER
  • Pākuʻi Pohō ʻAi (PLC): MS_GENERIC_PLC
  • Mea hana hou: MS_RESAMPLE
  • Mea ʻike leo: MS_TONE_DETECTOR
  • Ka mana leo a me ke ana pae hoailona: MS_VOLUME

Nā kānana wikiō

Paʻi wikiō a pāʻani hou

  • ka hopu ʻana i ka android
  • pāʻani Android
  • Hopu AV Foundation (iOS)
  • Hoʻokani hou ʻo AV Foundation (iOS)
  • Hoʻopio DirectShow (Windows)
  • Hoʻokani hou DrawDib (Windows)
  • Pāʻani waho - Hoʻouna wikiō i ka papa luna
  • Pāʻani GLX (Linux): MS_GLXVIDEO
  • Mire - Kiʻi hoʻoneʻe ʻia: MS_MIRE
  • Pāʻani OpenGL (Mac OS X)
  • Pāʻani OpenGL ES2 (Android)
  • Hopu manawa wikiwiki (Mac OS X)
  • Pāʻani SDL: MS_SDL_OUT
  • Puke kiʻi paʻa: MS_STATIC_IMAGE
  • Video No Linux (V4L) hopu (Linux): MS_V4L
  • Paʻi wikiō No Linux 2 (V4L2) hopu (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) hopu (Windows)
  • Video4windows (DirectShow) hopu (Windows CE)
  • Hopu wikiō no Windows (vfw) (Windows)
  • Pāʻani XV (Linux)

Hoʻopaʻa wikiō/decoding

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

Paʻi wikiō

  • kiʻi jpeg
  • Mea hoʻololi kiʻi pixel: MS_PIX_CONV
  • Resizer
  • Nā kānana ʻē aʻe
  • Hoʻololi i nā poloka ʻikepili ma waena o nā loina: MS_ITC_SOURCE, MS_ITC_SINK
  • E hōʻiliʻili i nā poloka ʻikepili mai nā mea hoʻokomo he nui i hoʻokahi puka: MS_JOIN
  • Loaʻa/hoʻouna iā RTP: MS_RTP_SEND, MS_RTP_RECV
  • Ke kope nei i ka ʻikepili hoʻokomo i nā mea hoʻopuka he nui: MS_TEE
  • Hoʻopau ʻia ka ukana: MS_VOID_SINK
  • Pūnaehana Hamau: MS_VOID_SOURCE

Nā Plugins

Nā kānana kani

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

    Nā kānana wikiō

  • H.264 lako polokalamu encoder
  • H.264 V4L2 lako lako hoʻokēʻai/decoder

Ma hope o ka wehewehe pōkole o ka kānana, hōʻike ʻia ka inoa ʻano, i hoʻohana ʻia i ka hana ʻana i kahi mea hou o kēia kānana. Ma nā mea aʻe, e nānā mākou i kēia papa inoa.

Hoʻokomo ma lalo o Linux Ubuntu

I kēia manawa e hoʻokomo mākou i ka streamer media ma ke kamepiula a kūkulu i kā mākou noi mua me ia.

ʻO ka hoʻokomo ʻana iā Mediastremer2 ma kahi kamepiula a i ʻole ka mīkini virtual e holo ana i ka Ubuntu ʻaʻole koi i nā mākau kūikawā. Ma ʻaneʻi a ma lalo, ʻo ka hōʻailona "$" e hōʻike i ka ʻōkuhi shell no ke komo ʻana i nā kauoha. ʻO kēlā mau. inā ma ka papa inoa ʻike ʻoe i kēia hōʻailona ma ka hoʻomaka ʻana o ka laina, a laila ʻo ia ka laina e hōʻike ʻia ai nā kauoha e hoʻokō ʻia ma ka pahu.

Ua manaʻo ʻia aia i ka wā o nā ʻanuʻu o kēia ʻatikala, hiki i kāu kamepiula ke komo i ka Pūnaewele.

Ke hoʻokomo nei i ka pūʻolo libmediastremer-dev

E hoʻokuʻu i ka pahu a paʻi i ke kauoha:

$ sudo apt-get update

E noi ʻia ʻoe i kahi ʻōlelo huna e hoʻololi ai, e hoʻokomo iā ia a e hoʻoponopono ka luna pūʻolo i kāna mau ʻikepili. Ma hope o kēlā, pono ʻoe e holo:

$ sudo apt-get install libmediastreamer-dev

ʻO nā pūʻolo hilinaʻi pono a me ka waihona streamer media ponoʻī e hoʻoiho a hoʻokomo ʻia.

ʻO ka nui o nā pūʻolo deb dependency i hoʻoiho ʻia ma kahi o 35 MB. Hiki ke loaʻa nā kikoʻī e pili ana i ka pūʻolo i kau ʻia me ke kauoha:

$ dpkg -s libmediastreamer-dev

Laʻana pane:

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/

Ke hoʻokomo nei i nā mea hana hoʻomohala

E hoʻouka i ka C compiler a me kāna mau mea hana:

$ sudo apt-get install gcc

Nānā mākou i ka hopena ma ka nīnau ʻana i ka mana compiler:

$ gcc --version

ʻO ka pane e like me kēia:

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.

Ke kūkulu ʻana a me ka holo ʻana i ka noi hoʻokolokolo

Hana mākou i loko ka hale waihona no kā mākou papahana aʻo, e kāhea mākou mstutorial:

$ mkdir ~/mstutorial

E hoʻohana i kāu mea hoʻoponopono kikokikona punahele a hana i kahi faila papahana C i kapa ʻia mstest.c me keia mau mea:

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

Hoʻomaka ia i ka streamer media, paʻi i ke aloha, a puka i waho.

E mālama i ka faila a hoʻohui i ka noi hoʻāʻo me ke kauoha:

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

E hoʻomaopopo i ka laina

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

i hoʻopaʻa ʻia i nā kaha puanaʻi, aia ma ka papa keyboard ma kahi like me ka leka "Ё".

Inā ʻaʻohe hewa o ka faila, a laila ma hope o ka hōʻuluʻulu ʻana e ʻike ʻia kahi faila i ka papa kuhikuhi mstest. Hoʻomaka mākou i ka papahana:

$ ./mstest

Penei ka hopena:

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.

Ma kēia papa inoa, ʻike mākou i nā memo hewa i hōʻike ʻia e ka hale waihona puke ALSA, hoʻohana ʻia ia e kāohi i ke kāleka kani. Manaʻo nā mea hoʻomohala o ka media streamer he mea maʻamau kēia. I kēia hihia, ʻae like mākou me lākou.

I kēia manawa ua mākaukau mākou e hana me ka streamer media. Ua hoʻokomo mākou i ka waihona streamer media, ka mea hana hoʻohui, a me ka hoʻohana ʻana i kahi noi hoʻāʻo, hōʻoia ʻia ua hoʻonohonoho ʻia nā mea hana a hoʻomaka maikaʻi ka streamer media.

Aʻe 'ōlelo e hana mākou i kahi noi e hōʻuluʻulu a holo i ka hana ʻana o kahi hōʻailona leo ma kahi kaulahao o nā kānana.

Source: www.habr.com