Π˜Π·ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ VoIP двигатСля Mediastreamer2. Част 1

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŠΡ‚ Π½Π° статията Π΅ Π²Π·Π΅Ρ‚ ΠΎΡ‚ моя Π΄Π·Π΅Π½-ΠΊΠ°Π½Π°Π».

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’Π°Π·ΠΈ статия Π΅ Π½Π°Ρ‡Π°Π»ΠΎ Π½Π° сСрия ΠΎΡ‚ статии Π·Π° Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΠ°Π΄Π°Π½ΠΈΠ° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π΄Π²ΠΈΠΆΠΊΠ° Mediastreamer2. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ умСния Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π½Π° Linux ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C.

Mediastreamer2 Π΅ VoIP Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ стои Π² основата Π½Π° популярния open-source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ софтуСрСн voip Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½. Linphone. Π’ Linphone, Mediastreamer2 Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° всички Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ със Π·Π²ΡƒΠΊ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π΅Π½ списък с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° двигатСля ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС видян Π½Π° Ρ‚Π°Π·ΠΈ страница Mediastreamer. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ сС Π½Π°ΠΌΠΈΡ€Π° Ρ‚ΡƒΠΊ: GitLab.

Π’ тСкста ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, Π·Π° удобство, вмСсто Π΄ΡƒΠΌΠ°Ρ‚Π° Mediastreamer2, Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ руската ΠΌΡƒ нотация: "мСдиастримСр".

Π˜ΡΡ‚ΠΎΡ€ΠΈΡΡ‚Π° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ създаванС Π½Π΅ Π΅ напълно ясна, Π½ΠΎ судСйки ΠΏΠΎ нСговия ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄, Ρ‚ΠΎΠΉ ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Glib, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ подсказва Π·Π° Π΅Π²Π΅Π½Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΌΡƒ Π΄Π°Π»Π΅Ρ‡Π½Π° родствСница с GStreamer. Π’ сравнСниС с Π½Π΅Π³ΠΎ, мСдиастримСр ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ-Π»Π΅ΠΊ. ΠŸΡŠΡ€Π²Π°Ρ‚Π° вСрсия Π½Π° Linphone Π΅ излязла ΠΏΡ€Π΅Π· 2001 Π³ΠΎΠ΄ΠΈΠ½Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° мСдиастримСр ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΈ сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π²Π΅Ρ‡Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ.

Π’ основата Π½Π° мСдиастримСра Π»Π΅ΠΆΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° "Data flow" (ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚Π°ΠΊΠ°Π²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·Π΅Π½ Π½Π° схСмата ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Π˜Π·ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ VoIP двигатСля Mediastreamer2. Част 1

Π’ Ρ‚Π°Π·ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π΅ ΠΎΡ‚ програмния ΠΊΠΎΠ΄, Π° ΠΎΡ‚ схСма (Π³Ρ€Π°Ρ„) Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Ρ€Π΅Π΄. Π’Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ.

Π’Π°ΠΊΠ°Π²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° позволява Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° функционалността Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΠ° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Π² схСма Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° RTP Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° VoIP Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‚Π΅ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ схСми, лСсното Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° мСдиастримСра ΠΊΠ°Ρ‚ΠΎ самостоятСлна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, позволяват Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π² сфСрата Π½Π° VoIP, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° добавятС Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΎΡ‚ вас.

ДоставСната ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΡ‚ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π΅ доста Π±ΠΎΠ³Π°Ρ‚Π° ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ бСшС спомСнато, ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° с Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΎΡ‚ вас. Но ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ опишСм Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ пристигат с мСдиастримСра. Π•Ρ‚ΠΎ тСхния списък:

Π—Π²ΡƒΠΊΠΎΠ²ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ

УлавянС ΠΈ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π·Π²ΡƒΠΊ

  • Alsa (Linux): MS_ALSA_WRITE, MS_ALSA_READ
  • Android native sound (libmedia): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • Audio Queue Service (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • Audio Unit Service (Mac OS X)
  • Arts (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 Audio Unit (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 Sound (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
  • Π›ΠΈΠ½Π΅ΠΉΠ½Π° ИКМ: MS_L16_ENC, MS_L16_DEC
  • Speex: 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 Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Windows)
  • DrawDib Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (Windows)
  • Π’ΡŠΠ½ΡˆΠ½ΠΎ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ β€” Π˜Π·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ Π½Π° Π³ΠΎΡ€Π½ΠΎ Π½ΠΈΠ²ΠΎ
  • GLX Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (Linux): MS_GLXVIDEO
  • Mire β€” Π‘ΠΈΠ½Ρ‚Π΅Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅Ρ‰ΠΎ сС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: MS_MIRE
  • OpenGL Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (Mac OS X)
  • OpenGL ES2 Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (Android)
  • Quicktime Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Mac OS X)
  • SDL Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅: MS_SDL_OUT
  • ИзвСТданС Π½Π° статични изобраТСния: MS_STATIC_IMAGE
  • Video For Linux (V4L) Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Linux): MS_V4L
  • Video For Linux 2 (V4L2) Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Windows)
  • Video4windows (DirectShow) Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Windows CE)
  • Video For Windows (vfw) Π·Π°Ρ…Π²Π°Ρ‰Π°Π½Π΅ (Windows)
  • XV Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ (Linux)

ΠšΠΎΠ΄ΠΈΡ€Π°Π½Π΅/Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, Snow: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (само Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€): MS_H264_DEC
  • Theora: 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 Π½Π΅ изисква спСциални умСния. Π’ΡƒΠΊ ΠΈ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŠΡ‚ Β«$Β» Ρ‰Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΏΠΎΠ΄ΠΊΠ°Π½Π°Ρ‚Π° Π½Π° shell Π·Π° въвСТданС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. Π’.Π΅. Π°ΠΊΠΎ Π² листинга Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ символ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ€Π΅Π΄Π°, Π·Π½Π°Ρ‡ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Ρ€Π΅Π΄, Π² ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π·Π° изпълнСниС Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° дСйствията, описани Π² Ρ‚Π°Π·ΠΈ статия, Π²Π°ΡˆΠΈΡΡ‚ ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° libmediastremer-dev

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ въвСТдамС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$ sudo apt-get update

Π©Π΅ бъдС поискан ΠΏΠ°Ρ€ΠΎΠ»Π° Π·Π° въвСТданС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ я ΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΡŠΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Ρ‰Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈ своитС Π±Π°Π·ΠΈ. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅:

$ sudo apt-get install libmediastreamer-dev

Автоматично Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΈ ΠΈ инсталирани Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ зависимости ΠΈ самата Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° мСдиастримСра.

ΠžΠ±Ρ‰ΠΈΡΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΈΠ·Ρ‚Π΅Π³Π»Π΅Π½ΠΈΡ‚Π΅ deb-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ зависимости Ρ‰Π΅ бъдС ΠΎΠΊΠΎΠ»ΠΎ 35 MB. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π·Π° инсталирания ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

$ dpkg -s libmediastreamer-dev

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€:

Package: libmediastreamer-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 244
Maintainer: Ubuntu Developers 
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 
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.

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈ стартиранС Π½Π° ΠΏΡ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

БъздавамС Π² home ΠΏΠ°ΠΏΠΊΠ° Π·Π° Π½Π°ΡˆΠΈΡ‚Π΅ ΡƒΡ‡Π΅Π±Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, която Ρ‰Π΅ Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌ 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) НСпознати ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ 0
ALSA lib control.c:954:(snd_ctl_open_noupdate) НСвалидСн CTL default:0
ortp-warning-НС успяхмС Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ миксСра с ΠΊΠ°Ρ€Ρ‚Π°Ρ‚Π°: НСвалидСн Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚
ALSA lib conf.c:4738:(snd_config_expand) НСпознати ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) НСпознат PCM default:0
ALSA lib conf.c:4738:(snd_config_expand) НСпознати ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) НСпознат PCM default:0
ortp-warning-Π‘Ρ‚Ρ€Π°Π½Π½ΠΎ, Π·Π²ΡƒΠΊΠΎΠ²Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° HDA Intel PCH ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ Π΅ способна Π½Π° Π½ΠΈΡ‰ΠΎ, ΠΎΠΏΠΈΡ‚Π²Π°ΠΌΠ΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ с plughw...
Mediastreamer Π΅ Π³ΠΎΡ‚ΠΎΠ².

Π’ Ρ‚ΠΎΠ·ΠΈ листинг Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ALSA ΠΈΠ·Π²Π΅ΠΆΠ΄Π°, Ρ‚ΠΎΠΉ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π²ΡƒΠΊΠΎΠ²Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°. Π‘Π°ΠΌΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° мСдиастримСра смятат, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ. НиС Π² Ρ‚ΠΎΠ·ΠΈ случай ΠΏΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π° Ρ‰Π΅ сС съгласим с тях.

Π‘Π΅Π³Π° всичко Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с мСдиастримСра. НиС инсталирахмС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π° мСдиастримСра, инструмСнта Π·Π° компилация ΠΈ с тСстовото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ инструмСнтитС са ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ ΠΈ мСдиастримСра сС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Π’ слСдващата статията Ρ‰Π΅ създадСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈ ΠΈ стартира ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° звуковия сигнал Π² Π²Π΅Ρ€ΠΈΠ³Π° ΠΎΡ‚ няколко Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster