์จ๋ผ์ธ ์คํธ๋ฆฌ๋ฐ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์๋ก์ด ๊ฐ๋ฐฉํ ๋ฏธ๋์ด ์๋ฒ ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๋ค.
-
๋์ ์ดํ
ํฐ ๊ดด์กฐ ๋ ๋ณด์ฅ๋ ์ง์ฐ ์๊ฐ๊ณผ CD ์์ค์ ํ์ง๋ก ๋คํธ์ํฌ๋ฅผ ํตํด ์ค์๊ฐ์ผ๋ก ์ค๋์ค๋ฅผ ์คํธ๋ฆฌ๋ฐํ๊ธฐ ์ํ ํดํท์ ๋๋ค. ์ ์ก ์ค์๋ ๋ฐ์ ์์ ์์ ์์ ์์คํ ์๊ณ ์๊ฐ ํธ์ฐจ๊ฐ ๊ณ ๋ ค๋ฉ๋๋ค. ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ค๋ ํจํท ๋ณต๊ตฌ ์ง์์๋ฐฉํฅ ์ค๋ฅ ์ ์ ๊ตฌํ ์ค์คํFEC (์ต์ ์ง์ฐ ๋ชจ๋์์๋ Reed-Solomon ์ฝ๋๊ฐ ์ฌ์ฉ๋๋ฉฐ, ์ต๋ ์ฑ๋ฅ ๋ชจ๋์์๋LDPC-๊ณ๋จ ). ์ ์ก์๋ RTP ํ๋กํ ์ฝ(AVP L16, 44100Hz PCM 16๋นํธ)์ด ์ฌ์ฉ๋ฉ๋๋ค. ํ์ฌ๋ ์ค๋์ค๋ง ์ง์ํ๊ณ ์์ผ๋, ์์ ๋ฐ ๊ธฐํ ์ฝํ ์ธ ๋ ์ง์ํ ๊ณํ์ด๋ค.ํ ๋ช ์ ์์ ์์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ์ฌ๋ฌ ๋ฐ์ ์์ ์คํธ๋ฆผ์ ๋ค์คํํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. CPU ์ ํ๊ณผ ์ ์ก ์ง์ฐ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ค์ํ ์ํ๋ง ์ค์ ํ๋กํ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ก์ปฌ ๋คํธ์ํฌ, ์ธํฐ๋ท, ๋ฌด์ ๋คํธ์ํฌ ๋ฑ ๋ค์ํ ๋คํธ์ํฌ๋ฅผ ํตํ ๋ฐฉ์ก์ด ์ง์๋ฉ๋๋ค. ์ค์ , ์ฒ๋ฆฌ๋ ๋ฐ ํจํท ์์ค์ ๋ฐ๋ผ Roc๋ ํ์ํ ์คํธ๋ฆผ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์๋์ผ๋ก ์ ํํ๊ณ ์ ์ก ์ค์ ๊ฐ๋๋ฅผ ์กฐ์ ํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋๊ตฌ Roc๋ฅผ ์ ์ก ์๋จ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํ ๋ช ๋ น์ค ๋ฐ ๋ชจ๋ ์ธํธPulseAudio . ๊ฐ์ฅ ๊ฐ๋จํ ํํ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ปดํจํฐ์ ์๋ ํ์ผ์ด๋ ์ฌ์ด๋ ์ฅ์น์ ์ค๋์ค๋ฅผ ๋ค๋ฅธ ์ปดํจํฐ์ ์๋ ํ์ผ์ด๋ ์ฌ์ด๋ ์ฅ์น๋ก ๋ผ์ฐํ ํ ์ ์์ต๋๋ค. ALSA, PulseAudio ๋ฐ CoreAudio๋ฅผ ํฌํจํ ๋ค์ํ ์ค๋์ค ๋ฐฑ์๋๊ฐ ์ง์๋ฉ๋๋ค. ์ฝ๋๋ C++๋ก ์์ฑ๋์์ผ๋ฉฐ,๋ฐฐํฌ์ MPL-2.0์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋์์ต๋๋ค. GNU/Linux ๋ฐ macOS์์์ ์์ ์ ์ง์ํฉ๋๋ค. -
์ฌ์ฉ ๊ฐ๋ฅ ๋ฉํฐ๋ฏธ๋์ด ์๋ฒ์ ์๋ก์ด ๋ฆด๋ฆฌ์ค๊ฐ๋ฏธ ๋ฏธ๋์ด ์๋ฒ 1.7 , ์ ์ํ ๋นํธ ์ ์ก๋ฅ ๋ณ๊ฒฝ ๋ชจ๋๋ฅผ ์ง์ํ์ฌ RTMP, RTSP ๋ฐ WebRTC ํ๋กํ ์ฝ์ ํตํด ์คํธ๋ฆฌ๋ฐ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. Ant๋ MP4, HLS ๋ฐ FLV ํ์์ผ๋ก ๋คํธ์ํฌ ๋น๋์ค ๋ นํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ๋ฅ์ฑ ์ค์๋ WebRTC-RTMP ๋ณํ๊ธฐ์ ์กด์ฌ, IP ์นด๋ฉ๋ผ ๋ฐ IPTV ์ง์, ๋ผ์ด๋ธ ์คํธ๋ฆผ ๋ฐฐํฌ ๋ฐ ๋ นํ, ์์ ๋คํธ์ํฌ๋ก์ ์คํธ๋ฆฌ๋ฐ ๊ตฌ์ฑ, ํด๋ฌ์คํฐ ๋ฐฐํฌ๋ฅผ ํตํ ํ์ฅ, ํ ์ง์ ์์ ์ฌ๋ฌ ์ง์ ์ผ๋ก์ ๋๋ ๋ฐฉ์ก ๊ฐ๋ฅ์ฑ ๋ฑ์ด ์์ต๋๋ค. 500ms ์ง์ฐ๋๋ ์์ ์๊ฐ ๋ง์ต๋๋ค.์ด ์ ํ์ Open Core ๋ชจ๋ธ์ ํ๋ ์์ํฌ ๋ด์์ ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ์ด๋ Apache 2.0 ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ์ฃผ์ ๋ถ๋ถ์ ๊ฐ๋ฐํ๊ณ ์ ๋ฃ ๋ฒ์ ์์ ๊ณ ๊ธ ๊ธฐ๋ฅ(์: Youtube๋ก ์คํธ๋ฆฌ๋ฐ)์ ์ ๊ณตํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ ๋ฒ์ ์์๋ WebRTC๋ฅผ ํตํ ๋ฐฉ์ก ์ฑ๋ฅ์ด 40% ํฅ์๋์์ผ๋ฉฐ, ๋ก๊ทธ ๋ทฐ์ด ์ถ๊ฐ, ์น ํจ๋ ๊ฐ์ , ํต๊ณ ํ์๋ฅผ ์ํ REST API ์ถ๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์๋น ์ต์ ํ, ์ค๋ฅ ์ฒ๋ฆฌ ๊ฐ์ ๋ฐ ํต๊ณ๋ฅผ Apache Kafka๋ก ๋ณด๋ด๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. .
-
์ผ์ด๋ฌ๋ค ์คํธ๋ฆฌ๋ฐ ์๋ฒ ์ถ์๋ ๋5 1.1.1 ๋ฅผ ์ฌ์ฉํ๋ฉด FLV, F4V, MP4 ๋ฐ 3GP ํ์์ ๋น๋์ค์ MP3, F4A, M4A, AAC ํ์์ ์ค๋์ค๋ฅผ ์ ์กํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์คํธ๋ฆผ์ ์์ ํ๊ธฐ ์ํด ๋ผ์ด๋ธ ๋ฐฉ์ก ๋ชจ๋์ ๋ น์ ์คํ ์ด์ ํํ์ ์์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค(FLV ์ปจํ ์ด๋์ FLV ๋ฐ AVC+AAC). ์ด ํ๋ก์ ํธ๋ ์๋ RTMP ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ Flash Communication Server์ ๋ํ ๋์์ ๋ง๋ค๊ธฐ ์ํด 2005๋ ์ ๋ง๋ค์ด์ก์ต๋๋ค. ๋์ค์ Red5๋ ํ๋ฌ๊ทธ์ธ์ ํตํด HLS, WebSockets, RTSP ๋ฐ WebRTC๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ก๋์บ์คํ ์ ์ง์ํ์ต๋๋ค.Red5๋ ํ๋ก์ ํธ์์ ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ํ์น ์คํ๋ฏธํ ์์ ๋ฐ ์์ฑ ํ์๋ฅผ ์กฐ์งํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์ฝ๋๋ Java๋ก ์์ฑ๋์์ผ๋ฉฐ๊ณต๊ธ Apache 2.0์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋์์ต๋๋ค. ๋ ์ ์ ํ์ Red5๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์๋์์ต๋๋ค.๋ ๋5 ํ๋ก , 500ms์ ๋ฎ์ ์ ์ก ์ง์ฐ ์๊ฐ๊ณผ AWS, Google Cloud ๋ฐ Azure ํด๋ผ์ฐ๋์ ๋ฐฐํฌํ ์ ์๋ ๊ธฐ๋ฅ์ ํตํด ์๋ฐฑ๋ง ๋ช ์ ์์ฒญ์๋ก ํ์ฅ๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru