WebCodecs AudioEncoder ํ์ง ์์ง์ ์ฌ์ธต ๋ถ์ํ๊ณ , ์ค์๊ฐ ํต์ , ์คํธ๋ฆฌ๋ฐ, ์์นด์ด๋น ๋ฑ ๋ค์ํ ํ๋ซํผ๊ณผ ์ฌ์ฉ ์ฌ๋ก์์ ์ค๋์ค ์์ถ์ ์ต์ ํํ๋ ๊ธฐ๋ฅ์ ์ดํด๋ด ๋๋ค.
WebCodecs AudioEncoder ํ์ง ์์ง: ์ค๋์ค ์์ถ ์ต์ ํ
WebCodecs API๋ ๋ธ๋ผ์ฐ์ ์์ค์ ๋น๋์ค ๋ฐ ์ค๋์ค ์ฝ๋ฑ์ ์ง์ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ์ฌ ์น ๊ธฐ๋ฐ ๋ฉํฐ๋ฏธ๋์ด๋ฅผ ํ์ ํ๊ณ ์์ต๋๋ค. WebCodecs ๋ด ์ค๋์ค ์ฒ๋ฆฌ์ ํต์ฌ์ AudioEncoder
์ด๋ฉฐ, ๊ทธ ํจ๊ณผ์ ํต์ฌ์ ํ์ง ์์ง์ ์์ต๋๋ค. ์ด ๊ธ์์๋ AudioEncoder ํ์ง ์์ง์ ๋ณต์ก์ฑ์ ๊น์ด ํ๊ณ ๋ค์ด ๊ทธ ๊ธฐ๋ฅ, ์ต์ ํ ์ ๋ต, ๊ทธ๋ฆฌ๊ณ ์น ๊ฐ๋ฐ, ์ฝํ
์ธ ์ ์, ์ค์๊ฐ ํต์ ์ ์ข
์ฌํ๋ ์ ์ธ๊ณ ์ฌ์ฉ์์ ๋ฏธ์น๋ ์ํฅ์ ํ๊ตฌํฉ๋๋ค.
WebCodecs AudioEncoder ์ดํดํ๊ธฐ
WebCodecs์ AudioEncoder
์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ ์ค๋์ค ์ํ์ ๋ธ๋ผ์ฐ์ ๋ด์์ ์ง์ ์์ถ๋ ์ค๋์ค ํ์์ผ๋ก ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ณต์กํ ์๋ฒ ์ธก ์ฒ๋ฆฌ๋ ํ์ฌ ํ๋ฌ๊ทธ์ธ ์์กด ํ์์ฑ์ด ์ ๊ฑฐ๋์ด ์ฑ๋ฅ ํฅ์, ์ง์ฐ ์๊ฐ ๊ฐ์, ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ฐํ๋ก ์ด์ด์ง๋๋ค.
AudioEncoder
๋ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ค๋์ค ์ฝ๋ฑ์ ์ง์ํฉ๋๋ค:
- Opus: ์ค์๊ฐ ํต์ ๋ฐ ์คํธ๋ฆฌ๋ฐ์ ์ด์์ ์ธ ๋ค๋ชฉ์ , ์ ์ง์ฐ ์ฝ๋ฑ์ ๋๋ค. ๋ฎ์ ๋นํธ๋ ์ดํธ์์๋ ๋์ ํ์ง๋ก ์๋ ค์ ธ ์์ด ๋์ญํญ์ด ์ ํ๋ ํ๊ฒฝ์ ์ ํฉํฉ๋๋ค.
- AAC (Advanced Audio Coding): ๋ง์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค์ ๋ฏธ๋์ด ํ๋ ์ด์ด์์ ์ฌ์ฉ๋๋ ๋๋ฆฌ ์ง์๋๋ ์ฝ๋ฑ์ ๋๋ค. ํ์ง๊ณผ ๋นํธ๋ ์ดํธ ๊ฐ์ ์ข์ ๊ท ํ์ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐํ ์ฝ๋ฑ: ๋ธ๋ผ์ฐ์ ์ ํ๋ซํผ์ ๋ฐ๋ผ MP3๋ Vorbis ๊ฐ์ ๋ค๋ฅธ ์ฝ๋ฑ์ด ์ง์๋ ์ ์์ต๋๋ค.
์ฝ๋ฑ ์ ํ์ ์ํ๋ ์ค๋์ค ํ์ง, ๋นํธ๋ ์ดํธ ์ ์ฝ, ๋์ ํ๋ซํผ ํธํ์ฑ ๋ฑ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
ํ์ง ์์ง์ ์ญํ
AudioEncoder
๋ด์ ํ์ง ์์ง์ ์ฃผ์ด์ง ๋นํธ๋ ์ดํธ์์ ์ต์์ ์ค๋์ค ํ์ง์ ๋ฌ์ฑํ๊ฑฐ๋, ํ์ง ์ ํ๋ฅผ ์ต์ํํ๋ฉด์ ๋ชฉํ ๋นํธ๋ ์ดํธ๋ฅผ ์ ์งํ๋๋ก ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ๋ ์ญํ ์ ํฉ๋๋ค. ์ค๋์ค ์ฝํ
์ธ ์ ์ํ๋ ์ธ์ฝ๋ฉ ๋ชจ๋์ ๋ฐ๋ผ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ์ ์ด ํฌํจ๋ฉ๋๋ค:
- ๋นํธ๋ ์ดํธ ํ ๋น: ์ค๋์ค ์ ํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ผ๋ง๋ ๋ง์ ๋นํธ๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
- ๋ณต์ก๋ ์ ์ด: ํ์ง๊ณผ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํด ์ธ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ฅผ ์กฐ์ ํฉ๋๋ค.
- ๋ ธ์ด์ฆ ์ ฐ์ดํ(Noise Shaping): ์์ํ ๋ ธ์ด์ฆ๋ฅผ ํ์ฑํ์ฌ ๊ฐ์ฒญ๋๋ฅผ ์ต์ํํฉ๋๋ค.
- ์ฌ๋ฆฌ์ํฅ ๋ชจ๋ธ๋ง(Psychoacoustic Modeling): ์ธ๊ฐ์ ์ฒญ๊ฐ ์ธ์ง์ ๋ํ ์ง์์ ํ์ฉํ์ฌ ๊ด๋ จ ์๋ ์ ๋ณด๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ค๋์ค ์ ํธ์ ์ง๊ฐ์ ์ผ๋ก ์ค์ํ ์ธก๋ฉด์ ์ง์คํฉ๋๋ค.
ํ์ง ์์ง์ ์ค๋์ค ํ์ง, ๋นํธ๋ ์ดํธ, ๊ณ์ฐ ๋น์ฉ ์ฌ์ด์ ์ต์ ์ ๊ท ํ์ ์ฐพ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ด๋ ๋ฎ์ ์ง์ฐ ์๊ฐ์ด ์ค์ํ๊ณ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ์ ํ๋ ๋น๋์ค ํ์๋ ์จ๋ผ์ธ ๊ฒ์๊ณผ ๊ฐ์ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ์ค์ํฉ๋๋ค.
ํ์ง ์์ง์ด ์ฌ์ฉํ๋ ์ฃผ์ ์ต์ ํ ๊ธฐ๋ฒ
AudioEncoder ํ์ง ์์ง์ ์ค๋์ค ์์ถ์ ์ต์ ํํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ๊ตํ ๊ธฐ์ ์ ํ์ฉํฉ๋๋ค:
1. ๊ฐ๋ณ ๋นํธ๋ ์ดํธ(VBR) ์ธ์ฝ๋ฉ
VBR ์ธ์ฝ๋ฉ์ ์ค๋์ค ์ ํธ์ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋นํธ๋ ์ดํธ๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ๋์ ๋ค์ด๋ด๋ฏน ๋ ์ธ์ง๋ฅผ ๊ฐ์ง ์์ ์ด๋ ๋ฐฐ๊ฒฝ ์์์ด ์๋ ์์ฑ๊ณผ ๊ฐ์ด ๋ณต์กํ ๋ถ๋ถ์ ๋ํ ์ผ๊ณผ ์ ๋ช ๋๋ฅผ ๋ณด์กดํ๊ธฐ ์ํด ๋ ๋์ ๋นํธ๋ ์ดํธ๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์นจ๋ฌต์ด๋ ์์ ์ ์ธ ํค๊ณผ ๊ฐ์ ๋จ์ํ ๋ถ๋ถ์ ๋์ญํญ์ ์ ์ฝํ๊ธฐ ์ํด ๋ ๋ฎ์ ๋นํธ๋ ์ดํธ๋ก ์ธ์ฝ๋ฉ๋ฉ๋๋ค. ์ด๋ ๋์ผํ ํ๊ท ๋นํธ๋ ์ดํธ์์ ๊ณ ์ ๋นํธ๋ ์ดํธ(CBR) ์ธ์ฝ๋ฉ์ ๋นํด ์ ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ค๋์ค ํ์ง์ ์ ๊ณตํฉ๋๋ค.
์์: ์กฐ์ฉํ ํผ์๋ ธ ๋ถ๋ถ๊ณผ ์๋๋ฌ์ด ์ค์ผ์คํธ๋ผ ๋ถ๋ถ์ด ๋ชจ๋ ์๋ ์์ ์ ์๊ฐํด๋ณด์ญ์์ค. VBR ์ธ์ฝ๋ฉ์ ์ค์ผ์คํธ๋ผ ๋ถ๋ถ์ ๋ ๋ง์ ๋นํธ๋ฅผ ํ ๋นํ์ฌ ์ ์ฒด ๋ค์ด๋ด๋ฏน ๋ ์ธ์ง์ ์ํฅ์ ์ง๊ฐ์ ํฌ์ฐฉํ๋ ๋ฐ๋ฉด, ๋ํ ์ผ์ด ๋ ํ์ํ ํผ์๋ ธ ๋ถ๋ถ์๋ ๋ ์ ์ ๋นํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์ผ์ ํ ๋นํธ๋ ์ดํธ๋ฅผ ์ ์งํ๊ธฐ ์ํด ์๋๋ฌ์ด ๋ถ๋ถ์์ ํ์ง์ ํฌ์ํ ์ ์๋ CBR์ ๋นํด ๋ ์ผ๊ด๋ ์ฒญ์ทจ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
2. ์ฌ๋ฆฌ์ํฅ ๋ชจ๋ธ๋ง
์ฌ๋ฆฌ์ํฅ ๋ชจ๋ธ๋ง์ ํ์ง ์์ง์ ์ค์ํ ๊ตฌ์ฑ ์์์ ๋๋ค. ์ธ๊ฐ์ด ์๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ธ์งํ๋์ง์ ๋ํ ์ดํด๋ฅผ ํ์ฉํ์ฌ ์ธ์ง๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ ์ ๋ณด๋ฅผ ์๋ณํ๊ณ ๋ฒ๋ฆฝ๋๋ค. ์๋ฅผ ๋ค์ด, ํฐ ์๋ฆฌ๋ ์ฃผ๋ณ์ ์กฐ์ฉํ ์๋ฆฌ๋ฅผ ๊ฐ๋ฆด ์ ์์ต๋๋ค(์ฒญ๊ฐ ๋ง์คํน ํ์). ํ์ง ์์ง์ ๋ง์คํน๋ ์๋ฆฌ์ ๋ํ ์ธ์ฝ๋ฉ ์ ๋ฐ๋๋ฅผ ๋ฎ์ถ์ด ๋นํธ๋ฅผ ์ ์ฝํ๋ฉด์๋ ์ธ์ง๋๋ ์ค๋์ค ํ์ง์ ํฐ ์ํฅ์ ์ฃผ์ง ์๋ ๋ฐฉ์์ผ๋ก ์ด๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
์์: ์๋๋ฌ์ด ํ๊ฒฝ์์ ๋ํ๋ฅผ ๋ น์ํ ๊ฒฝ์ฐ, ํ์ง ์์ง์ ์์ฑ ์ ํธ์ ์ํด ๋ง์คํน๋๋ ๋ฐฐ๊ฒฝ ์๋ฆฌ์ ๋ํ ์ธ์ฝ๋ฉ ์ ๋ฐ๋๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ฑ ์์ฒด์ ๋ ๋ง์ ๋นํธ๋ฅผ ํ ๋นํ์ฌ ๋ ๋ช ํํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋ํ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
3. ์ ์ํ ๋นํธ๋ ์ดํธ(ABR) ์คํธ๋ฆฌ๋ฐ
ABR์ ์ฃผ๋ก ์คํธ๋ฆฌ๋ฐ ๊ธฐ์ ์ด์ง๋ง, ๋ค์ํ ๋นํธ๋ ์ดํธ ๊ณ์ธต์ ๋ํ ์ค๋์ค ์ฝํ ์ธ ๋ฅผ ์ค๋นํ๊ธฐ ์ํด ํ์ง ์์ง์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ABR์ ๋์ผํ ์ค๋์ค ์ฝํ ์ธ ๋ฅผ ์ฌ๋ฌ ๋ค๋ฅธ ๋นํธ๋ ์ดํธ๋ก ๋ง๋๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ ์ฌ์ฉ์์ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ด๋ฌํ ๋ฒ์ ๊ฐ์ ๋์ ์ผ๋ก ์ ํํฉ๋๋ค. ํ์ง ์์ง์ ๊ฐ ๋นํธ๋ ์ดํธ ๊ณ์ธต์ด ์ฃผ์ด์ง ๋นํธ๋ ์ดํธ์์ ์ต์์ ์ค๋์ค ํ์ง์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
์์: ์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ 64kbps, 128kbps, 256kbps ๋นํธ๋ ์ดํธ์ ์ค๋์ค ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ํ์ง ์์ง์ ๊ฐ ๋ฒ์ ์ ํด๋น ๋นํธ๋ ์ดํธ์ ์ต์ ํ๋ ์ค์ ์ผ๋ก ์ธ์ฝ๋ฉํ์ฌ ๊ฐ์ฅ ๋ฎ์ ๋นํธ๋ ์ดํธ ๋ฒ์ ์ด๋ผ๋ ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ์์ ์์ฉ ๊ฐ๋ฅํ ์ฒญ์ทจ ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
4. ๋ณต์ก๋ ์ ์ด
ํ์ง ์์ง์ ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค์ ๊ณ์ฐ ๋ณต์ก๋๋ ๊ด๋ฆฌํฉ๋๋ค. ๋ ๋ณต์กํ ์ธ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์ค๋์ค ํ์ง์ ๋ฌ์ฑํ ์ ์์ง๋ง ๋ ๋ง์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์๋ก ํฉ๋๋ค. ํ์ง ์์ง์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค์ ์ํ๋ ์ธ์ฝ๋ฉ ์๋์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ์ด๋ ์ง์ฐ ์๊ฐ์ ์ ๋ฐํ์ง ์๋๋ก ์ธ์ฝ๋ฉ์ ์ ์ํ๊ฒ ์ํํด์ผ ํ๋ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ์ค์ํฉ๋๋ค.
์์: ๋น๋์ค ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์ CPU ๋ถํ๊ฐ ๋์ผ๋ฉด ํ์ง ์์ง์ด ์ค๋์ค ์ธ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ ์ค๋์ค ์ธ์ฝ๋ฉ์ ํ์ํ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ์ค์ฌ ๋น๋์ค ์ธ์ฝ๋ฉ ๋ฐ ๋คํธ์ํฌ ํต์ ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์์ ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
5. ๋ ธ์ด์ฆ ์ ฐ์ดํ
์์ํ ๋ ธ์ด์ฆ๋ ๋์งํธ ์ค๋์ค ์ธ์ฝ๋ฉ์ ๋ถ๊ฐํผํ ๋ถ์ฐ๋ฌผ์ ๋๋ค. ํ์ง ์์ง์ ๋ ธ์ด์ฆ ์ ฐ์ดํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ด ๋ ธ์ด์ฆ๋ฅผ ์ฃผํ์ ์คํํธ๋ผ ์ ๋ฐ์ ์ฌ๋ถ๋ฐฐํ์ฌ ๋ ๋ค๋ฆฌ๊ฒ ๋ง๋ญ๋๋ค. ๋ ธ์ด์ฆ๋ฅผ ๋ฌด์์๋ก ๋ถ์ฐ์ํค๋ ๋์ , ๋ ธ์ด์ฆ ์ ฐ์ดํ์ ์ธ๊ฐ์ ๊ท๊ฐ ๋ ๋ฏผ๊ฐํ ์ฃผํ์ ์ชฝ์ผ๋ก ๋ ธ์ด์ฆ๋ฅผ ๋ฐ์ด๋ ๋๋ค. ์ด๋ ์ฃผ๊ด์ ์ผ๋ก ๋ ๊นจ๋ํ๊ณ ์พ์ ํ ์ค๋์ค ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์์: ํ์ง ์์ง์ ์ธ๊ฐ์ ๊ท๊ฐ ๋ ๋ฏผ๊ฐํ ๊ณ ์ฃผํ์ ์ชฝ์ผ๋ก ์์ํ ๋ ธ์ด์ฆ๋ฅผ ๋ฐ์ด๋ผ ์ ์์ต๋๋ค. ์ด๋ ์ธ์ง๋๋ ๋ ธ์ด์ฆ์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ๋ ๊ฑฐ์ฌ๋ฆฌ๊ฒ ํ๊ณ ์ค๋์ค ์ ํธ์ ์ ๋ฐ์ ์ธ ์ ๋ช ๋๋ฅผ ํฅ์์ํต๋๋ค.
์ต์ ์ ํ์ง์ ์ํ AudioEncoder ๊ตฌ์ฑ
WebCodecs API๋ ์ต์ ์ ํ์ง์ ๋ฌ์ฑํ๊ธฐ ์ํด AudioEncoder
๋ฅผ ๊ตฌ์ฑํ๋ ๋ค์ํ ์ต์
์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์ต์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- codec: ์ฌ์ฉํ ์ค๋์ค ์ฝ๋ฑ์ ์ง์ ํฉ๋๋ค(์: "opus", "aac").
- sampleRate: ์ค๋์ค ์ ํธ์ ์ํ ๋ ์ดํธ๋ฅผ ์ง์ ํฉ๋๋ค(์: 48000 Hz).
- numberOfChannels: ์ค๋์ค ์ฑ๋ ์๋ฅผ ์ง์ ํฉ๋๋ค(์: ๋ชจ๋ ธ๋ 1, ์คํ ๋ ์ค๋ 2).
- bitrate: ์ธ์ฝ๋ฉ๋ ์ค๋์ค์ ๋ชฉํ ๋นํธ๋ ์ดํธ๋ฅผ ์ง์ ํฉ๋๋ค(์ด๋น ๋นํธ ์). ์ค์ ๋นํธ๋ ์ดํธ๋ VBR ๋ชจ๋์์ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
- latencyMode: ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ง์ฐ ์๊ฐ ํ๋กํ์ ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ํ์ง ์์ง์ด ์ ํํ๋ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ๊ธฐํ ์ฝ๋ฑ๋ณ ๋งค๊ฐ๋ณ์: ์ผ๋ถ ์ฝ๋ฑ์๋ ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๊ธฐ ์ํด ๊ตฌ์ฑํ ์ ์๋ ์ถ๊ฐ ๋งค๊ฐ๋ณ์๊ฐ ์์ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์คํ๊ฒ ์ ํํ๋ ๊ฒ์ ์ํ๋ ์ค๋์ค ํ์ง๊ณผ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฎ์ ๋นํธ๋ ์ดํธ๋ฅผ ์ ํํ๋ฉด ๋์ญํญ ์๋น๋ ์ค์ด๋ค์ง๋ง ์ค๋์ค ํ์ง๋ ์ ํ๋ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ๋์ ์ํ ๋ ์ดํธ๋ฅผ ์ ํํ๋ฉด ์ค๋์ค ์ถฉ์ค๋๋ ํฅ์๋์ง๋ง ๋นํธ๋ ์ดํธ์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ ์๊ตฌ ์ฌํญ๋ ์ฆ๊ฐํฉ๋๋ค.
์์: Opus๋ฅผ ์ฌ์ฉํ๋ ์ค์๊ฐ ํต์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ, AudioEncoder
๋ฅผ ์ํ ๋ ์ดํธ 48000Hz, ๋นํธ๋ ์ดํธ 64kbps, latencyMode
"realtime"์ผ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์์ฑ ํต์ ์ ์ํด ๋ฎ์ ์ง์ฐ ์๊ฐ๊ณผ ์ข์ ์ค๋์ค ํ์ง์ ์ฐ์ ์ํฉ๋๋ค.
์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ์์
WebCodecs AudioEncoder ํ์ง ์์ง์ ๋ค์ํ ๋ถ์ผ์ ๊ฑธ์ณ ์๋ง์ ์์ฉ ๋ถ์ผ๊ฐ ์์ต๋๋ค:
1. ์ค์๊ฐ ํต์ (RTC)
๋น๋์ค ํ์ ๋ฐ ์จ๋ผ์ธ ๊ฒ์๊ณผ ๊ฐ์ WebRTC ์ ํ๋ฆฌ์ผ์ด์ ์ WebCodecs๊ฐ ์ ๊ณตํ๋ ๋ฎ์ ์ง์ฐ ์๊ฐ๊ณผ ๋์ ํ์ง์ ์ด์ ์ ํฌ๊ฒ ๋๋ฆฝ๋๋ค. ํ์ง ์์ง์ ๋ณ๋ํ๋ ๋คํธ์ํฌ ์กฐ๊ฑด ํ์์๋ ์ค๋์ค๊ฐ ํจ์จ์ ์ด๊ณ ํจ๊ณผ์ ์ผ๋ก ์ธ์ฝ๋ฉ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ ์ํ ๋นํธ๋ ์ดํธ ์ ๋ต์ ์ํํ๊ณ ์ค๋จ ์๋ ํต์ ๊ฒฝํ์ ์ ์งํ๊ธฐ ์ํด ์ค์๊ฐ์ผ๋ก ์ค๋์ค ํ์ง์ ์กฐ์ ํ ์ ์์ต๋๋ค.
์์: WebCodecs์ Opus๋ฅผ ์ฌ์ฉํ๋ ๋น๋์ค ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋์ญํญ์ ๋ฐ๋ผ ์ค๋์ค ๋นํธ๋ ์ดํธ๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ๊ฐํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋นํธ๋ ์ดํธ๋ฅผ ๋์ฌ ์ค๋์ค ์ ๋ช ๋๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์ฝํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋นํธ๋ ์ดํธ๋ฅผ ์ค์ฌ ๋๊น์ ๋ฐฉ์งํ๊ณ ์์ ์ ์ธ ์ฐ๊ฒฐ์ ์ ์งํ ์ ์์ต๋๋ค.
2. ์ค๋์ค ๋ฐ ๋น๋์ค ์คํธ๋ฆฌ๋ฐ
์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ WebCodecs๋ฅผ ํ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ค๋์ค ์ฝํ ์ธ ๋ฅผ ์ธ์ฝ๋ฉํ๊ณ ์ ๋ฌํจ์ผ๋ก์จ ํ๋ฌ๊ทธ์ธ์ด๋ ์ธ๋ถ ํ๋ ์ด์ด์ ํ์์ฑ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ํ์ง ์์ง์ ๊ฐ ๋นํธ๋ ์ดํธ ๊ณ์ธต์ด ์ฃผ์ด์ง ๋นํธ๋ ์ดํธ์์ ์ต์์ ์ค๋์ค ํ์ง์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ์ฌ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด๊ณผ ์ฅ์น์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ต์ ํํฉ๋๋ค.
์์: ์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ WebCodecs์ AAC๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ๋ฌ ๋นํธ๋ ์ดํธ ๊ณ์ธต์ผ๋ก ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค. ํ์ง ์์ง์ ๊ฐ ๋ฒ์ ์ ํด๋น ๋นํธ๋ ์ดํธ์ ์ต์ ํ๋ ์ค์ ์ผ๋ก ์ธ์ฝ๋ฉํ์ฌ, ๋์ญํญ์ด ์ ํ๋ ๋ชจ๋ฐ์ผ ์ฅ์น์์๋ ๊ฐ์ฅ ๋ฎ์ ๋นํธ๋ ์ดํธ ๋ฒ์ ์ด ์์ฉ ๊ฐ๋ฅํ ์ฒญ์ทจ ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
3. ์ค๋์ค ๋ น์ ๋ฐ ํธ์ง
์น ๊ธฐ๋ฐ ์ค๋์ค ๋ น์ ๋ฐ ํธ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ WebCodecs๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ค๋์ค๋ฅผ ์บก์ฒํ๊ณ ์ธ์ฝ๋ฉํ ์ ์์ต๋๋ค. ํ์ง ์์ง์ ํตํด ์ฌ์ฉ์๋ ๋ น์์ ์ค๋์ค ํ์ง๊ณผ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ต์ ํํ์ฌ ์จ๋ผ์ธ์์ ์ฝ๊ฒ ๊ณต์ ํ๊ณ ์ ์ฅํ ์ ์์ต๋๋ค.
์์: ์จ๋ผ์ธ ํ์บ์คํ ํ๋ซํผ์ WebCodecs์ Opus๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ํ์บ์คํธ๋ฅผ ๋ น์ํ๊ณ ํธ์งํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค. ํ์ง ์์ง์ ์ค๋์ค๋ฅผ ๊ณ ํ์ง ๋ฐ ์ ๋นํธ๋ ์ดํธ๋ก ์ธ์ฝ๋ฉํ์ฌ ๊ณผ๋ํ ๋์ญํญ์ ์๋นํ์ง ์๊ณ ํ์บ์คํธ๋ฅผ ์ฝ๊ฒ ์ ๋ก๋ํ๊ณ ์คํธ๋ฆฌ๋ฐํ ์ ์๋๋ก ํฉ๋๋ค.
4. ์น ๊ธฐ๋ฐ ๊ฒ์
์น ๊ธฐ๋ฐ ๊ฒ์์์ WebCodecs๋ ๊ฒ์ ๋ด ์์ฑ ์ฑํ ๋ฐ ์ํฅ ํจ๊ณผ๋ฅผ ์ํ ์ค์๊ฐ ์ค๋์ค ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋ชฐ์ ํ ๊ฒ์ ๊ฒฝํ์ ์ํด์๋ ๋ฎ์ ์ง์ฐ ์๊ฐ๊ณผ ํจ์จ์ ์ธ ์ค๋์ค ์์ถ์ด ์ค์ํฉ๋๋ค. ํ์ง ์์ง์ ๋์ ์ธ ๊ฒ์ ํ๊ฒฝ์ ์ ์ํ์ฌ ์ฑ๋ฅ์ ์ ํ์ํค์ง ์์ผ๋ฉด์ ์ค๋์ค ํ์ง์ ์ต์ ํํฉ๋๋ค.
์์: ๋ฉํฐํ๋ ์ด์ด ์จ๋ผ์ธ ๊ฒ์์ WebCodecs์ Opus๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ๋ด ์์ฑ ์ฑํ ์ ํ์ฑํํ ์ ์์ต๋๋ค. ํ์ง ์์ง์ ์์ฑ ์ฑํ ์ค๋์ค๋ฅผ ๋ฎ์ ์ง์ฐ ์๊ฐ๊ณผ ๋์ ํ์ง๋ก ์ธ์ฝ๋ฉํ์ฌ ํ๋ ์ด์ด ๊ฐ์ ๋ช ํํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ์ปค๋ฎค๋์ผ์ด์ ์ ๋ณด์ฅํฉ๋๋ค.
WebAssembly (Wasm) ํตํฉ
WebAssembly (Wasm)๋ ๊ฐ๋ฐ์๊ฐ C++์ ๊ฐ์ ์ธ์ด๋ก ์์ฑ๋ ๊ณ ์ฑ๋ฅ ์ค๋์ค ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ธ๋ผ์ฐ์ ๋ด์์ ์ง์ ํ์ฉํ ์ ์๊ฒ ํ์ฌ WebCodecs์ ๊ธฐ๋ฅ์ ํฅ์์ํต๋๋ค. ์ด๋ฌํ ํตํฉ์ ๋ ๋ณต์กํ ์ค๋์ค ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ์ ๋ฐ์ ์ธ ํจ์จ์ฑ์ ํฅ์์ํต๋๋ค.
์์: ๊ฐ๋ฐ์๋ C++๋ก ์์ฑ๋ ๊ณ ๋๋ก ์ต์ ํ๋ Opus ์ธ์ฝ๋๋ฅผ WebAssembly๋ก ์ปดํ์ผํ ๋ค์ WebCodecs ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํตํฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ๋ ๋ค์ดํฐ๋ธ Opus ์ธ์ฝ๋์ ๋นํด ํจ์ฌ ๋ ๋์ ์ค๋์ค ํ์ง๊ณผ ์ฑ๋ฅ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
๊ณผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
WebCodecs AudioEncoder ํ์ง ์์ง์ ์๋นํ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ์์๋์ด์ผ ํ ๋ช ๊ฐ์ง ๊ณผ์ ์ ๊ณ ๋ ค ์ฌํญ๋ ์์ต๋๋ค:
- ์ฝ๋ฑ ์ง์: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชจ๋ ์ฝ๋ฑ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ๋์ ํ๋ซํผ ๋ฐ ์ฅ์น์ ๋ค๋ฅธ ์ฝ๋ฑ์ ํธํ์ฑ์ ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ํ๋ซํผ๋ณ ์ฐจ์ด: ํ์ง ์์ง์ ๊ตฌํ ๋ฐ ์ฑ๋ฅ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์ด์ ์ฒด์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
- ๋ณต์ก์ฑ: ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ ์ค๋์ค ์ธ์ฝ๋ฉ์ ์ต์ ํํ๋ ๊ฒ์ ๋ณต์กํ ์ ์์ผ๋ฉฐ ๋ค์ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ๊ณ์ฐ ๋น์ฉ: ํ์ง ์์ง์ ๊ณ์ฐ ๋น์ฉ์ ์ต์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ง๋ง, ํนํ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๋์ ๋นํธ๋ ์ดํธ์ ๊ฒฝ์ฐ ์ค๋์ค ์ธ์ฝ๋ฉ์ ์ฌ์ ํ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์์ ์ผ ์ ์์ต๋๋ค.
- ๋ณด์: ๋ค๋ฅธ ์น API์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฌ์ ์ธ ๋ณด์ ์ทจ์ฝ์ ์ ์ธ์งํ๊ณ ์ด๋ฅผ ์ํํ๊ธฐ ์ํ ์ ์ ํ ์กฐ์น๋ฅผ ์ทจํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ ์คํ ๊ณํ, ์ฒ ์ ํ ํ ์คํธ, ์ฑ๋ฅ ๋ฐ ๋ณด์์ ๋ํ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ด ํ์ํฉ๋๋ค.
WebCodecs๋ฅผ ํตํ ์ค๋์ค ์์ถ์ ๋ฏธ๋
WebCodecs AudioEncoder ํ์ง ์์ง์ ์น ๊ธฐ๋ฐ ์ค๋์ค ์ฒ๋ฆฌ์์ ์ค์ํ ๋ฐ์ ์ ์๋ฏธํฉ๋๋ค. WebCodecs์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ด ๊ณ์ ์ฆ๊ฐํ๊ณ API๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ํจ์ฌ ๋ ํ์ ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฑ์ฅํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ํฅํ ๊ฐ๋ฐ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค:
- ํฅ์๋ ์ฝ๋ฑ ์ง์: AV1 ์ค๋์ค์ ๊ฐ์ ๊ณ ๊ธ ์ค๋์ค ์ฝ๋ฑ์ ๋ํ ๊ด๋ฒ์ํ ์ง์์ ์ค๋์ค ํ์ง๊ณผ ํจ์จ์ฑ์ ๋์ฑ ํฅ์์ํฌ ๊ฒ์ ๋๋ค.
- AI ๊ธฐ๋ฐ ์ต์ ํ: ์ธ๊ณต์ง๋ฅ(AI) ๋ฐ ๋จธ์ ๋ฌ๋(ML) ๊ธฐ์ ์ ํตํฉ์ ํจ์ฌ ๋ ์ง๋ฅ์ ์ด๊ณ ์ ์์ ์ธ ์ค๋์ค ์ธ์ฝ๋ฉ ์ ๋ต์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ์ค์๊ฐ ํ์ง ๋ชจ๋ํฐ๋ง: ์ค๋์ค ํ์ง ์งํ์ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง์ ๋ณํํ๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ํ ๋ ๋์ ์ด๊ณ ๋ฐ์์ ์ธ ์ ์์ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ ๋๋ค.
- ํฅ์๋ ๊ฐ๋ฐ์ ๋๊ตฌ: ๊ฐ์ ๋ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๋ง๊ฒ AudioEncoder๋ฅผ ๋ ์ฝ๊ฒ ๊ตฌ์ฑํ๊ณ ์ต์ ํํ ์ ์๊ฒ ํด์ค ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
WebCodecs AudioEncoder ํ์ง ์์ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค๋์ค ์์ถ์ ์ต์ ํํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. VBR ์ธ์ฝ๋ฉ, ์ฌ๋ฆฌ์ํฅ ๋ชจ๋ธ๋ง, ์ ์ํ ๋นํธ๋ ์ดํธ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ๊ธฐ์ ์ ํ์ฉํ์ฌ ๊ฐ๋ฐ์๋ ์ต์ํ์ ๋์ญํญ ์๋น์ ๋ฎ์ ์ง์ฐ ์๊ฐ์ผ๋ก ๊ณ ํ์ง ์ค๋์ค๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. WebCodecs๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์น ๊ธฐ๋ฐ ๋ฉํฐ๋ฏธ๋์ด์ ๋ฏธ๋๋ฅผ ํ์ฑํ๋ ๋ฐ ์ ์ ๋ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ด๋ฉฐ, ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ํ๋ถํ๊ณ ๋ชฐ์ ๊ฐ ์๋ ์ค๋์ค ๊ฒฝํ์ ์ ๊ณตํ ๊ฒ์ ๋๋ค. ํ์ง ์์ง์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ ์ค์๊ฐ ํต์ ์์ ์คํธ๋ฆฌ๋ฐ ๋ฏธ๋์ด์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ๋ซํผ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ํ ์ค๋์ค ํ์ง์ ์ ๊ณตํ๋ ค๋ ๊ฐ๋ฐ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค. WebCodecs์ ๋ํ ์ง์์ ์ธ ํ๊ตฌ์ ์คํ์ ํ์ ์ ์ธ ์ค๋์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ๊ฐ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ฃผ๊ณ ์๋ก์ด ์น ๊ธฐ๋ฐ ๋ฉํฐ๋ฏธ๋์ด ์๋๋ฅผ ์ด ๊ฒ์ ๋๋ค.
์ต์ ์ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ณด๋ ค๋ฉด ๊ณต์ WebCodecs ์ค๋ช ์์ ๋ธ๋ผ์ฐ์ ๋ณ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ญ์์ค.