Mae deunydd yr erthygl yn cael ei gymryd o fy
Cyflwyniad
Mae'r erthygl hon yn ddechrau cyfres o erthyglau am brosesu cyfryngau amser real gan ddefnyddio injan Mediastreamer2. Bydd y cyflwyniad yn cynnwys y sgiliau lleiaf o weithio yn y derfynell Linux a rhaglennu yn yr iaith C.
Mediastreamer2 yw'r injan VoIP y tu ôl i'r prosiect ffôn voip meddalwedd ffynhonnell agored poblogaidd.
Ymhellach yn y testun, er hwylustod, yn lle'r gair Mediastreamer2 byddwn yn defnyddio ei nodiant Rwsieg: “media streamer”.
Nid yw hanes ei greadigaeth yn gwbl glir, ond a barnu yn ôl ei chod ffynhonnell, defnyddiodd y llyfrgell o'r blaen
Wrth wraidd y ffrwd cyfryngau mae pensaernïaeth o'r enw "Llif data" (llif data). Dangosir enghraifft o bensaernïaeth o'r fath yn y ffigur isod.
Yn y bensaernïaeth hon, mae'r algorithm prosesu data wedi'i nodi nid gan god rhaglen, ond gan gynllun (graff) ar gyfer swyddogaethau cysylltu y gellir eu trefnu mewn unrhyw drefn. Gelwir y swyddogaethau hyn yn hidlwyr.
Mae'r bensaernïaeth hon yn ei gwneud hi'n bosibl gweithredu'r swyddogaeth prosesu cyfryngau ar ffurf set o hidlwyr sy'n gysylltiedig â chynllun prosesu a throsglwyddo traffig RTP ffôn VoIP.
Mae'r gallu i gyfuno hidlwyr yn gynlluniau mympwyol, datblygiad syml hidlwyr newydd, gweithredu'r ffrwd cyfryngau fel llyfrgell annibynnol ar wahân, yn caniatáu iddo gael ei ddefnyddio mewn prosiectau eraill. Ar ben hynny, gall y prosiect fod ym maes VoIP, gan ei bod yn bosibl ychwanegu hidlwyr a wneir gennych chi'ch hun.
Mae'r llyfrgell hidlo a gyflenwir yn ddiofyn yn eithaf cyfoethog ac, fel y crybwyllwyd eisoes, gellir ei ymestyn gyda hidlwyr o'n dyluniad ein hunain. Ond yn gyntaf, gadewch i ni ddisgrifio'r hidlwyr parod sy'n dod gyda'r ffrydio cyfryngau. Dyma eu rhestr:
Hidlyddion sain
Dal a chwarae sain
- Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
- Sain brodorol Android (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
- Gwasanaeth Ciw Sain (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
- Gwasanaeth Uned Sain (Mac OS X)
- Celfyddydau (Linux): MS_ARTS_WRITE, MS_ARTS_READ
- DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
- Chwaraewr ffeil (ffeiliau amrwd/wav/pcap) (Linux): MS_FILE_PLAYER
- Chwaraewr ffeil (ffeiliau crai/wav) (Windows): MS_WINSND_READ
- Ysgrifennwch at ffeil (ffeiliau wav) (Linux): MS_FILE_REC
- Ysgrifennwch at ffeil (ffeiliau wav) (Windows): MS_WINSND_WRITE
- Uned Sain 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
- Sain Windows (Windows)
Amgodio/datgodio sain
- G.711 a-law: MS_ALAW_DEC, MS_ALAW_ENC
- G.711 µ-cyfraith: 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 llinellol: MS_L16_ENC, MS_L16_DEC
- Siarad: MS_SPEEX_ENC, MS_SPEEX_DEC
Prosesu sain
- Trosi sianel (mono-> stereo, stereo-> mono): MS_CHANNEL_ADAPTER
- Cynhadledd: MS_CONF
- Cynhyrchydd DTMF: MS_DTMF_GEN
- Canslo adlais (speex): MS_SPEEX_EC
- Cyfartaledd: MS_EQUALIZER
- Cymysgydd: MS_MIXER
- Digolledwr Colled Pecyn (PLC): MS_GENERIC_PLC
- Ailsamplydd: MS_RESAMPLE
- Synhwyrydd tôn: MS_TONE_DETECTOR
- Rheoli cyfaint a mesur lefel signal: MS_VOLUME
Hidlyddion fideo
Dal fideo a chwarae yn ôl
- dal android
- chwarae android
- Cipio Sylfaen AV (iOS)
- Chwarae AV Foundation (iOS)
- DirectShow Capture (Windows)
- Chwarae DrawDib (Windows)
- Chwarae allanol - Anfon fideo i'r haen uchaf
- Chwarae GLX (Linux): MS_GLXVIDEO
- Mire - Llun symudol synthetig: MS_MIRE
- Chwarae OpenGL (Mac OS X)
- Chwarae OpenGL ES2 (Android)
- Dal Quicktime (Mac OS X)
- Chwarae SDL: MS_SDL_OUT
- Allbwn delwedd statig: MS_STATIC_IMAGE
- Fideo Ar gyfer Linux (V4L) dal (Linux): MS_V4L
- Fideo Ar gyfer cipio Linux 2 (V4L2) (Linux): MS_V4L2_CAPTURE
- Cipio Video4windows (DirectShow) (Windows)
- Cipio Video4windows (DirectShow) (Windows CE)
- Cipio Fideo Ar Gyfer Windows (vfw) (Windows)
- Chwarae XV (Linux)
Amgodio/datgodio fideo
- H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Eira: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
- H.264 (datgodiwr yn unig): MS_H264_DEC
- Theora: MS_THEORA_ENC, MS_THEORA_DEC
- VP8: MS_VP8_ENC, MS_VP8_DEC
Prosesu fideo
- ciplun jpeg
- Trawsnewidydd fformat picsel: MS_PIX_CONV
- Resizer
- Hidlyddion eraill
- Cyfnewid blociau data rhwng edafedd: MS_ITC_SOURCE, MS_ITC_SINK
- Casglu blociau o ddata o fewnbynnau lluosog i un allbwn: MS_JOIN
- Derbyn/trosglwyddo RTP: MS_RTP_SEND, MS_RTP_RECV
- Copïo data mewnbwn i allbynnau lluosog: MS_TEE
- Llwyth wedi'i derfynu: MS_VOID_SINK
- Ffynhonnell Tawelwch: MS_VOID_SOURCE
Ategion
Hidlyddion sain
- Amgodiwr/datgodiwr AMR-NB
- G.729 amgodiwr/datgodiwr
- amgodiwr/datgodiwr iLBC
- SILK amgodiwr/datgodiwr
Hidlyddion fideo
- Amgodiwr meddalwedd H.264
- Amgodiwr/datgodiwr carlam caledwedd H.264 V4L2
Ar ôl disgrifiad byr o'r hidlydd, dangosir enw'r math, a ddefnyddir wrth greu enghraifft newydd o'r hidlydd hwn. Yn yr hyn a ganlyn, byddwn yn cyfeirio at y rhestr hon.
Gosod o dan Linux Ubuntu
Nawr byddwn yn gosod y streamer cyfryngau ar y cyfrifiadur ac yn adeiladu ein cais cyntaf ag ef.
Nid oes angen unrhyw sgiliau arbennig i osod Mediastremer2 ar gyfrifiadur neu beiriant rhithwir sy'n rhedeg Ubuntu. Yma ac isod, bydd y symbol "$" yn dynodi'r anogwr plisgyn ar gyfer mynd i mewn i orchmynion. Y rhai. os gwelwch y symbol hwn yn y rhestriad ar ddechrau'r llinell, yna dyma'r llinell lle dangosir bod gorchmynion yn cael eu gweithredu yn y derfynell.
Tybir, yn ystod y camau yn yr erthygl hon, bod gan eich cyfrifiadur fynediad i'r Rhyngrwyd.
Gosod y pecyn libmediastremer-dev
Lansiwch y derfynell a theipiwch y gorchymyn:
$ sudo apt-get update
Gofynnir i chi am gyfrinair i wneud newidiadau, ei nodi a bydd y rheolwr pecyn yn diweddaru ei gronfeydd data. Ar ôl hynny, mae angen i chi redeg:
$ sudo apt-get install libmediastreamer-dev
Bydd y pecynnau dibyniaeth angenrheidiol a'r llyfrgell ffrydio cyfryngau ei hun yn cael eu lawrlwytho a'u gosod yn awtomatig.
Cyfanswm maint y pecynnau dadlwythiad dibyniaeth fydd tua 35 MB. Gellir dod o hyd i fanylion am y pecyn wedi'i osod gyda'r gorchymyn:
$ dpkg -s libmediastreamer-dev
Enghraifft ateb:
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/
Gosod offer datblygu
Gosodwch y casglwr C a'i offer cysylltiedig:
$ sudo apt-get install gcc
Rydym yn gwirio'r canlyniad trwy gwestiynu'r fersiwn casglwr:
$ gcc --version
Dylai'r ateb fod yn rhywbeth fel hyn:
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.
Adeiladu a Rhedeg y Cais Treial
Rydym yn creu i mewn cartref ffolder ar gyfer ein prosiectau tiwtorial, gadewch i ni ei alw mstutorial:
$ mkdir ~/mstutorial
Defnyddiwch eich hoff olygydd testun a chreu ffeil rhaglen C o'r enw mstest.c gyda'r cynnwys canlynol:
#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
ms_init();
printf ("Mediastreamer is ready.n");
}
Mae'n cychwyn y ffrwdwr cyfryngau, yn argraffu cyfarchiad, ac yn gadael.
Arbedwch y ffeil a lluniwch y cais prawf gyda'r gorchymyn:
$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`
Sylwch fod y llinell
`pkg-config mediastreamer --libs --cflags`
wedi'u hamgáu mewn dyfynodau, sydd wedi'u lleoli ar y bysellfwrdd yn yr un lle â'r llythyren "Ё".
Os nad yw'r ffeil yn cynnwys gwallau, yna ar ôl ei llunio bydd ffeil yn ymddangos yn y cyfeiriadur mstest. Rydyn ni'n dechrau'r rhaglen:
$ ./mstest
Bydd y canlyniad fel hyn:
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.
Yn y rhestriad hwn, gwelwn y negeseuon gwall y mae llyfrgell ALSA yn eu harddangos, fe'i defnyddir i reoli'r cerdyn sain. Mae datblygwyr y streamer cyfryngau eu hunain yn credu bod hyn yn normal. Yn yr achos hwn, rydym yn anfoddog yn cytuno â nhw.
Nawr rydyn ni i gyd ar fin gweithio gyda'r ffrwdiwr cyfryngau. Rydym wedi gosod y llyfrgell ffrydio cyfryngau, yr offeryn crynhoi, a chan ddefnyddio cymhwysiad prawf, wedi gwirio bod yr offer wedi'u ffurfweddu a bod y ffrwdiwr cyfryngau yn cychwyn yn llwyddiannus.
Nesaf
Ffynhonnell: hab.com