Mediastreamer2 VoIP انجڻ جي ڳولا. حصو 1

مضمون جو مواد منهنجي طرفان ورتو ويو آهي زين چينل.

تعارف

هي آرٽيڪل ميڊيا اسٽريمر2 انجڻ استعمال ڪندي حقيقي وقت جي ميڊيا پروسيسنگ بابت آرٽيڪل جي هڪ سيريز جي شروعات آهي. پريزنٽيشن ۾ لينڪس ٽرمينل ۾ ڪم ڪرڻ جي گھٽ ۾ گھٽ صلاحيتن ۽ سي ٻولي ۾ پروگرامنگ شامل هوندي.

Mediastreamer2 مشهور اوپن سورس سافٽ ويئر voip فون پروجيڪٽ جي پويان VoIP انجڻ آهي. لنفون. Linphone Mediastreamer2 ۾ آواز ۽ وڊيو سان لاڳاپيل سڀني ڪمن کي لاڳو ڪري ٿو. انجڻ جي خاصيتن جي تفصيلي فهرست ڏسي سگھجي ٿي ھن Mediastreamer صفحي تي. ذريعو ڪوڊ هتي آهي: GitLab.

وڌيڪ متن ۾، سهولت لاء، لفظ Mediastreamer2 جي بدران اسين استعمال ڪنداسين ان جي روسي نوٽ: "ميڊيا اسٽريمر".

ان جي تخليق جي تاريخ مڪمل طور تي واضح نه آهي، پر ان جي ماخذ ڪوڊ جي لحاظ کان، اهو اڳ ۾ لائبريري استعمال ڪيو. گليب، جيڪو، جيئن ته هو، اشارو ڪري ٿو ممڪن دور جي رشتي سان GStreamer. جنهن جي مقابلي ۾ ميڊيا اسٽريمر وڌيڪ هلڪو نظر اچي ٿو. Linphone جو پهريون نسخو 2001 ۾ ظاهر ٿيو، تنهنڪري هن وقت ميڊيا اسٽريمر موجود آهي ۽ تقريبا 20 سالن تائين ترقي ڪري ٿو.

ميڊيا اسٽريمر جي دل ۾ هڪ فن تعمير آهي جنهن کي "ڊيٽا فلو" (ڊيٽا فلو) سڏيو ويندو آهي. اهڙي فن تعمير جو هڪ مثال هيٺ ڏنل شڪل ۾ ڏيکاريل آهي.

Mediastreamer2 VoIP انجڻ جي ڳولا. حصو 1

هن فن تعمير ۾، ڊيٽا پروسيسنگ الورورٿم بيان ڪيو ويو آهي هڪ پروگرام ڪوڊ طرفان نه، پر هڪ اسڪيم (گراف) ذريعي ڳنڍڻ جي ڪمن لاء جيڪو ڪنهن به ترتيب ۾ ترتيب ڏئي سگهجي ٿو. انهن ڪمن کي فلٽر چئبو آهي.

هي فن تعمير اهو ممڪن بڻائي ٿو ته ميڊيا پروسيسنگ ڪارڪردگي کي لاڳو ڪرڻ لاء فلٽر جي هڪ سيٽ جي صورت ۾ هڪ منصوبي ۾ ڳنڍيل هڪ VoIP فون جي RTP ٽرئفڪ کي پروسيسنگ ۽ منتقل ڪرڻ لاء.

صوابديدي اسڪيمن ۾ فلٽرن کي گڏ ڪرڻ جي صلاحيت، نون فلٽرن جي سادي ترقي، ميڊيا اسٽريمر کي هڪ آزاد الڳ لائبريري جي طور تي لاڳو ڪرڻ، ان کي ٻين منصوبن ۾ استعمال ڪرڻ جي اجازت ڏيو. ان کان علاوه، پروجيڪٽ VoIP جي ميدان ۾ ٿي سگهي ٿو، ڇاڪاڻ ته اهو ممڪن آهي ته فلٽر پنهنجو پاڻ کي شامل ڪرڻ لاء.

ڊفالٽ طرفان فراهم ڪيل فلٽر لائبريري ڪافي امير آهي ۽، جيئن اڳ ۾ ئي ذڪر ڪيو ويو آهي، اسان جي پنهنجي ڊزائن جي فلٽرن سان وڌايو وڃي ٿو. پر پهرين، اچو ته بيان ڪريون تيار ڪيل فلٽر جيڪي ميڊيا اسٽريمر سان گڏ ايندا آهن. هتي انهن جي فهرست آهي:

آواز فلٽر

آڊيو پڪڙڻ ۽ پلے بیک

  • السا (لينڪس): 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)
  • آرٽس (لينڪس): MS_ARTS_WRITE، MS_ARTS_READ
  • سڌو آواز (ونڊوز): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • فائيل پليئر (raw/wav/pcap فائلون) (Linux): MS_FILE_PLAYER
  • فائل پليئر (را/wav فائلون) (ونڊوز): MS_WINSND_READ
  • فائل ۾ لکو (wav فائلون) (لينڪس): MS_FILE_REC
  • فائل ۾ لکو (wav فائلون) (ونڊوز): MS_WINSND_WRITE
  • ميڪ آڊيو يونٽ (Mac OS X)
  • ايم ايم اي (ونڊوز)
  • او ايس ايس (لينڪس): MS_OSS_WRITE، MS_OSS_READ
  • پورٽ آڊيو (Mac OS X)
  • پلس آڊيو (لينڪس): MS_PULSE_WRITE، MS_PULSE_READ
  • ونڊوز آواز (ونڊوز)

آڊيو انڪوڊنگ/ڊيڪوڊنگ

  • 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
  • جي ايس ايم: 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)
  • Direct Show Capture (ونڊوز)
  • DrawDib پلے بیک (ونڊوز)
  • خارجي پلے بیک - وڊيو موڪلڻ مٿئين پرت تي
  • GLX پلے بیک (Linux): MS_GLXVIDEO
  • مائر - مصنوعي حرڪت واري تصوير: MS_MIRE
  • OpenGL پلے بیک (Mac OS X)
  • OpenGL ES2 پلے بیک (Android)
  • QuickTime Capture (Mac OS X)
  • SDL پلے بیک: MS_SDL_OUT
  • جامد تصويري پيداوار: MS_STATIC_IMAGE
  • لينڪس (V4L) جي قبضي لاءِ وڊيو (لينڪس): MS_V4L
  • وڊيو لاءِ لينڪس 2 (V4L2) ڪيپچر (لينڪس): MS_V4L2_CAPTURE
  • وڊيو 4 ونڊوز (ڊائريڪٽ شو) ڪيپچر (ونڊوز)
  • وڊيو 4 ونڊوز (ڊائريڪٽ شو) ڪيپچر (ونڊوز سي اي)
  • ونڊوز لاءِ وڊيو (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_THIORA_ENC، MS_THIORA_DEC
  • VP8: MS_VP8_ENC، MS_VP8_DEC

وڊيو پروسيسنگ

  • jpeg سنيپ شاٽ
  • پکسل فارميٽ ڪنورٽر: MS_PIX_CONV
  • ريزيزر
  • ٻيا فلٽر
  • سلسلي جي وچ ۾ ڊيٽا بلاڪ جي مٽاسٽا: MS_ITC_SOURCE, MS_ITC_SINK
  • ڪيترن ئي ان پٽن مان ڊيٽا جا بلاڪ گڏ ڪرڻ هڪ واحد آئوٽ تائين: MS_JOIN
  • آر ٽي پي وصول/ منتقلي: 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 هارڊويئر تيز رفتار انڪوڊر/ڊيڪوڊر

فلٽر جي مختصر وضاحت کان پوء، قسم جو نالو ڏيکاريو ويو آھي، جيڪو استعمال ڪيو ويندو آھي جڏھن ھن فلٽر جو نئون مثال ٺاھيو. هيٺين ۾، اسان هن فهرست جو حوالو ڏينداسين.

لينڪس Ubuntu تحت انسٽاليشن

هاڻي اسان ڪمپيوٽر تي ميڊيا اسٽريمر انسٽال ڪنداسين ۽ ان سان گڏ اسان جي پهرين ايپليڪيشن ٺاهينداسين.

Ubuntu تي هلندڙ ڪمپيوٽر يا ورچوئل مشين تي Mediastremer2 انسٽال ڪرڻ ڪنهن خاص صلاحيتن جي ضرورت ناهي. هتي ۽ هيٺ، علامت "$" حڪم داخل ڪرڻ لاء شيل پرامپٽ کي ظاهر ڪندو. اهي. جيڪڏهن لسٽنگ ۾ توهان ڏسندا هي علامت لڪير جي شروعات ۾، پوء هي اها لائن آهي جنهن ۾ ڪمانڊ ڏيکاريا ويندا آهن ٽرمينل ۾ عمل ڪيو وڃي.

اهو فرض ڪيو ويو آهي ته هن آرٽيڪل ۾ قدمن دوران، توهان جي ڪمپيوٽر کي انٽرنيٽ تائين رسائي آهي.

libmediastremer-dev پيڪيج کي انسٽال ڪرڻ

ٽرمينل لانچ ڪريو ۽ حڪم ٽائپ ڪريو:

$ sudo apt-get update

توھان کان پڇيو ويندو پاسورڊ تبديل ڪرڻ لاءِ، ان کي داخل ڪريو ۽ پيڪيج مينيجر ان جي ڊيٽابيس کي اپڊيٽ ڪندو. ان کان پوء، توهان کي هلائڻ جي ضرورت آهي:

$ sudo apt-get install libmediastreamer-dev

ضروري انحصار پيڪيجز ۽ ميڊيا اسٽريمر لائبريري پاڻمرادو ڊائون لوڊ ۽ انسٽال ٿي ويندي.

ڊائون لوڊ ٿيل انحصار ڊيب پيڪيجز جي ڪل سائيز لڳ ڀڳ 35 MB هوندي. انسٽال ٿيل پيڪيج بابت تفصيل ڏنل حڪم سان ڳولهي سگهجن ٿا:

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

آزمائشي ايپليڪيشن جي تعمير ۽ هلائڻ

اسان اندر ٺاهيندا آهيون گهر اسان جي سبق جي منصوبن لاء فولڊر، اچو ته ان کي سڏين سکيا وارو:

$ mkdir ~/mstutorial

پنھنجو پسنديده ٽيڪسٽ ايڊيٽر استعمال ڪريو ۽ ٺاھيو سي پروگرام فائل سڏيو ويندو آھي 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