Kuwunika injini ya Mediastreamer2 VoIP. Gawo 1

Zomwe zili m'nkhaniyi zatengedwa kuchokera ku wanga zene channel.

Mau oyamba

Nkhaniyi ndi chiyambi cha nkhani zambiri zokhudzana ndi kusintha kwa nthawi yeniyeni pogwiritsa ntchito injini ya Mediastreamer2. Panthawi yowonetsera, luso lochepa logwira ntchito mu Linux terminal ndi mapulogalamu mu chinenero cha C adzakhudzidwa.

Mediastreamer2 ndiye injini ya VoIP kuseri kwa pulojekiti yotchuka ya pulogalamu ya voip foni. foni. Mu Linphone Mediastreamer2 imagwiritsa ntchito ntchito zonse zokhudzana ndi mawu ndi makanema. Mndandanda watsatanetsatane wazinthu zamainjini zitha kuwoneka patsamba lino la Mediastreamer. Khodi yoyambira ili nayi: GitLab.

Kupitilira muzolemba, kuti zitheke, m'malo mwa mawu akuti Mediastreamer2 tidzagwiritsa ntchito mawu ake aku Russia: "media streamer".

Mbiri ya chilengedwe chake sichidziwika bwino, koma poyang'ana magwero ake, idagwiritsa ntchito laibulaleyi Kuyipa, zomwe, titero, zikuwonetsa ubale womwe ungakhale wakutali ndi GStreamer. Poyerekeza ndi zomwe media streamer imawoneka yopepuka kwambiri. Mtundu woyamba wa Linphone udawonekera mu 2001, kotero pakadali pano media media ilipo ndipo ikukula kwa zaka pafupifupi 20.

Pamtima pa media streamer ndi zomangamanga zotchedwa "Data flow" (data flow). Chitsanzo cha zomangamanga zoterezi chikuwonetsedwa mu chithunzi pansipa.

Kuwunika injini ya Mediastreamer2 VoIP. Gawo 1

Muzomangamangazi, ndondomeko yopangira deta imatchulidwa osati ndi ndondomeko ya pulogalamu, koma ndi ndondomeko (graph) yogwirizanitsa ntchito zomwe zingathe kukonzedwa mwanjira iliyonse. Ntchitozi zimatchedwa zosefera.

Zomangamangazi zimapangitsa kuti zitheke kukhazikitsa magwiridwe antchito a media ngati seti ya zosefera zolumikizidwa mu chiwembu chokonzekera ndikutumiza kuchuluka kwa RTP pa foni ya VoIP.

Kutha kuphatikizira zosefera m'machitidwe osagwirizana, kupanga kosavuta kwa zosefera zatsopano, kukhazikitsidwa kwa media media ngati laibulale yodziyimira payokha, kulola kuti igwiritsidwe ntchito m'ma projekiti ena. Komanso, polojekitiyi ikhoza kukhala m'munda wa VoIP, chifukwa ndizotheka kuwonjezera zosefera zopangidwa ndi wekha.

Laibulale ya fyuluta yomwe imaperekedwa mwachisawawa ndiyolemera kwambiri ndipo, monga tanenera kale, ikhoza kuwonjezeredwa ndi zosefera zomwe mwapanga. Koma choyamba, tiyeni tifotokoze zosefera zokonzeka zomwe zimabwera ndi media streamer. Nawu mndandanda wawo:

Zosefera phokoso

Kujambula nyimbo ndi kusewera

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Nyimbo zamtundu wa Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Ntchito Yamzere Womvera (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Audio Unit Service (Mac OS X)
  • Zojambula (Linux): MS_ARTS_WRITE, MS_ARTS_READ
  • DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • Wosewerera mafayilo (mafayilo aiwisi/wav/pcap) (Linux): MS_FILE_PLAYER
  • Wosewerera mafayilo (mafayilo aiwisi/wav) (Mawindo): MS_WINSND_READ
  • Lembani ku fayilo (mafayilo a wav) (Linux): MS_FILE_REC
  • Lembani ku fayilo (mafayilo a wav) (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
  • Spex: MS_SPEEX_ENC, MS_SPEEX_DEC

Kukonza mawu

  • Kusintha tchanelo (mono->sititiriyo, stereo->mono): MS_CHANNEL_ADAPTER
  • Msonkhano: MS_CONF
  • Wopanga DTMF: MS_DTMF_GEN
  • Kuletsa kwa Echo (mawu): MS_SPEEX_EC
  • Equalizer: MS_EQUALIZER
  • Chosakaniza: MS_MIXER
  • Phukusi Loss Compensator (PLC): MS_GENERIC_PLC
  • Wotsatsiranso: MS_RESAMPLE
  • Chojambulira mamvekedwe: MS_TONE_DETECTOR
  • Kuwongolera kuchuluka kwa mawu ndi kuyeza kwa siginecha: MS_VOLUME

Zosefera makanema

Kujambula mavidiyo ndi kusewera

  • android kujambula
  • kusewera kwa android
  • Kujambula kwa AV Foundation (iOS)
  • Kusewera kwa AV Foundation (iOS)
  • DirectShow Capture (Windows)
  • Kusewera kwa DrawDib (Windows)
  • Sewero lakunja - Kutumiza kanema pamwamba
  • Kusewera kwa GLX (Linux): MS_GLXVIDEO
  • Mire - Chithunzi chosunthika chosuntha: MS_MIRE
  • Kusewera kwa OpenGL (Mac OS X)
  • Kusewera kwa OpenGL ES2 (Android)
  • Quicktime Capture (Mac OS X)
  • Kusewerera kwa SDL: MS_SDL_OUT
  • Zithunzi zosasunthika: MS_STATIC_IMAGE
  • Kanema Wa Linux (V4L) kujambula (Linux): MS_V4L
  • Kanema Wa Linux 2 (V4L2) kujambula (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) kujambula (Windows)
  • Video4windows (DirectShow) kujambula (Windows CE)
  • Kanema Wa Windows (vfw) kujambula (Windows)
  • Kusewera kwa XV (Linux)

Video encoding/decoding

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

Kanema processing

  • jpeg chithunzi
  • Chosinthira mtundu wa pixel: MS_PIX_CONV
  • Resizer
  • Zosefera zina
  • Kusinthana kwa midadada ya data pakati pa ulusi: MS_ITC_SOURCE, MS_ITC_SINK
  • Kusonkhanitsa midadada kuchokera pazolowetsa zingapo mpaka kutulutsa kamodzi: MS_JOIN
  • Kulandila/kutumiza kwa RTP: MS_RTP_SEND, MS_RTP_RECV
  • Kukopera zolowa pazotulutsa zingapo: MS_TEE
  • Katundu wotsitsidwa: MS_VOID_SINK
  • Tsitsani Chete: MS_VOID_SOURCE

Mapulagini

Zosefera phokoso

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

    Zosefera makanema

  • H.264 pulogalamu ya encoder
  • H.264 V4L2 hardware imathandizira encoder/decoder

Pambuyo pofotokozera mwachidule za fyuluta, dzina la mtunduwo likuwonetsedwa, lomwe limagwiritsidwa ntchito popanga chitsanzo chatsopano cha fyuluta iyi. Zotsatirazi, tiwona mndandandawu.

Kuyika pansi pa Linux Ubuntu

Tsopano ife kukhazikitsa TV streamer pa kompyuta ndi kumanga ntchito yathu yoyamba ndi izo.

Kuyika Mediastremer2 pakompyuta kapena makina enieni omwe akuyendetsa Ubuntu sikufuna luso lapadera. Apa ndi pansipa, chizindikiro "$" chitanthauza chipolopolo cholowetsa malamulo. Iwo. ngati mumndandanda mukuwona chizindikirochi kumayambiriro kwa mzere, ndiye kuti uwu ndi mzere womwe malamulo akuwonetsedwa kuti akutsatiridwa mu terminal.

Zikuganiziridwa kuti panthawi yomwe ili m'nkhaniyi, kompyuta yanu ili ndi intaneti.

Kuyika phukusi la libmediastremer-dev

Tsegulani terminal ndikulemba lamulo:

$ sudo apt-get update

Mudzafunsidwa mawu achinsinsi kuti musinthe, lowetsani ndipo woyang'anira phukusi adzasintha nkhokwe zake. Pambuyo pake, muyenera kuthamanga:

$ sudo apt-get install libmediastreamer-dev

Phukusi loyenera lodalira ndi laibulale ya media streamer yokha idzatsitsidwa ndikuyika.

Kukula konse kwa phukusi lotsitsidwa la deb kudzakhala pafupifupi 35 MB. Tsatanetsatane wa phukusi loyikidwa lingapezeke ndi lamulo:

$ dpkg -s libmediastreamer-dev

Yankho chitsanzo:

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/

Kuyika zida zachitukuko

Ikani C compiler ndi zida zake:

$ sudo apt-get install gcc

Timawona zotsatira zake pofunsa mtundu wa compiler:

$ gcc --version

Yankho liyenera kukhala motere:

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.

Kupanga ndi Kuyendetsa Ntchito Yoyeserera

Timalenga mkati kunyumba foda yamapulojekiti athu ophunzitsira, tiyeni tiyitchule maphunziro:

$ mkdir ~/mstutorial

Gwiritsani ntchito mkonzi wamawu omwe mumakonda ndikupanga fayilo ya pulogalamu ya C yotchedwa mstest.c ndi izi:

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

Imayambitsa zowulutsa media, kusindikiza moni, ndikutuluka.

Sungani fayilo ndikulemba ntchito yoyeserera ndi lamulo:

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

Dziwani kuti mzere

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

zotsekedwa m'mawu obwereza, omwe ali pa kiyibodi pamalo omwewo ndi chilembo "Ё".

Ngati fayilo ilibe zolakwika, ndiye kuti pambuyo pakupanga fayilo idzawonekera m'ndandanda mstest. Timayamba pulogalamu:

$ ./mstest

Zotsatira zake zikhala motere:

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.

Pamndandandawu, tikuwona mauthenga olakwika omwe laibulale ya ALSA imawonetsa, imagwiritsidwa ntchito kuwongolera khadi lamawu. Opanga ma media streamer amakhulupirira kuti izi ndizabwinobwino. Pankhaniyi, timagwirizana nawo mwaufulu.

Tsopano tonse takonzeka kugwira ntchito ndi media streamer. Tayika laibulale ya media streamer, chida chophatikizira, ndikugwiritsa ntchito pulogalamu yoyeserera, tatsimikizira kuti zidazo zakonzedwa ndipo media streamer imayamba bwino.

Ena nkhani tidzapanga pulogalamu yomwe ingasonkhanitse ndikuyendetsa makina omvera muzosefera zingapo.

Source: www.habr.com