Π˜ΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° VoIP ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Mediastreamer2. Π”Π΅Π» 1

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π»ΠΎΡ‚ Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° Π΅ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Π½ ΠΎΠ΄ ΠΌΠΎΠ΅Ρ‚ΠΎ Π·Π΅Π½ ΠΊΠ°Π½Π°Π».

Π’ΠΎΠ²Π΅Π΄

Оваа ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π΅ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ Π½Π° ΡΠ΅Ρ€ΠΈΡ˜Π°Ρ‚Π° написи Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΡƒΠΌΠΈ Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ со помош Π½Π° ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Mediastreamer2. Π—Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ќС сС користат ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π²Π΅ΡˆΡ‚ΠΈΠ½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π²ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Линукс ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π¦.

Mediastreamer2 Π΅ VoIP ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Π·Π°Π΄ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈΠΎΡ‚ софтвСр со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Voip тСлСфонски ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π›ΠΈΠ½Ρ„ΠΎΠ½. Π’ΠΎ Linphone Mediastreamer2 Π³ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ситС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со Π·Π²ΡƒΠΊ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. Π”Π΅Ρ‚Π°Π»Π΅Π½ список Π½Π° карактСристики Π½Π° ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ Π½Π° ΠΎΠ²Π°Π° страница Π½Π° Mediastreamer. Π˜Π·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π΅ Ρ‚ΡƒΠΊΠ°: GitLab.

ΠŸΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ Π²ΠΎ тСкстот, Π·Π° погодност, намСсто Π·Π±ΠΎΡ€ΠΎΡ‚ Mediastreamer2 ќС ја користимС Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° руска Π½ΠΎΡ‚Π°Ρ†ΠΈΡ˜Π°: β€žmedia streamerβ€œ.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ создавањС Π½Π΅ Π΅ сосСма јасна, Π½ΠΎ ΡΡƒΠ΄Π΅Ρ˜ΡœΠΈ спорСд ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄, Ρ‚Π°Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ја користСла Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π“Π»ΠΈΠ±, ΡˆΡ‚ΠΎ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ бСшС, навСстува ΠΌΠΎΠΆΠ½Π° Π΄Π°Π»Π΅Ρ‡Π½Π° врска со GStreamer. Π—Π° спорСдба, мСдиумскиот стримСр ΠΈΠ·Π³Π»Π΅Π΄Π° полСсСн. ΠŸΡ€Π²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Linphone сС појави Π²ΠΎ 2001 Π³ΠΎΠ΄ΠΈΠ½Π°, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² мСдиумскиот стримСр постои ΠΈ сС Ρ€Π°Π·Π²ΠΈΠ²Π° рСчиси 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ.

Π’ΠΎ срцСто Π½Π° мСдиумскиот стримСр Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° β€žΠŸΡ€ΠΎΡ‚ΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈβ€œ (ΠΏΡ€ΠΎΡ‚ΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚Π°ΠΊΠ²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ Π½Π° сликата ΠΏΠΎΠ΄ΠΎΠ»Ρƒ.

Π˜ΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅ Π½Π° VoIP ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Mediastreamer2. Π”Π΅Π» 1

Π’ΠΎ ΠΎΠ²Π°Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π΅ Π΅ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ со програмски ΠΊΠΎΠ΄, Ρ‚ΡƒΠΊΡƒ со шСма (Π³Ρ€Π°Ρ„ΠΈΠΊ) Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ΄Ρ€Π΅Π΄Π°Ρ‚ ΠΏΠΎ кој Π±ΠΈΠ»ΠΎ рСдослСд. ОвиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ.

Оваа Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° функционалноста Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΡƒΠΌΠΈ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ° Π½Π° Π·Π±ΠΈΡ€ Π½Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ Π²ΠΎ шСма Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ прСнос Π½Π° RTP ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ VoIP.

Бпособноста Π΄Π° сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ Π²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ шСми, Сдноставниот Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° Π½ΠΎΠ²ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° мСдиумскиот стримСр ΠΊΠ°ΠΊΠΎ нСзависна посСбна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π΄Π° сС користи Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π²ΠΎ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π½Π° 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)
  • УмСтности (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
  • 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
  • Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° Π½Π° Π°Π½Π΄Ρ€ΠΎΠΈΠ΄
  • AV Foundation Capture (iOS)
  • Π Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° Π½Π° AV Foundation (iOS)
  • БнимањС DirectShow (Windows)
  • Π Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° Π½Π° DrawDib (Windows)
  • ΠΠ°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½Π° Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° - Π˜ΡΠΏΡ€Π°ΡœΠ°ΡšΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎ Π³ΠΎΡ€Π½ΠΈΠΎΡ‚ слој
  • Π Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° Π½Π° GLX (Linux): MS_GLXVIDEO
  • Mire - Π‘ΠΈΠ½Ρ‚Π΅Ρ‚ΠΈΡ‡ΠΊΠ° ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π° слика: MS_MIRE
  • Π Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° Π½Π° OpenGL (Mac OS X)
  • Π Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡ˜Π° Π½Π° OpenGL ES2 (Андроид)
  • 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 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/

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ 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.

Π˜Π·Π³Ρ€Π°Π΄Π±Π° ΠΈ водСњС Π½Π° ΠΏΡ€ΠΎΠ±Π½Π°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

НиС создавамС Π²ΠΎ Π΄ΠΎΠΌΠ° ΠΏΠ°ΠΏΠΊΠ° Π·Π° Π½Π°ΡˆΠΈΡ‚Π΅ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΡ˜Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ајдС Π΄Π° ја Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌΠ΅ mstutorial:

$ mkdir ~/mstutorial

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ Π³ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΎΠΌΠΈΠ»Π΅Π½ ΡƒΡ€Π΅Π΄ΡƒΠ²Π°Ρ‡ Π½Π° тСкст ΠΈ ΠΊΡ€Π΅ΠΈΡ€Π°Ρ˜Ρ‚Π΅ програмска Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° C Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° mstest.Π² со слСднава содрТина:

#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`

Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π²ΠΎ Π½Π°Π²ΠΎΠ΄Π½ΠΈΡ†ΠΈ, ΠΊΠΎΠΈ сС Π½Π°ΠΎΡ“Π°Π°Ρ‚ Π½Π° тастатурата Π½Π° истото мСсто ΠΊΠ°ΠΊΠΎ Π±ΡƒΠΊΠ²Π°Ρ‚Π° β€žYβ€œ.

Ако Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π΅ содрТи Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚ΠΎΠ³Π°Ρˆ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ќС сС појави Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ 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