ΠΠ°ΡΠ΅ΡΠΈΠ°Π»ΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π²Π·Π΅Ρ ΠΎΡ ΠΌΠΎΡ .
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΡΠ΅ΡΠΈΡ ΠΎΡ ΡΡΠ°ΡΠΈΠΈ Π·Π° ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΠ°Π΄Π°Π½ΠΈΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄Π²ΠΈΠΆΠΊΠ° Mediastreamer2. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΠΌΠ΅Π½ΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π½Π° Linux ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C.
Mediastreamer2 Π΅ VoIP Π΄Π²ΠΈΠ³Π°ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΡΡΠΎΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡ open-source ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ voip ΡΠ΅Π»Π΅ΡΠΎΠ½. . Π Linphone, Mediastreamer2 ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΡ Π·Π²ΡΠΊ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠΎΠ΄ΡΠΎΠ±Π΅Π½ ΡΠΏΠΈΡΡΠΊ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΈΠ΄ΡΠ½ Π½Π° ΡΠ°Π·ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ° Mediastreamer. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΡΠΊ: .
Π ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ, Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ, Π²ΠΌΠ΅ΡΡΠΎ Π΄ΡΠΌΠ°ΡΠ° Mediastreamer2, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΡΠΊΠ°ΡΠ° ΠΌΡ Π½ΠΎΡΠ°ΡΠΈΡ: "ΠΌΠ΅Π΄ΠΈΠ°ΡΡΡΠΈΠΌΠ΅Ρ".
ΠΡΡΠΎΡΠΈΡΡΠ° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ½Π°, Π½ΠΎ ΡΡΠ΄Π΅ΠΉΠΊΠΈ ΠΏΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄, ΡΠΎΠΉ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π» Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° , ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π²Π° Π·Π° Π΅Π²Π΅Π½ΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΡ Π΄Π°Π»Π΅ΡΠ½Π° ΡΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈΡΠ° Ρ . Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π½Π΅Π³ΠΎ, ΠΌΠ΅Π΄ΠΈΠ°ΡΡΡΠΈΠΌΠ΅Ρ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ-Π»Π΅ΠΊ. ΠΡΡΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Linphone Π΅ ΠΈΠ·Π»ΡΠ·Π»Π° ΠΏΡΠ΅Π· 2001 Π³ΠΎΠ΄ΠΈΠ½Π°, ΡΠ°ΠΊΠ° ΡΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΌΠ΅Π΄ΠΈΠ°ΡΡΡΠΈΠΌΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π²Π΅ΡΠ΅ ΠΏΠΎΡΡΠΈ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ.
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΠ°ΡΡΡΠΈΠΌΠ΅ΡΠ° Π»Π΅ΠΆΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, Π½Π°ΡΠ΅ΡΠ΅Π½Π° "Data flow" (ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π΄Π°Π½Π½ΠΈ). ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠ°ΠΊΠ°Π²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°Π·Π΅Π½ Π½Π° ΡΡ Π΅ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ.

Π ΡΠ°Π·ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π΅ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈΡ ΠΊΠΎΠ΄, Π° ΠΎΡ ΡΡ Π΅ΠΌΠ° (Π³ΡΠ°Ρ) Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ΅Π΄. Π’Π΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ Π½Π°ΡΠΈΡΠ°Ρ ΡΠΈΠ»ΡΡΠΈ.
Π’Π°ΠΊΠ°Π²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ΅Π΄ΠΈΠ° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠΈΠ»ΡΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Π² ΡΡ Π΅ΠΌΠ° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° 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
