Мақала материалы менің сайтымнан алынды
Кіріспе
Бұл мақала Mediastreamer2 қозғалтқышы арқылы нақты уақыттағы медиа өңдеу туралы мақалалар сериясының басы болып табылады. Презентация Linux терминалында жұмыс істеудің және Си тілінде бағдарламалаудың минималды дағдыларын қамтиды.
Mediastreamer2 - танымал ашық бастапқы бағдарламалық қамтамасыз ету voip телефон жобасының артында тұрған VoIP қозғалтқышы.
Әрі қарай мәтінде ыңғайлы болу үшін Mediastreamer2 сөзінің орнына оның орысша белгісін қолданамыз: «медиа стримері».
Оның құрылу тарихы толығымен анық емес, бірақ оның бастапқы кодына қарағанда, ол бұрын кітапхананы пайдаланған
Медиа стримердің негізінде «Деректердің ағыны» (деректер ағыны) деп аталатын архитектура бар. Мұндай архитектураның мысалы төмендегі суретте көрсетілген.
Бұл архитектурада мәліметтерді өңдеу алгоритмі программалық кодпен емес, кез келген ретпен реттелетін функцияларды қосу схемасымен (графигі) көрсетіледі. Бұл функциялар сүзгілер деп аталады.
Бұл архитектура VoIP телефонының RTP трафикті өңдеу және беру схемасына қосылған сүзгілер жиынтығы түрінде медианы өңдеу функционалдығын жүзеге асыруға мүмкіндік береді.
Сүзгілерді ерікті схемаларға біріктіру мүмкіндігі, жаңа сүзгілердің қарапайым дамуы, медиа стримерін тәуелсіз жеке кітапхана ретінде жүзеге асыру оны басқа жобаларда пайдалануға мүмкіндік береді. Сонымен қатар, жоба VoIP саласында болуы мүмкін, өйткені ол өз қолымен жасалған сүзгілерді қосуға болады.
Әдепкі бойынша жеткізілетін сүзгі кітапханасы өте бай және жоғарыда айтылғандай, біздің жеке дизайндағы сүзгілермен кеңейтілуі мүмкін. Бірақ алдымен медиа ағынмен бірге келетін дайын сүзгілерді сипаттайық. Міне, олардың тізімі:
Дыбыс сүзгілері
Аудио түсіру және ойнату
- Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
- Android жергілікті дыбысы (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
- Аудио кезек қызметі (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
- Аудио бірлік қызметі (Mac OS X)
- Өнер (Linux): MS_ARTS_WRITE, MS_ARTS_READ
- DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
- Файл ойнатқышы (raw/wav/pcap файлдары) (Linux): MS_FILE_PLAYER
- Файл ойнатқышы (raw/wav файлдары) (Windows): MS_WINSND_READ
- Файлға жазу (wav файлдары) (Linux): MS_FILE_REC
- Файлға жазу (wav файлдары) (Windows): MS_WINSND_WRITE
- 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 дыбысы (Windows)
Аудио кодтау/декодтау
- G.711 a-заңы: MS_ALAW_DEC, MS_ALAW_ENC
- G.711 μ-заңы: 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: MS_L16_ENC, MS_L16_DEC
- Жылдамдық: MS_SPEEX_ENC, MS_SPEEX_DEC
Дыбысты өңдеу
- Арнаны түрлендіру (моно->стерео, стерео->моно): MS_CHANNEL_ADAPTER
- Конференция: MS_CONF
- DTMF генераторы: MS_DTMF_GEN
- Эходы жою (speex): MS_SPEEX_EC
- Эквалайзер: MS_EQUALIZER
- Миксер: MS_MIXER
- Пакет жоғалуының компенсаторы (PLC): MS_GENERIC_PLC
- Қайта үлгілеуші: MS_RESAMPLE
- Тон детекторы: MS_TONE_DETECTOR
- Дыбыс деңгейін басқару және сигнал деңгейін өлшеу: MS_VOLUME
Бейне сүзгілері
Бейне түсіру және ойнату
- Android түсіру
- Android ойнату
- AV Foundation түсіру (iOS)
- AV Foundation ойнату (iOS)
- DirectShow Capture (Windows)
- DrawDib ойнату (Windows)
- Сыртқы ойнату - бейнені жоғарғы қабатқа жіберу
- GLX ойнату (Linux): MS_GLXVIDEO
- Mire - Синтетикалық қозғалмалы сурет: MS_MIRE
- OpenGL ойнату (Mac OS X)
- OpenGL ES2 ойнату (Android)
- Quicktime Capture (Mac OS X)
- SDL ойнату: MS_SDL_OUT
- Статикалық кескін шығысы: MS_STATIC_IMAGE
- Бейне Linux (V4L) үшін түсіру (Linux): MS_V4L
- Linux 2 (V4L2) үшін бейне түсіру (Linux): MS_V4L2_CAPTURE
- Video4windows (DirectShow) түсіру (Windows)
- Video4windows (DirectShow) түсіру (Windows CE)
- Бейне Windows үшін (vfw) түсіру (Windows)
- XV ойнату (Linux)
Бейнені кодтау/декодтау
- H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Қар: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
- H.264 (тек декодер): MS_H264_DEC
- Теора: MS_THEORA_ENC, MS_THEORA_DEC
- VP8: MS_VP8_ENC, MS_VP8_DEC
Бейне өңдеу
- jpeg суреті
- Пиксель пішімінің түрлендіргіші: MS_PIX_CONV
- Резерер
- Басқа сүзгілер
- Ағындар арасындағы деректер блоктарының алмасуы: MS_ITC_SOURCE, MS_ITC_SINK
- Бірнеше кірістен бір шығысқа деректер блоктарын жинау: MS_JOIN
- RTP қабылдау/беру: MS_RTP_SEND, MS_RTP_RECV
- Кіріс деректерін бірнеше шығыстарға көшіру: MS_TEE
- Аяқталған жүктеме: MS_VOID_SINK
- Үнсіздік көзі: MS_VOID_SOURCE
Плагиндер
Дыбыс сүзгілері
- AMR-NB кодер/декодер
- G.729 кодер/декодер
- iLBC кодер/декодер
- SILK кодер/декодер
Бейне сүзгілері
- H.264 бағдарламалық кодтары
- H.264 V4L2 аппараттық жеделдетілген кодтауыш/декодер
Сүзгінің қысқаша сипаттамасынан кейін осы сүзгінің жаңа данасын жасау кезінде қолданылатын түрдің атауы көрсетіледі. Келесіде біз бұл тізімге жүгінеміз.
Linux Ubuntu астында орнату
Енді біз медиа ағынды компьютерге орнатамыз және онымен бірінші қосымшамызды құрастырамыз.
Mediastremer2 бағдарламасын Ubuntu іске қосылған компьютерге немесе виртуалды машинаға орнату арнайы дағдыларды қажет етпейді. Мұнда және төменде «$» таңбасы пәрмендерді енгізуге арналған қабықша шақыруды білдіреді. Анау. егер тізімде жолдың басында осы таңбаны көрсеңіз, онда бұл терминалда орындалатын пәрмендер көрсетілген жол.
Осы мақаладағы қадамдар кезінде сіздің компьютеріңіз Интернетке қол жеткізе алады деп болжанады.
libmediastremer-dev бумасын орнату
Терминалды іске қосыңыз және пәрменді теріңіз:
$ sudo apt-get update
Өзгерістер енгізу үшін сізден құпия сөз сұралады, оны енгізіңіз және пакет менеджері оның дерекқорларын жаңартады. Осыдан кейін сізге жүгіру керек:
$ sudo apt-get install libmediastreamer-dev
Қажетті тәуелділік бумалары мен медиа ағынды кітапхананың өзі автоматты түрде жүктеледі және орнатылады.
Жүктеп алынған тәуелділік деп аталатын бумалардың жалпы өлшемі шамамен 35 МБ болады. Орнатылған бума туралы мәліметтерді пәрмен арқылы табуға болады:
$ dpkg -s libmediastreamer-dev
Жауаптың үлгісі:
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/
Әзірлеу құралдарын орнату
C компиляторын және оның ілеспе құралдарын орнатыңыз:
$ sudo apt-get install gcc
Нәтижені компилятор нұсқасын сұрау арқылы тексереміз:
$ gcc --version
Жауап келесідей болуы керек:
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.
Сынақ қолданбасын құру және іске қосу
Біз жасаймыз үй оқулық жобаларымызға арналған қалта, оны шақырайық оқулық:
$ mkdir ~/mstutorial
Таңдаулы мәтіндік редакторды пайдаланыңыз және C деп аталатын бағдарлама файлын жасаңыз mstest.c келесі мазмұндағы:
#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
ms_init();
printf ("Mediastreamer is ready.n");
}
Ол мультимедиа ағынын инициализациялайды, сәлемдесуді басып шығарады және шығады.
Файлды сақтаңыз және сынақ қосымшасын пәрменмен құрастырыңыз:
$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`
сызық екенін ескеріңіз
`pkg-config mediastreamer --libs --cflags`
тырнақшаға алынады, олар пернетақтада «Ё» әрпімен бір жерде орналасқан.
Егер файлда қателер болмаса, компиляциядан кейін каталогта файл пайда болады mstest. Біз бағдарламаны бастаймыз:
$ ./mstest
Нәтиже келесідей болады:
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.
Бұл тізімде біз ALSA кітапханасы көрсететін қате туралы хабарларды көреміз, ол дыбыс картасын басқару үшін пайдаланылады. Медиа стримерді жасаушылардың өздері бұл қалыпты жағдай деп санайды. Бұл жағдайда біз олармен құлықсыз келісеміз.
Енді бәріміз медиа ағынмен жұмыс істеуге дайынбыз. Біз медиа ағындық кітапханасын, құрастыру құралын орнаттық және сынақ қолданбасын пайдаланып, құралдар конфигурацияланғанын және медиа ағынының сәтті іске қосылатынын тексердік.
Келесі
Ақпарат көзі: www.habr.com