Maqolaning materiali mendan olingan
kirish
Ushbu maqola Mediastreamer2 dvigatelidan foydalangan holda real vaqtda mediani qayta ishlashga oid maqolalar seriyasining boshlanishidir. Taqdimot Linux terminalida ishlash va C tilida dasturlash bo'yicha minimal ko'nikmalarni o'z ichiga oladi.
Mediastreamer2 mashhur ochiq kodli dasturiy ta'minot voip telefon loyihasi ortidagi VoIP dvigatelidir.
Keyinchalik matnda, qulaylik uchun, Mediastreamer2 so'zi o'rniga biz uning ruscha yozuvidan foydalanamiz: "media streamer".
Uning yaratilish tarixi to'liq aniq emas, lekin uning manba kodiga ko'ra, u ilgari kutubxonadan foydalangan
Media-strimerning markazida "Ma'lumotlar oqimi" (ma'lumotlar oqimi) deb nomlangan arxitektura mavjud. Bunday arxitekturaning namunasi quyidagi rasmda ko'rsatilgan.
Ushbu arxitekturada ma'lumotlarni qayta ishlash algoritmi dastur kodi bilan emas, balki istalgan tartibda joylashishi mumkin bo'lgan funktsiyalarni ulash sxemasi (grafigi) bilan belgilanadi. Ushbu funktsiyalar filtrlar deb ataladi.
Ushbu arxitektura ommaviy axborot vositalarini qayta ishlash funksiyasini VoIP telefonining RTP trafikni qayta ishlash va uzatish sxemasiga ulangan filtrlar to'plami shaklida amalga oshirish imkonini beradi.
Filtrlarni o'zboshimchalik bilan sxemalarga birlashtirish qobiliyati, yangi filtrlarni oddiy ishlab chiqish, media-strimerni mustaqil alohida kutubxona sifatida amalga oshirish uni boshqa loyihalarda qo'llash imkonini beradi. Bundan tashqari, loyiha VoIP sohasida bo'lishi mumkin, chunki siz o'zingiz yaratgan filtrlarni qo'shishingiz mumkin.
Sukut bo'yicha taqdim etilgan filtr kutubxonasi juda boy va yuqorida aytib o'tilganidek, o'z dizaynimizdagi filtrlar bilan kengaytirilishi mumkin. Lekin, avvalo, media-strimer bilan birga keladigan tayyor filtrlarni tasvirlab beraylik. Mana ularning ro'yxati:
Ovoz filtrlari
Audio yozib olish va tinglash
- Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
- Android mahalliy ovozi (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
- Audio navbat xizmati (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
- Audio birlik xizmati (Mac OS X)
- Arts (Linux): MS_ARTS_WRITE, MS_ARTS_READ
- DirectSound (Windows): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
- Fayl pleyeri (raw/wav/pcap fayllari) (Linux): MS_FILE_PLAYER
- Fayl pleyeri (raw/wav fayllar) (Windows): MS_WINSND_READ
- Faylga yozish (wav fayllari) (Linux): MS_FILE_REC
- Faylga yozish (wav fayllari) (Windows): MS_WINSND_WRITE
- Mac audio birligi (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 ovozi (Windows)
Ovozni kodlash/dekodlash
- G.711 qonuni: MS_ALAW_DEC, MS_ALAW_ENC
- G.711 Β΅-qonun: 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
- Chiziqli PCM: MS_L16_ENC, MS_L16_DEC
- Tezlik: MS_SPEEX_ENC, MS_SPEEX_DEC
Ovozni qayta ishlash
- Kanal konvertatsiyasi (mono->stereo, stereo->mono): MS_CHANNEL_ADAPTER
- Konferentsiya: MS_CONF
- DTMF generatori: MS_DTMF_GEN
- Echo bekor qilish (speex): MS_SPEEX_EC
- Ekvalayzer: MS_EQUALIZER
- Mikser: MS_MIXER
- Paket yo'qotish kompensatori (PLC): MS_GENERIC_PLC
- Qayta namuna: MS_RESAMPLE
- Ohang detektori: MS_TONE_DETECTOR
- Ovoz balandligini boshqarish va signal darajasini o'lchash: MS_VOLUME
Video filtrlar
Videoga olish va ijro etish
- android suratga olish
- android ijrosi
- AV Foundation capture (iOS)
- AV Foundation ijrosi (iOS)
- DirectShow Capture (Windows)
- DrawDib ijrosi (Windows)
- Tashqi ijro - videoni yuqori qatlamga yuborish
- GLX ijrosi (Linux): MS_GLXVIDEO
- Mire - Sintetik harakatlanuvchi rasm: MS_MIRE
- OpenGL ijrosi (Mac OS X)
- OpenGL ES2 ijrosi (Android)
- Quicktime Capture (Mac OS X)
- SDL ijrosi: MS_SDL_OUT
- Statik tasvir chiqishi: MS_STATIC_IMAGE
- Linux uchun video (V4L) suratga olish (Linux): MS_V4L
- Linux 2 (V4L2) uchun video suratga olish (Linux): MS_V4L2_CAPTURE
- Video4windows (DirectShow) suratga olish (Windows)
- Video4windows (DirectShow) suratga olish (Windows CE)
- Windows uchun video (vfw) suratga olish (Windows)
- XV tinglash (Linux)
Videoni kodlash/dekodlash
- H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Qor: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
- H.264 (faqat dekoder): MS_H264_DEC
- Teora: MS_THEORA_ENC, MS_THEORA_DEC
- VP8: MS_VP8_ENC, MS_VP8_DEC
Videoni qayta ishlash
- jpeg surati
- Piksel formatini o'zgartiruvchi: MS_PIX_CONV
- Rezzer
- Boshqa filtrlar
- Ma'lumotlar bloklarini oqimlar o'rtasida almashish: MS_ITC_SOURCE, MS_ITC_SINK
- Bir nechta kirishdan bitta chiqishga ma'lumotlar bloklarini yig'ish: MS_JOIN
- RTP qabul qilish/uzatish: MS_RTP_SEND, MS_RTP_RECV
- Kirish ma'lumotlarini bir nechta chiqishlarga nusxalash: MS_TEE
- Tugatilgan yuk: MS_VOID_SINK
- Sukunat manbai: MS_VOID_SOURCE
Plaginlar
Ovoz filtrlari
- AMR-NB kodlovchi/dekoder
- G.729 kodlovchi/dekoder
- iLBC kodlovchi/dekoder
- SILK kodlovchi/dekoder
Video filtrlar
- H.264 dasturiy ta'minot enkoderi
- H.264 V4L2 apparat tezlashtirilgan kodlovchi/dekoder
Filtrning qisqacha tavsifidan so'ng, ushbu filtrning yangi nusxasini yaratishda foydalaniladigan turning nomi ko'rsatiladi. Quyida biz ushbu ro'yxatga murojaat qilamiz.
Linux Ubuntu ostida o'rnatish
Endi biz media strimerni kompyuterga o'rnatamiz va u bilan birinchi dasturimizni yaratamiz.
Mediastremer2-ni Ubuntu bilan ishlaydigan kompyuter yoki virtual mashinaga o'rnatish hech qanday maxsus ko'nikmalarni talab qilmaydi. Bu erda va pastda "$" belgisi buyruqlarni kiritish uchun qobiq so'rovini bildiradi. Bular. agar ro'yxatda siz ushbu belgini satr boshida ko'rsangiz, u holda terminalda buyruqlar bajarilishi ko'rsatilgan qatordir.
Ushbu maqoladagi qadamlar davomida sizning kompyuteringiz Internetga kirish imkoniga ega deb taxmin qilinadi.
libmediastremer-dev paketini o'rnatish
Terminalni ishga tushiring va buyruqni kiriting:
$ sudo apt-get update
O'zgartirishlar kiritish uchun sizdan parol so'raladi, uni kiriting va paket menejeri ma'lumotlar bazasini yangilaydi. Shundan so'ng siz yugurishingiz kerak:
$ sudo apt-get install libmediastreamer-dev
Zarur bo'lgan bog'liqlik paketlari va media-strimer kutubxonasining o'zi avtomatik ravishda yuklab olinadi va o'rnatiladi.
Yuklab olingan bog'liqlik deb paketlarining umumiy hajmi taxminan 35 MB bo'ladi. O'rnatilgan paket haqida ma'lumotni buyruq bilan topish mumkin:
$ dpkg -s libmediastreamer-dev
Javob misoli:
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/
Rivojlanish vositalarini o'rnatish
C kompilyatorini va unga qo'shimcha vositalarni o'rnating:
$ sudo apt-get install gcc
Natijani kompilyator versiyasini so'rash orqali tekshiramiz:
$ gcc --version
Javob shunday bo'lishi kerak:
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.
Sinov ilovasini yaratish va ishga tushirish
Biz yaratamiz uy o'quv loyihalarimiz uchun papka, keling, uni chaqiraylik mtutorial:
$ mkdir ~/mstutorial
Sevimli matn muharriridan foydalaning va C dasturi faylini yarating mstest.c quyidagi tarkib bilan:
#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
ms_init();
printf ("Mediastreamer is ready.n");
}
U media strimerni ishga tushiradi, salomlashishni chop etadi va chiqadi.
Faylni saqlang va sinov ilovasini buyruq bilan kompilyatsiya qiling:
$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`
E'tibor bering, chiziq
`pkg-config mediastreamer --libs --cflags`
qo'shtirnoq ichiga olinadi, ular klaviaturada "Yo" harfi bilan bir joyda joylashgan.
Agar faylda xatolar bo'lmasa, kompilyatsiya qilingandan so'ng katalogda fayl paydo bo'ladi mstest. Biz dasturni boshlaymiz:
$ ./mstest
Natija shunday bo'ladi:
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.
Ushbu ro'yxatda biz ALSA kutubxonasi ko'rsatadigan xato xabarlarini ko'ramiz, u ovoz kartasini boshqarish uchun ishlatiladi. Media-strimerni ishlab chiquvchilarning o'zlari buni normal holat deb hisoblashadi. Bu holatda biz ular bilan ixtiyoriy ravishda rozi bo'lamiz.
Endi biz barchamiz media strimer bilan ishlashga tayyormiz. Biz media-strimer kutubxonasini, kompilyatsiya vositasini o'rnatdik va sinov ilovasidan foydalanib, asboblar sozlanganligini va media strimeri muvaffaqiyatli ishga tushirilganligini tasdiqladik.
Keyingisi
Manba: www.habr.com