Mediastreamer2 VoIP இன்ஜினை ஆராய்கிறது. பகுதி 1

கட்டுரையின் பொருள் என்னுடையது ஜென் சேனல்.

அறிமுகம்

இந்தக் கட்டுரை மீடியாஸ்ட்ரீமர்2 இன்ஜினைப் பயன்படுத்தி நிகழ்நேர மீடியா செயலாக்கத்தைப் பற்றிய தொடர் கட்டுரைகளின் தொடக்கமாகும். விளக்கக்காட்சியின் போது, ​​லினக்ஸ் டெர்மினலில் பணிபுரியும் குறைந்தபட்ச திறன்கள் மற்றும் சி மொழியில் நிரலாக்கம் ஆகியவை அடங்கும்.

மீடியாஸ்ட்ரீமர்2 என்பது பிரபலமான ஓப்பன் சோர்ஸ் சாப்ட்வேர் voip ஃபோன் திட்டத்தின் பின்னணியில் உள்ள VoIP இன்ஜின் ஆகும். லின்போன். லின்ஃபோனில் மீடியாஸ்ட்ரீமர்2 ஒலி மற்றும் வீடியோ தொடர்பான அனைத்து செயல்பாடுகளையும் செயல்படுத்துகிறது. எஞ்சின் அம்சங்களின் விரிவான பட்டியலை இந்த மீடியாஸ்ட்ரீமர் பக்கத்தில் காணலாம். மூல குறியீடு இங்கே: GitLab.

மேலும் உரையில், வசதிக்காக, மீடியாஸ்ட்ரீமர் 2 என்ற வார்த்தைக்கு பதிலாக அதன் ரஷ்ய குறியீட்டைப் பயன்படுத்துவோம்: "மீடியா ஸ்ட்ரீமர்".

அதன் உருவாக்கத்தின் வரலாறு முற்றிலும் தெளிவாக இல்லை, ஆனால் அதன் மூலக் குறியீட்டின் மூலம் ஆராயும்போது, ​​அது முன்பு நூலகத்தைப் பயன்படுத்தியது. கிளிப், இது, ஒரு சாத்தியமான தொலைதூர உறவைக் குறிக்கிறது GStreamer. அதனுடன் ஒப்பிடுகையில் மீடியா ஸ்ட்ரீமர் மிகவும் இலகுவாகத் தெரிகிறது. லின்ஃபோனின் முதல் பதிப்பு 2001 இல் தோன்றியது, எனவே இந்த நேரத்தில் மீடியா ஸ்ட்ரீமர் உள்ளது மற்றும் கிட்டத்தட்ட 20 ஆண்டுகளாக உருவாகிறது.

மீடியா ஸ்ட்ரீமரின் மையத்தில் "டேட்டா ஃப்ளோ" (தரவு ஓட்டம்) எனப்படும் கட்டிடக்கலை உள்ளது. அத்தகைய கட்டிடக்கலைக்கான எடுத்துக்காட்டு கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளது.

Mediastreamer2 VoIP இன்ஜினை ஆராய்கிறது. பகுதி 1

இந்த கட்டமைப்பில், தரவு செயலாக்க அல்காரிதம் ஒரு நிரல் குறியீட்டால் குறிப்பிடப்படவில்லை, ஆனால் எந்த வரிசையிலும் ஏற்பாடு செய்யக்கூடிய செயல்பாடுகளை இணைக்கும் திட்டம் (வரைபடம்) மூலம் குறிப்பிடப்படுகிறது. இந்த செயல்பாடுகள் வடிகட்டிகள் என்று அழைக்கப்படுகின்றன.

VoIP ஃபோனின் RTP போக்குவரத்தை செயலாக்குவதற்கும் அனுப்புவதற்கும் ஒரு திட்டத்தில் இணைக்கப்பட்ட வடிப்பான்களின் தொகுப்பின் வடிவத்தில் மீடியா செயலாக்க செயல்பாட்டைச் செயல்படுத்துவதை இந்தக் கட்டமைப்பு சாத்தியமாக்குகிறது.

வடிப்பான்களை தன்னிச்சையான திட்டங்களில் இணைக்கும் திறன், புதிய வடிப்பான்களின் எளிய வளர்ச்சி, மீடியா ஸ்ட்ரீமரை ஒரு சுயாதீனமான தனி நூலகமாக செயல்படுத்துதல், இது மற்ற திட்டங்களில் பயன்படுத்த அனுமதிக்கும். மேலும், திட்டம் VoIP துறையில் இருக்க முடியும், ஏனெனில் அது தன்னை உருவாக்கிய வடிகட்டிகள் சேர்க்க முடியும்.

முன்னிருப்பாக வழங்கப்பட்ட வடிகட்டி நூலகம் மிகவும் பணக்காரமானது மற்றும் ஏற்கனவே குறிப்பிட்டுள்ளபடி, உங்கள் சொந்த வடிவமைப்பின் வடிப்பான்களுடன் நீட்டிக்கப்படலாம். ஆனால் முதலில், மீடியா ஸ்ட்ரீமருடன் வரும் ரெடிமேட் ஃபில்டர்களை விவரிப்போம். அவற்றின் பட்டியல் இதோ:

ஒலி வடிகட்டிகள்

ஆடியோ பிடிப்பு மற்றும் பின்னணி

  • அல்சா (லினக்ஸ்): MS_ALSA_WRITE, MS_ALSA_READ
  • ஆண்ட்ராய்டு சொந்த ஒலி (லிப்மீடியா): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • ஆடியோ வரிசை சேவை (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • ஆடியோ யூனிட் சேவை (Mac OS X)
  • கலை (லினக்ஸ்): MS_ARTS_WRITE, MS_ARTS_READ
  • நேரடி ஒலி (விண்டோஸ்): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • கோப்பு பிளேயர் (raw/wav/pcap கோப்புகள்) (லினக்ஸ்): MS_FILE_PLAYER
  • கோப்பு பிளேயர் (raw/wav கோப்புகள்) (Windows): MS_WINSND_READ
  • கோப்பில் எழுதவும் (wav கோப்புகள்) (லினக்ஸ்): MS_FILE_REC
  • கோப்பில் எழுதவும் (wav கோப்புகள்) (Windows): MS_WINSND_WRITE
  • மேக் ஆடியோ யூனிட் (மேக் ஓஎஸ் எக்ஸ்)
  • MME (விண்டோஸ்)
  • OSS (லினக்ஸ்): MS_OSS_WRITE, MS_OSS_READ
  • PortAudio (Mac OS X)
  • பல்ஸ் ஆடியோ (லினக்ஸ்): MS_PULSE_WRITE, MS_PULSE_READ
  • விண்டோஸ் சவுண்ட் (விண்டோஸ்)

ஆடியோ என்கோடிங்/டிகோடிங்

  • G.711 a-law: 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
  • எதிரொலி ரத்து (ஸ்பீக்ஸ்): MS_SPEEX_EC
  • சமநிலைப்படுத்தி: MS_EQUALIZER
  • கலவை: MS_MIXER
  • பாக்கெட் இழப்பு இழப்பீடு (PLC): MS_GENERIC_PLC
  • மறு மாதிரி: MS_RESAMPLE
  • டோன் டிடெக்டர்: MS_TONE_DETECTOR
  • ஒலியளவு கட்டுப்பாடு மற்றும் சமிக்ஞை நிலை அளவீடு: MS_VOLUME

வீடியோ வடிப்பான்கள்

வீடியோ பிடிப்பு மற்றும் பின்னணி

  • android பிடிப்பு
  • android பின்னணி
  • AV அறக்கட்டளை பிடிப்பு (iOS)
  • AV அறக்கட்டளை பின்னணி (iOS)
  • டைரக்ட் ஷோ கேப்சர் (விண்டோஸ்)
  • DrawDib பிளேபேக் (விண்டோஸ்)
  • வெளிப்புற பின்னணி - மேல் அடுக்குக்கு வீடியோவை அனுப்புகிறது
  • GLX பிளேபேக் (லினக்ஸ்): MS_GLXVIDEO
  • மியர் - செயற்கை நகரும் படம்: MS_MIRE
  • OpenGL பிளேபேக் (Mac OS X)
  • OpenGL ES2 பிளேபேக் (Android)
  • குயிக்டைம் கேப்சர் (Mac OS X)
  • SDL பிளேபேக்: MS_SDL_OUT
  • நிலையான பட வெளியீடு: MS_STATIC_IMAGE
  • லினக்ஸிற்கான வீடியோ (V4L) பிடிப்பு (லினக்ஸ்): MS_V4L
  • Linux 2 (V4L2) பிடிப்புக்கான வீடியோ (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) பிடிப்பு (Windows)
  • Video4windows (DirectShow) பிடிப்பு (Windows CE)
  • விண்டோஸிற்கான வீடியோ (vfw) பிடிப்பு (விண்டோஸ்)
  • XV பிளேபேக் (லினக்ஸ்)

வீடியோ என்கோடிங்/டிகோடிங்

  • 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 என்கோடர்/டிகோடர்
  • சில்க் என்கோடர்/டிகோடர்

    வீடியோ வடிப்பான்கள்

  • H.264 மென்பொருள் குறியாக்கி
  • H.264 V4L2 வன்பொருள் முடுக்கப்பட்ட குறியாக்கி/டிகோடர்

வடிப்பானின் சிறிய விளக்கத்திற்குப் பிறகு, வகையின் பெயர் காட்டப்படும், இது இந்த வடிப்பானின் புதிய நிகழ்வை உருவாக்கும் போது பயன்படுத்தப்படுகிறது. அடுத்து, இந்த பட்டியலைப் பார்ப்போம்.

லினக்ஸ் உபுண்டுவின் கீழ் நிறுவல்

இப்போது மீடியா ஸ்ட்ரீமரை கணினியில் நிறுவி, அதன் மூலம் எங்கள் முதல் பயன்பாட்டை உருவாக்குவோம்.

உபுண்டு இயங்கும் கணினி அல்லது மெய்நிகர் கணினியில் Mediastremer2 ஐ நிறுவுவதற்கு சிறப்புத் திறன்கள் எதுவும் தேவையில்லை. இங்கே மற்றும் கீழே, "$" குறியீடு கட்டளைகளை உள்ளிடுவதற்கான ஷெல் வரியில் குறிக்கும். அந்த. பட்டியலில் வரியின் தொடக்கத்தில் இந்த குறியீட்டைக் கண்டால், இது முனையத்தில் கட்டளைகள் செயல்படுத்தப்படும் வரியாகும்.

இந்த கட்டுரையின் படிகளின் போது, ​​உங்கள் கணினியில் இணைய அணுகல் உள்ளது என்று கருதப்படுகிறது.

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/

மேம்பாட்டு கருவிகளை நிறுவுதல்

சி கம்பைலர் மற்றும் அதனுடன் இணைந்த கருவிகளை நிறுவவும்:

$ 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.

சோதனை விண்ணப்பத்தை உருவாக்குதல் மற்றும் இயக்குதல்

நாங்கள் உருவாக்குகிறோம் வீட்டில் எங்கள் டுடோரியல் திட்டங்களுக்கான கோப்புறை, அதை அழைப்போம் mstutorial:

$ 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