Mediastreamer2 VoIP ์—”์ง„ ํƒ์ƒ‰. 1 ๋ถ€

๊ธ€์˜ ์†Œ์žฌ๋Š” ์ œ ๊ธ€์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ์   ์ฑ„๋„.

์†Œ๊ฐœ

์ด ๊ธฐ์‚ฌ๋Š” Mediastreamer2 ์—”์ง„์„ ์‚ฌ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ ์‹œ๋ฆฌ์ฆˆ์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค. ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—๋Š” Linux ํ„ฐ๋ฏธ๋„์—์„œ ์ž‘์—…ํ•˜๊ณ  C ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ๊ธฐ์ˆ ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Mediastreamer2๋Š” ์ธ๊ธฐ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด VoIP ์ „ํ™” ํ”„๋กœ์ ํŠธ์˜ VoIP ์—”์ง„์ž…๋‹ˆ๋‹ค. ๋งํฐ. Linphone์—์„œ Mediastreamer2๋Š” ์‚ฌ์šด๋“œ ๋ฐ ๋น„๋””์˜ค์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์—”์ง„ ๊ธฐ๋Šฅ์˜ ์ž์„ธํ•œ ๋ชฉ๋ก์€ ์ด Mediastreamer ํŽ˜์ด์ง€์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. GitLab.

๋˜ํ•œ ํ…์ŠคํŠธ์—์„œ ํŽธ์˜์ƒ Mediastreamer2๋ผ๋Š” ๋‹จ์–ด ๋Œ€์‹  ๋Ÿฌ์‹œ์•„์–ด ํ‘œ๊ธฐ๋ฒ•์ธ "๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ฑ ์ด๋ ฅ์€ ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์ง€๋งŒ ์†Œ์Šค ์ฝ”๋“œ๋กœ ํŒ๋‹จํ•˜๋ฉด ์ด์ „์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ง ์ž˜ํ•˜๋Š”, ๊ทธ๊ฒƒ์€ ๊ฐ€๋Šฅํ•œ ๋จผ ๊ด€๊ณ„๋ฅผ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค. GStreamer. ์ด์— ๋น„ํ•ด ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ๋Š” ๋” ๊ฐ€๋ฒผ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. Linphone์˜ ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์€ 2001๋…„์— ๋“ฑ์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ฑฐ์˜ 20๋…„ ๋™์•ˆ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ์˜ ํ•ต์‹ฌ์—๋Š” "๋ฐ์ดํ„ฐ ํ๋ฆ„"(๋ฐ์ดํ„ฐ ํ๋ฆ„)์ด๋ผ๋Š” ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์•„ํ‚คํ…์ฒ˜์˜ ์˜ˆ๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

Mediastreamer2 VoIP ์—”์ง„ ํƒ์ƒ‰. 1 ๋ถ€

์ด ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž„์˜์˜ ์ˆœ์„œ๋กœ ๋ฐฐ์—ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ฒด๊ณ„(๊ทธ๋ž˜ํ”„)๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ•„ํ„ฐ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด VoIP ์ „ํ™” RTP ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ๋ฐ ์ „์†ก ์ฒด๊ณ„์— ์—ฐ๊ฒฐ๋œ ์ผ๋ จ์˜ ํ•„ํ„ฐ ํ˜•ํƒœ๋กœ ๋ฏธ๋””์–ด ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„ํ„ฐ๋ฅผ ์ž„์˜์˜ ์ฒด๊ณ„๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๊ธฐ๋Šฅ, ์ƒˆ๋กœ์šด ํ•„ํ„ฐ์˜ ๊ฐ„๋‹จํ•œ ๊ฐœ๋ฐœ, ๋…๋ฆฝ์ ์ธ ๋ณ„๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ ๊ตฌํ˜„์„ ํ†ตํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž์ฒด ์ œ์ž‘ํ•œ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— VoIP ๋ถ„์•ผ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ํ•„ํ„ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋งค์šฐ ํ’๋ถ€ํ•˜๋ฉฐ ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์ž์ฒด ๋””์ž์ธ์˜ ํ•„ํ„ฐ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋จผ์ € ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๊ธฐ์„ฑํ’ˆ ํ•„ํ„ฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šด๋“œ ํ•„ํ„ฐ

์˜ค๋””์˜ค ์บก์ฒ˜ ๋ฐ ์žฌ์ƒ

  • Alsa(๋ฆฌ๋ˆ…์Šค): 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(์œˆ๋„์šฐ์ฆˆ)
  • OSS(๋ฆฌ๋ˆ…์Šค): MS_OSS_WRITE, MS_OSS_READ
  • PortAudio(Mac OS X)
  • PulseAudio(๋ฆฌ๋ˆ…์Šค): MS_PULSE_WRITE, MS_PULSE_READ
  • Windows ์†Œ๋ฆฌ(Windows)

์˜ค๋””์˜ค ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ

  • G.711 ๋ฒ•: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 ยต-law: 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
  • ๋ฐ˜ํ–ฅ ์ œ๊ฑฐ(speex): MS_SPEEX_EC
  • ์ดํ€„๋ผ์ด์ €: MS_EQUALIZER
  • ๋ฏน์„œ: MS_MIXER
  • ํŒจํ‚ท ์†์‹ค ๋ณด์ •๊ธฐ(PLC): MS_GENERIC_PLC
  • ๋ฆฌ์ƒ˜ํ”Œ๋Ÿฌ: MS_RESAMPLE
  • ํ†ค ๊ฐ์ง€๊ธฐ: MS_TONE_DETECTOR
  • ๋ณผ๋ฅจ ์ œ์–ด ๋ฐ ์‹ ํ˜ธ ๋ ˆ๋ฒจ ์ธก์ •: MS_VOLUME

๋น„๋””์˜ค ํ•„ํ„ฐ

๋น„๋””์˜ค ์บก์ฒ˜ ๋ฐ ์žฌ์ƒ

  • ์•ˆ๋“œ๋กœ์ด๋“œ ์บก์ฒ˜
  • ์•ˆ๋“œ๋กœ์ด๋“œ ์žฌ์ƒ
  • AV ํŒŒ์šด๋ฐ์ด์…˜ ์บก์ฒ˜(iOS)
  • AV ํŒŒ์šด๋ฐ์ด์…˜ ์žฌ์ƒ(iOS)
  • DirectShow ์บก์ฒ˜(Windows)
  • DrawDib ์žฌ์ƒ(Windows)
  • ์™ธ๋ถ€ ์žฌ์ƒ - ์ตœ์ƒ์œ„ ๋ ˆ์ด์–ด๋กœ ๋น„๋””์˜ค ๋ณด๋‚ด๊ธฐ
  • GLX ์žฌ์ƒ(Linux): MS_GLXVIDEO
  • Mire - ํ•ฉ์„ฑ๋™์˜์ƒ: MS_MIRE
  • OpenGL ์žฌ์ƒ(Mac OS X)
  • OpenGL ES2 ์žฌ์ƒ(Android)
  • ํ€ตํƒ€์ž„ ์บก์ฒ˜(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 ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ์ธ์ฝ”๋”/๋””์ฝ”๋”

ํ•„ํ„ฐ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช… ๋’ค์— ์œ ํ˜• ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋ฉฐ ์ด ์ด๋ฆ„์€ ์ด ํ•„ํ„ฐ์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์—์„œ๋Š” ์ด ๋ชฉ๋ก์„ ์ฐธ์กฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ์—์„œ ์„ค์น˜

์ด์ œ ์ปดํ“จํ„ฐ์— ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

Ubuntu๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ปดํ“จํ„ฐ ๋˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์— Mediastremer2๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ๋Š” ํŠน๋ณ„ํ•œ ๊ธฐ์ˆ ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์™€ ์•„๋ž˜์—์„œ "$" ๊ธฐํ˜ธ๋Š” ๋ช…๋ น ์ž…๋ ฅ์„ ์œ„ํ•œ ์‰˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ๋ชฉ๋ก์—์„œ ๋ผ์ธ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ด ๊ธฐํ˜ธ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์ด ํ‘œ์‹œ๋˜๋Š” ๋ผ์ธ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ์ปดํ“จํ„ฐ๊ฐ€ ์ธํ„ฐ๋„ท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

libmediastreamer-dev ํŒจํ‚ค์ง€ ์„ค์น˜

ํ„ฐ๋ฏธ๋„์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

$ sudo apt-get update

๋ณ€๊ฒฝ์„ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$ sudo apt-get install libmediastreamer-dev

ํ•„์š”ํ•œ ์ข…์†์„ฑ ํŒจํ‚ค์ง€์™€ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ๋œ ์ข…์†์„ฑ deb ํŒจํ‚ค์ง€์˜ ์ด ํฌ๊ธฐ๋Š” ์•ฝ 35MB์ž…๋‹ˆ๋‹ค. ์„ค์น˜๋œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋Š” ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํ‰๊ฐ€ํŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰

์šฐ๋ฆฌ๋Š” ์ง‘ ํŠœํ† ๋ฆฌ์–ผ ํ”„๋กœ์ ํŠธ์šฉ ํด๋”์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹ค์Šต:

$ 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 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ‘œ์‹œํ•˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉฐ ์‚ฌ์šด๋“œ ์นด๋“œ๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ์Šค ํŠธ๋ฆฌ๋จธ ๊ฐœ๋ฐœ์ž๋Š” ์ด๊ฒƒ์ด ์ •์ƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ๋งˆ์ง€ ๋ชปํ•ด ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•  ์ค€๋น„๊ฐ€ ๋ชจ๋‘ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ปดํŒŒ์ผ ๋„๊ตฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ‰๊ฐ€ํŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋„๊ตฌ๊ฐ€ ๊ตฌ์„ฑ๋˜๊ณ  ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋จธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธฐ์‚ฌ ์—ฌ๋Ÿฌ ํ•„ํ„ฐ ์ฒด์ธ์—์„œ ์˜ค๋””์˜ค ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๋ฅผ ์กฐํ•ฉํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com