Efni greinarinnar er tekið úr mínum
Inngangur
Þessi grein er upphaf á röð greina um rauntíma fjölmiðlavinnslu með Mediastreamer2 vélinni. Kynningin mun fela í sér lágmarksfærni til að vinna í Linux flugstöðinni og forritun á C tungumálinu.
Mediastreamer2 er VoIP vélin á bak við hið vinsæla opna hugbúnaðar voip símaverkefni.
Nánar í textanum, til hægðarauka, í stað orðsins Mediastreamer2 munum við nota rússneska merkingu þess: „mediastreamer“.
Saga sköpunar þess er ekki alveg skýr, en miðað við frumkóðann notaði það áður bókasafnið
Í hjarta fjölmiðlastraumsins er arkitektúr sem kallast "Data flow" (gagnaflæði). Dæmi um slíkan arkitektúr er sýnt á myndinni hér að neðan.
Í þessum arkitektúr er gagnavinnslu reikniritið ekki tilgreint með forritskóða, heldur með kerfi (graf) til að tengja aðgerðir sem hægt er að raða í hvaða röð sem er. Þessar aðgerðir eru kallaðar síur.
Þessi arkitektúr gerir það mögulegt að innleiða fjölmiðlavinnsluvirkni í formi setts af síum tengdum í kerfi til að vinna og senda RTP umferð í VoIP síma.
Hæfni til að sameina síur í handahófskenndar kerfi, einföld þróun nýrra sía, innleiðing fjölmiðlastraumsins sem sjálfstætt sérstakt bókasafn, gerir það kleift að nota það í öðrum verkefnum. Þar að auki getur verkefnið verið á sviði VoIP, þar sem hægt er að bæta við síum sem gerðar eru sjálfur.
Síusafnið sem fylgir sjálfgefið er nokkuð ríkt og eins og áður hefur komið fram er hægt að stækka það með síum af okkar eigin hönnun. En fyrst skulum við lýsa tilbúnu síunum sem fylgja fjölmiðlastraumspilaranum. Hér er listi þeirra:
Hljóðsíur
Hljóðupptaka og spilun
- Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
- Android innbyggt hljóð (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
- Audio Queue Service (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
- Hljóðeiningaþjónusta (Mac OS X)
- Listir (Linux): MS_ARTS_WRITE, MS_ARTS_READ
- DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
- Skráaspilari (raw/wav/pcap skrár) (Linux): MS_FILE_PLAYER
- Skráaspilari (raw/wav skrár) (Windows): MS_WINSND_READ
- Skrifaðu í skrá (wav skrár) (Linux): MS_FILE_REC
- Skrifaðu í skrá (wav skrár) (Windows): MS_WINSND_WRITE
- Mac hljóðeining (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 hljóð (Windows)
Hljóðkóðun/afkóðun
- G.711 a-lög: MS_ALAW_DEC, MS_ALAW_ENC
- G.711 µ-lögmál: 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
- Línulegt PCM: MS_L16_ENC, MS_L16_DEC
- Speex: MS_SPEEX_ENC, MS_SPEEX_DEC
Hljóðvinnsla
- Rásarbreyting (ein->stereo, hljómtæki->mónó): MS_CHANNEL_ADAPTER
- Ráðstefna: MS_CONF
- DTMF rafall: MS_DTMF_GEN
- Bergmálshætta (speex): MS_SPEEX_EC
- Tónjafnari: MS_EQUALIZER
- Blandari: MS_MIXER
- Packet Loss Compensator (PLC): MS_GENERIC_PLC
- Endursýnismaður: MS_RESAMPLE
- Tónskynjari: MS_TONE_DETECTOR
- Hljóðstyrkstýring og mæling á hljóðstyrk: MS_VOLUME
Vídeó síur
Myndbandsupptaka og spilun
- Android handtaka
- Android spilun
- AV Foundation capture (iOS)
- AV Foundation spilun (iOS)
- DirectShow Capture (Windows)
- DrawDib spilun (Windows)
- Ytri spilun - Sendir myndband í efsta lagið
- GLX spilun (Linux): MS_GLXVIDEO
- Mire - Tilbúið hreyfimynd: MS_MIRE
- OpenGL spilun (Mac OS X)
- OpenGL ES2 spilun (Android)
- Quicktime Capture (Mac OS X)
- SDL spilun: MS_SDL_OUT
- Statísk myndúttak: MS_STATIC_IMAGE
- Myndband fyrir Linux (V4L) handtaka (Linux): MS_V4L
- Myndband fyrir Linux 2 (V4L2) handtaka (Linux): MS_V4L2_CAPTURE
- Video4windows (DirectShow) handtaka (Windows)
- Video4windows (DirectShow) handtaka (Windows CE)
- Myndband fyrir Windows (vfw) handtaka (Windows)
- XV spilun (Linux)
Vídeókóðun/afkóðun
- H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, snjór: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
- H.264 (aðeins afkóðari): MS_H264_DEC
- Theora: MS_THEORA_ENC, MS_THEORA_DEC
- VP8: MS_VP8_ENC, MS_VP8_DEC
Myndbandsvinnsla
- jpeg skyndimynd
- Pixel sniðbreytir: MS_PIX_CONV
- Resizer
- Aðrar síur
- Skipti á gagnablokkum á milli þráða: MS_ITC_SOURCE, MS_ITC_SINK
- Að safna gagnablokkum úr mörgum inntakum í einn úttak: MS_JOIN
- RTP móttaka/sending: MS_RTP_SEND, MS_RTP_RECV
- Afritar inntaksgögn á marga útganga: MS_TEE
- Lokað álag: MS_VOID_SINK
- Þögn Heimild: MS_VOID_SOURCE
Viðbætur
Hljóðsíur
- AMR-NB kóðari/afkóðari
- G.729 kóðari/afkóðari
- iLBC kóðari/afkóðari
- SILK kóðari/afkóðari
Vídeó síur
- H.264 hugbúnaðarkóðari
- H.264 V4L2 vélbúnaðarhraðinn kóðari/afkóðari
Eftir stutta lýsingu á síunni birtist nafn tegundarinnar sem er notað þegar nýtt tilvik af þessari síu er búið til. Í því sem hér fer á eftir munum við vísa til þessa lista.
Uppsetning undir Linux Ubuntu
Nú munum við setja upp media streamer á tölvuna og byggja fyrsta forritið okkar með því.
Að setja upp Mediastremer2 á tölvu eða sýndarvél sem keyrir Ubuntu krefst ekki sérstakrar færni. Hér og fyrir neðan mun táknið „$“ tákna skeljabeiðni til að slá inn skipanir. Þeir. ef í skráningunni þú sérð þetta tákn í upphafi línunnar, þá er þetta línan þar sem sýnt er að skipanir séu framkvæmdar í flugstöðinni.
Gert er ráð fyrir að í skrefunum í þessari grein hafi tölvan þín aðgang að internetinu.
Setur upp libmediastremer-dev pakkann
Ræstu flugstöðina og sláðu inn skipunina:
$ sudo apt-get update
Þú verður beðinn um lykilorð til að gera breytingar, sláðu það inn og pakkastjórinn mun uppfæra gagnagrunna sína. Eftir það þarftu að keyra:
$ sudo apt-get install libmediastreamer-dev
Nauðsynlegir ávanapakkar og sjálfkrafa miðlunarstraumsafnið verður sjálfkrafa niðurhalað og sett upp.
Heildarstærð niðurhalaðra deb-pakka fyrir ósjálfstæði verður um það bil 35 MB. Upplýsingar um uppsettan pakka má finna með skipuninni:
$ dpkg -s libmediastreamer-dev
Svar dæmi:
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/
Að setja upp þróunarverkfæri
Settu upp C þýðanda og meðfylgjandi verkfæri:
$ sudo apt-get install gcc
Við athugum niðurstöðuna með því að spyrjast fyrir um þýðandaútgáfuna:
$ gcc --version
Svarið ætti að vera eitthvað á þessa leið:
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.
Byggja og keyra prufuforritið
Við búum til í heim möppu fyrir kennsluverkefnin okkar, við skulum kalla það kennslufræði:
$ mkdir ~/mstutorial
Notaðu uppáhalds textaritilinn þinn og búðu til C forritaskrá sem heitir mstest.c með eftirfarandi innihaldi:
#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
ms_init();
printf ("Mediastreamer is ready.n");
}
Það frumstillir fjölmiðlastrauminn, prentar kveðju og hættir.
Vistaðu skrána og settu saman prófunarforritið með skipuninni:
$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`
Athugið að línan
`pkg-config mediastreamer --libs --cflags`
innan gæsalappa, sem eru staðsettar á lyklaborðinu á sama stað og stafurinn „Ё“.
Ef skráin inniheldur ekki villur, þá mun skrá birtast í möppunni eftir samantekt mstest. Við byrjum prógrammið:
$ ./mstest
Útkoman verður svona:
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.
Í þessari skráningu sjáum við villuboðin sem ALSA bókasafnið sýnir, það er notað til að stjórna hljóðkortinu. Hönnuðir fjölmiðlastraumsins telja sjálfir að þetta sé eðlilegt. Í þessu tilfelli erum við treglega sammála þeim.
Nú erum við öll að fara að vinna með fjölmiðlastreymi. Við höfum sett upp fjölmiðlastreymisafnið, söfnunartólið, og með því að nota prufuforrit, staðfestum við að verkfærin séu stillt og miðlunarstraumurinn frumstillir með góðum árangri.
Næst
Heimild: www.habr.com