Artikuluaren materiala niretik hartua da
Sarrera
Artikulu hau Mediastreamer2 motorra erabiliz denbora errealeko multimedia prozesatzeari buruzko artikulu sorta baten hasiera da. Aurkezpenean Linux terminalean lan egiteko eta C hizkuntzan programatzeko gutxieneko trebetasunak izango dira.
Mediastreamer2 VoIP motorra da kode irekiko software voip telefono proiektu ezagunaren atzean.
Testuan aurrerago, erosotasunerako, Mediastreamer2 hitzaren ordez bere errusierazko idazkera erabiliko dugu: “media streamer”.
Bere sorreraren historia ez dago guztiz argia, baina iturburu-kodea ikusita, aurretik liburutegia erabiltzen zuen
Media streamer-aren muinean "Data flow" (datuen fluxua) izeneko arkitektura dago. Horrelako arkitektura baten adibidea beheko irudian ageri da.
Arkitektura honetan, datuak prozesatzeko algoritmoa ez da programa-kode batek zehazten, baizik eta edozein ordenatan antolatu daitezkeen funtzioak konektatzeko eskema (grafiko) baten bidez. Funtzio horiei iragazki deitzen zaie.
Arkitektura honek multimedia prozesatzeko funtzionaltasuna ezartzea ahalbidetzen du VoIP telefonoaren RTP trafikoaren prozesatzeko eta transmisio eskemari konektatutako iragazki multzo baten moduan.
Iragazkiak eskema arbitrarioetan konbinatzeko gaitasunak, iragazki berrien garapen sinpleak, multimedia-streamer-a liburutegi independente independente gisa ezartzeak beste proiektu batzuetan erabiltzeko aukera ematen dute. Gainera, proiektua VoIP arlokoa izan daiteke, norberak egindako iragazkiak gehitzeko aukera baitago.
Lehenespenez hornitutako iragazkien liburutegia nahiko aberatsa da eta, esan bezala, gure diseinu propioko iragazkiekin heda daiteke. Baina lehenik eta behin, deskriba ditzagun multimedia-erreproduzigailuarekin batera datozen prest egindako iragazkiak. Hona hemen haien zerrenda:
Soinu-iragazkiak
Audioa harrapatzea eta erreproduzitzea
- Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
- Android jatorrizko soinua (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
- Audio-ilararen zerbitzua (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
- Audio Unit Service (Mac OS X)
- Arteak (Linux): MS_ARTS_WRITE, MS_ARTS_READ
- DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
- Fitxategi-erreproduzitzailea (raw/wav/pcap fitxategiak) (Linux): MS_FILE_PLAYER
- Fitxategi-erreproduzitzailea (raw/wav fitxategiak) (Windows): MS_WINSND_READ
- Idatzi fitxategira (wav fitxategiak) (Linux): MS_FILE_REC
- Idatzi fitxategira (wav fitxategiak) (Windows): MS_WINSND_WRITE
- Mac Audio Unitatea (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 Soinua (Windows)
Audio-kodeketa/deskodeketa
- G.711 legea: MS_ALAW_DEC, MS_ALAW_ENC
- G.711 µ-legea: 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 lineala: MS_L16_ENC, MS_L16_DEC
- Adierazpena: MS_SPEEX_ENC, MS_SPEEX_DEC
Soinuaren tratamendua
- Kanalen bihurketa (mono->estereo, estereo->mono): MS_CHANNEL_ADAPTER
- Hitzaldia: MS_CONF
- DTMF Sortzailea: MS_DTMF_GEN
- Oihartzuna ezeztatzea (speex): MS_SPEEX_EC
- Berdinketa: MS_EQUALIZER
- Nahastailea: MS_MIXER
- Pakete-galera konpentsatzailea (PLC): MS_GENERIC_PLC
- Birmoldatzailea: MS_RESAMPLE
- Tonu-detektagailua: MS_TONE_DETECTOR
- Bolumen-kontrola eta seinale-maila neurtzea: MS_VOLUME
Bideo-iragazkiak
Bideoa grabatzea eta erreproduzitzea
- Android harrapaketa
- Android erreprodukzioa
- AV Foundation harrapaketa (iOS)
- AV Foundation erreprodukzioa (iOS)
- DirectShow Capture (Windows)
- DrawDib erreprodukzioa (Windows)
- Kanpoko erreprodukzioa - Bideoa goiko geruzara bidaltzea
- GLX erreprodukzioa (Linux): MS_GLXVIDEO
- Mire - Mugitutako argazki sintetikoa: MS_MIRE
- OpenGL erreprodukzioa (Mac OS X)
- OpenGL ES2 erreprodukzioa (Android)
- Quicktime Capture (Mac OS X)
- SDL erreprodukzioa: MS_SDL_OUT
- Irudi estatikoko irteera: MS_STATIC_IMAGE
- Bideoa Linux (V4L) harrapatzeko (Linux): MS_V4L
- Linux 2 (V4L2) harrapatzeko bideoa (Linux): MS_V4L2_CAPTURE
- Video4windows (DirectShow) kaptura (Windows)
- Video4windows (DirectShow) kaptura (Windows CE)
- Windows-erako bideoa (vfw) harrapaketa (Windows)
- XV erreprodukzioa (Linux)
Bideoen kodeketa/deskodeketa
- H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Elurra: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
- H.264 (deskodetzailea soilik): MS_H264_DEC
- Theora: MS_THEORA_ENC, MS_THEORA_DEC
- VP8: MS_VP8_ENC, MS_VP8_DEC
Bideo prozesatzea
- jpeg argazkia
- Pixel-formatu bihurgailua: MS_PIX_CONV
- Tamaina aldatzea
- Beste iragazki batzuk
- Hari arteko datu-blokeen trukea: MS_ITC_SOURCE, MS_ITC_SINK
- Hainbat sarreratako datu-blokeak irteera bakarrera biltzea: MS_JOIN
- RTP jaso/bidali: MS_RTP_SEND, MS_RTP_RECV
- Sarrerako datuak irteera anitzetara kopiatzen: MS_TEE
- Amaitutako karga: MS_VOID_SINK
- Isiltasuna Iturria: MS_VOID_SOURCE
Pluginak
Soinu-iragazkiak
- AMR-NB kodetzailea/deskodetzailea
- G.729 kodetzailea/deskodetzailea
- iLBC kodetzailea/deskodetzailea
- SILK kodetzailea/deskodetzailea
Bideo-iragazkiak
- H.264 software-kodetzailea
- H.264 V4L2 hardware-kodetzaile/deskodetzaile bizkortua
Iragazkiaren deskribapen labur baten ondoren, motaren izena erakusten da, iragazki honen instantzia berri bat sortzeko erabiltzen dena. Jarraian, zerrenda honi erreferentzia egingo diogu.
Instalazioa Linux Ubuntu-n
Orain multimedia-streamer-a ordenagailuan instalatuko dugu eta harekin gure lehen aplikazioa eraikiko dugu.
Mediastremer2 Ubuntu exekutatzen duen ordenagailu edo makina birtualean instalatzeak ez du gaitasun berezirik behar. Hemen eta behean, "$" sinboloak komandoak sartzeko shell gonbita adieraziko du. Horiek. zerrendan ikur hau lerroaren hasieran ikusten baduzu, hau da terminalean exekutatu beharreko komandoak erakusten diren lerroa.
Artikulu honetako urratsetan zure ordenagailuak Interneterako sarbidea duela suposatzen da.
libmediastremer-dev paketea instalatzen
Abiarazi terminala eta idatzi komandoa:
$ sudo apt-get update
Aldaketak egiteko pasahitz bat eskatuko zaizu, sartu eta paketeen kudeatzaileak bere datu-baseak eguneratuko ditu. Horren ondoren, exekutatu behar duzu:
$ sudo apt-get install libmediastreamer-dev
Beharrezko mendekotasun paketeak eta multimedia streamer liburutegia bera automatikoki deskargatu eta instalatuko dira.
Deskargatutako mendekotasun-paketeen guztizko tamaina 35 MBkoa izango da gutxi gorabehera. Instalatutako paketeari buruzko xehetasunak komandoarekin aurki daitezke:
$ dpkg -s libmediastreamer-dev
Erantzunaren adibidea:
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/
Garapen tresnak instalatzea
Instalatu C konpilatzailea eta harekin batera doan tresnak:
$ sudo apt-get install gcc
Emaitza egiaztatzen dugu konpiladorearen bertsioa kontsultatuz:
$ gcc --version
Erantzunak honelako zerbait izan beharko luke:
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.
Proba aplikazioa eraikitzea eta martxan jartzea
urtean sortzen dugu hasiera gure tutoretza-proiektuen karpeta, dei diezaiogun mstutoriala:
$ mkdir ~/mstutorial
Erabili zure gogoko testu-editorea eta sortu izeneko C programa fitxategi bat mstest.c eduki honekin:
#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
ms_init();
printf ("Mediastreamer is ready.n");
}
Multimedia erreproduzitzailea hasieratzen du, agur bat inprimatzen du eta irteten da.
Gorde fitxategia eta konpilatu proba aplikazioa komandoarekin:
$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`
Kontuan izan lerroa
`pkg-config mediastreamer --libs --cflags`
komatxoen artean sartuta, teklatuan "Ё" letraren leku berean daudenak.
Fitxategiak akatsik ez badu, konpilatu ondoren fitxategi bat agertuko da direktorioan mstest. Programari hasiera ematen diogu:
$ ./mstest
Emaitza honelakoa izango da:
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.
Zerrenda honetan, ALSA liburutegiak bistaratzen dituen errore-mezuak ikusten ditugu, soinu-txartela kontrolatzeko erabiltzen da. Media streamer-aren garatzaileek beraiek uste dute hori normala dela. Kasu honetan, gogoz kontra bat egiten dugu haiekin.
Orain prest gaude multimedia-streamer-arekin lan egiteko. Media streamer liburutegia instalatu dugu, konpilazio tresna, eta probako aplikazio bat erabiliz, tresnak konfiguratuta daudela eta multimedia streamer-a behar bezala abiarazten dela egiaztatu dugu.
Hurrengoa
Iturria: www.habr.com