์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ต์ ์ ๋น๋์ค ์ธ์ฝ๋ฉ์ ์ํ WebCodecs VideoEncoder ์ฑ๋ฅ ํ๋กํ์ผ๋ง, ์ธ์ฝ๋ฉ ์๋ ๋ถ์, ์ต์ ํ ๊ธฐ๋ฒ, ํฌ๋ก์ค ํ๋ซํผ ๊ณ ๋ ค ์ฌํญ์ ๋ํ ์ฌ์ธต ๋ถ์.
WebCodecs VideoEncoder ์ฑ๋ฅ ํ๋กํ์ผ๋ง: ์ธ์ฝ๋ฉ ์๋ ๋ถ์
WebCodecs API๋ ์น ๊ธฐ๋ฐ ๋ฏธ๋์ด ์ฒ๋ฆฌ์์ ์ค์ํ ์ง์ ์ ๋ํ๋ด๋ฉฐ, ๊ฐ๋ฐ์์๊ฒ ๋ธ๋ผ์ฐ์ ๋ด์์ ์ง์ ์ฝ๋ฑ์ ๋ํ ๋ฎ์ ์์ค์ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ธ์ฝ๋ฉ ๋ฐ ๋์ฝ๋ฉ ํ๋ก์ธ์ค์ ๋ํ ๋ ํฐ ์ ์ด๊ฐ ๊ฐ๋ฅํด์ง๋ฉฐ, ์ค์๊ฐ ๋น๋์ค ์ ํ๋ฆฌ์ผ์ด์
, ๊ณ ๊ธ ์คํธ๋ฆฌ๋ฐ ์๋ฃจ์
๋ฑ์ ์ํ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. ๊ทธ๋ฌ๋ WebCodecs์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ์ฑ๋ฅ ํน์ฑ, ํนํ VideoEncoder ์ธํฐํ์ด์ค์ ์ธ์ฝ๋ฉ ์๋์ ๋ํ ์ฒ ์ ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค. ์ด ๋ฌธ์๋ VideoEncoder ์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ธ์ฝ๋ฉ ์๋ ๋ถ์ ๋ฐ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์ ์๋ณ์ ์ค์ ์ ๋ก๋๋ค.
์ธ์ฝ๋ฉ ์๋์ ์ค์์ฑ ์ดํด
์ด๋น ํ๋ ์(FPS)์ผ๋ก ์ธก์ ๋๋ ์ธ์ฝ๋ฉ ์๋๋ ๋ชจ๋ ๋น๋์ค ์ธ์ฝ๋ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ด ์ค์ํ ์งํ์ ๋๋ค. ์ด๋ ๋ค์ ์ฌํญ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
- ์ค์๊ฐ ์ฑ๋ฅ: ํ์ ํ์, ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ, ๋ํํ ๊ฒ์๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ฐ ์๊ฐ์ ์ต์ํํ๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ค์๊ฐ ์ธ์ฝ๋ฉ์ ํ์๋ก ํฉ๋๋ค.
- ํจ์จ์ฑ: ๋ ๋น ๋ฅธ ์ธ์ฝ๋ฉ ์๋๋ ๋น๋์ค ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํ ์๊ฐ์ ์ค์ฌ ์ปดํจํ ๋ฆฌ์์ค์ ์๋์ง๋ฅผ ์ ์ฝํฉ๋๋ค. ์ด๋ ์๋ฒ ์ธก ๋น๋์ค ์ฒ๋ฆฌ ๋ฐ ๋ชจ๋ฐ์ผ ์ฅ์น์ ํนํ ์ค์ํฉ๋๋ค.
- ํ์ฅ์ฑ: ํจ์จ์ ์ธ ์ธ์ฝ๋ฉ์ ๋ ๋ง์ ์์ ๋น๋์ค ์คํธ๋ฆผ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ์ฌ ๋น๋์ค ํ๋ซํผ ๋ฐ ์๋น์ค์ ํ์ฅ์ฑ์ ํฅ์์ํต๋๋ค.
์ธ์ฝ๋ฉ ์๋์ ์ํฅ์ ๋ฏธ์น๋ ์ฃผ์ ์์ธ
์ฌ๋ฌ ์์ธ์ด VideoEncoder์ ์ธ์ฝ๋ฉ ์๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๋ฌํ ์์ธ์ ์ดํดํ๋ ๊ฒ์ ํจ๊ณผ์ ์ธ ์ฑ๋ฅ ํ๋กํ์ผ๋ง ๋ฐ ์ต์ ํ์ ํ์์ ์
๋๋ค.
1. ์ฝ๋ฑ ์ ํ
์ฝ๋ฑ ์ ํ(์: VP9, AV1, H.264)์ ์ธ์ฝ๋ฉ ์๋์ ์๋นํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. AV1๊ณผ ๊ฐ์ ์ต์ ์ฝ๋ฑ์ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋์ ์์ถ ํจ์จ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ข ์ข ๊ณ์ฐ ๋ณต์ก๋ ์ฆ๊ฐ๋ฅผ ๋๋ฐํ์ฌ ์ธ์ฝ๋ฉ ์๋๋ฅผ ๋ฆ์ถฅ๋๋ค. H.264๋ ๋ ์ฑ์ํ ์ฝ๋ฑ์ผ๋ก ์ข ์ข ๋ ๋น ๋ฅด์ง๋ง ๋์ผํ ์์ค์ ์์ถ์ ์ ๊ณตํ์ง ๋ชปํ ์ ์์ต๋๋ค. VP9๋ ์์ถ๊ณผ ์๋ ์ฌ์ด์์ ์ข์ ๊ท ํ์ ์ ๊ณตํ์ฌ ๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ๊ธฐ ์๋ ์ ํ์ ๋๋ค.
์์: AV1์ ์ฌ์ฉํ์ฌ 720p ๋น๋์ค๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐ๋ ๋์ผํ ํ๋์จ์ด์์ H.264๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ๋น๋์ค๋ฅผ ์ธ์ฝ๋ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ฝ๋ฑ์ ์ ํํ ๋ ๋์ ์ฌ์ฉ์์ ์ฅ์น ๊ธฐ๋ฅ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ณ ๋ คํ์ญ์์ค.
2. ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์
๋นํธ ์ ์ก๋ฅ , ํด์๋, ํ๋ ์ ์๋ ๋ฐ ์ธ์ฝ๋ฉ ํ๋กํ์ผ๊ณผ ๊ฐ์ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค์ ๋ณต์ก์ฑ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋ ๋์ ๋นํธ ์ ์ก๋ฅ ๊ณผ ํด์๋๋ ๋ ๋ง์ ๊ณ์ฐ ๋ฅ๋ ฅ์ ํ์๋ก ํ์ฌ ์ธ์ฝ๋ฉ ์๋๋ฅผ ๋ฆ์ถฅ๋๋ค.
์์: ๋นํธ ์ ์ก๋ฅ ์ 5Mbps์์ 3Mbps๋ก ์ค์ด๋ฉด ๋น๋์ค ํ์ง์ด ์ฝ๊ฐ ์ ํ๋ ์ ์์ง๋ง ์ธ์ฝ๋ฉ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ํด์๋๋ฅผ 1080p์์ 720p๋ก ๋ฎ์ถ๋ ๊ฒ๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
3. ํ๋์จ์ด ๊ธฐ๋ฅ
CPU, GPU ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌํจํ ๊ธฐ๋ณธ ํ๋์จ์ด๋ ์ธ์ฝ๋ฉ ์ฑ๋ฅ์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ฌ๋ฌ ์ฝ์ด๋ฅผ ๊ฐ์ง ์ต์ CPU์ ํ๋์จ์ด ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง GPU๋ ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ํฌ๊ฒ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์์: ๋น๋์ค ์ธ์ฝ๋ฉ์ ์ํ ์ ์ฉ GPU๊ฐ ์๋ ์๋ฒ๋ CPU ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ์๋ง ์์กดํ๋ ์๋ฒ๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์์ ๋์ ๋น๋์ค ์คํธ๋ฆผ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
4. ๋ธ๋ผ์ฐ์ ๊ตฌํ
๋ค์ํ ๋ธ๋ผ์ฐ์ ๋ WebCodecs API๋ฅผ ๋ค๋ฅด๊ฒ ๊ตฌํํ์ฌ ์ธ์ฝ๋ฉ ์ฑ๋ฅ์ ์ฐจ์ด๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ JavaScript ์์ง, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ๊ธฐ๋ณธ ์ฝ๋ฑ ๊ตฌํ๊ณผ ๊ฐ์ ์์ธ๋ค์ด ๋ชจ๋ ์ธ์ฝ๋ฉ ์๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
์์: Chrome, Firefox ๋ฐ Safari ๊ฐ์ WebCodecs ๊ตฌํ ์ฐจ์ด๋ก ์ธํด ์ธ์ฝ๋ฉ ์ฑ๋ฅ์ด ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ผ๊ด๋ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ค๋ฉด ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
5. ์ฝํ ์ธ ๋ณต์ก์ฑ
๋น๋์ค ์ฝํ ์ธ ์์ฒด์ ๋ณต์ก์ฑ๋ ์ธ์ฝ๋ฉ ์๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์์ง์์ด ๋ง๊ณ , ๋ณต์กํ ํ ์ค์ฒ๋ฅผ ํฌํจํ๋ฉฐ, ์ฅ๋ฉด ์ ํ์ด ์ฆ์ ๋น๋์ค๋ ์ ์ ์ธ ์ฅ๋ฉด๊ณผ ์์ง์์ด ์ ์ ๋น๋์ค๋ณด๋ค ๋ ๋ง์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์๋ก ํฉ๋๋ค.
์์: ๋น ๋ฅธ ์๋์ ์ก์ ์ํ๋ฅผ ์ธ์ฝ๋ฉํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ณํ๊ฐ ๊ฑฐ์ ์๋ ์ ์ ์ธ ํ๋ฉด ๋ นํ๋ฅผ ์ธ์ฝ๋ฉํ๋ ๊ฒ๋ณด๋ค ๋ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
VideoEncoder ์ฑ๋ฅ ํ๋กํ์ผ๋ง
VideoEncoder ํ๋กํ์ผ๋ง์ ๋ค์ํ ์กฐ๊ฑด์์ ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. ์ด ์น์
์์๋ ์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ๋ํ ์ฒด๊ณ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ค๋ช
ํฉ๋๋ค.
1. ํ๋กํ์ผ๋ง ํ๊ฒฝ ์ค์
ํ๋กํ์ผ๋ง์ ์์ํ๊ธฐ ์ ์ ์ ํํ๊ณ ์ฌํ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ์ ์ด๋ ํ๊ฒฝ์ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ๋ํ์ ์ธ ํ ์คํธ ๋น๋์ค ์ ํ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฒ๋ฆฌํ ์ผ๋ฐ์ ์ธ ์ฝํ ์ธ ๋ฅผ ๋ํํ๋ ๋น๋์ค๋ฅผ ์ ํํ์ญ์์ค. ๋ค์ํ ๋ณต์ก๋ ์์ค์ ์ฌ๋ฌ ํ ์คํธ ๋น๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ผ๊ด๋ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์ ๊ตฌ์ฑ: ๋ชจ๋ ํ ์คํธ์ ์ฌ์ฉํ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์(์ฝ๋ฑ, ๋นํธ ์ ์ก๋ฅ , ํด์๋, ํ๋ ์ ์๋ ๋ฑ) ์ธํธ๋ฅผ ์ ์ํ์ญ์์ค.
- ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ: ๋ฐฉํด๋ฅผ ํผํ๊ธฐ ์ํด ํ๋กํ์ผ๋ง ์ค์ ์์คํ ์์ ์คํ๋๋ ๋ค๋ฅธ CPU ์ง์ฝ์ ์ธ ์์ ์ ์ต์ํํ์ญ์์ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋๊ตฌ ์ฌ์ฉ: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ(์: Chrome DevTools ์ฑ๋ฅ ํจ๋) ๋๋ ์์คํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ CPU ์ฌ์ฉ๋, ๋ฉ๋ชจ๋ฆฌ ์๋น ๋ฐ ๊ธฐํ ๊ด๋ จ ์งํ๋ฅผ ์ถ์ ํ์ญ์์ค.
2. ์ธ์ฝ๋ฉ ์๋ ์ธก์
์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ์ฃผ์ ์งํ๋ ์ด๋น ํ๋ ์(FPS)์ผ๋ก ์ธก์ ๋๋ ์ธ์ฝ๋ฉ ์๋์ ๋๋ค. ์ด๋ ํน์ ์์ ํ๋ ์์ ์ธ์ฝ๋ฉํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ์ฌ ๊ณ์ฐํ ์ ์์ต๋๋ค.
JavaScript ์ฝ๋ ์์:
async function encodeFrames(encoder, frames) {
const startTime = performance.now();
for (const frame of frames) {
encoder.encode(frame);
}
await encoder.flush();
const endTime = performance.now();
const elapsedTime = endTime - startTime;
const fps = frames.length / (elapsedTime / 1000);
return fps;
}
์ด ์ฝ๋ ์ค๋ํซ์ VideoEncoder๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ จ์ ํ๋ ์์ ์ธ์ฝ๋ฉํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ๊ณ ๊ฒฐ๊ณผ FPS๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ธ์ฝ๋์ ์ ์ ํ ์ด๊ธฐํ ๋ฐ ๊ตฌ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
3. ๋ณ๋ชฉ ํ์ ์๋ณ
์ธ์ฝ๋ฉ ์๋๋ฅผ ์ธก์ ํ ํ ๋ค์ ๋จ๊ณ๋ ์ฑ๋ฅ์ ์ ํํ๋ ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ณ๋ชฉ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- CPU ๋ณ๋ชฉ ํ์: ์ธ์ฝ๋ฉ ์ค ๋์ CPU ์ฌ์ฉ๋์ CPU๊ฐ ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ผ๊ฐ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์์ ๋ํ๋ ๋๋ค. ์ด๋ ๊ณ์ฐ ์ง์ฝ์ ์ธ ์ฝ๋ฑ, ๋์ ํด์๋ ๋๋ ๋นํจ์จ์ ์ธ ์ธ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค.
- GPU ๋ณ๋ชฉ ํ์: GPU๊ฐ ํ๋์จ์ด ๊ฐ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, ๋์ GPU ํ์ฉ๋ฅ ์ GPU๊ฐ ์ ํ ์์์์ ์์ฌํฉ๋๋ค. ์ด๋ ๋ณต์กํ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์ ๋๋ ๋ถ์ถฉ๋ถํ GPU ๋ฆฌ์์ค๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ ํ์: ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ฉ๋ชจ๋ฆฌ ์ค์ํ ๋ฐ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ผ๋ก ์ธํด ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์ด๋ ํฐ ํ๋ ์ ํฌ๊ธฐ ๋๋ ์ธ์ฝ๋ ๊ตฌํ์ ๋นํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค.
- JavaScript ๋ณ๋ชฉ ํ์: ๋นํจ์จ์ ์ธ JavaScript ์ฝ๋๋ ์ธ์ฝ๋ฉ ์๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฉฐ, ํนํ ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค์ ๋ณต์กํ ์ ์ฒ๋ฆฌ ๋๋ ํ์ฒ๋ฆฌ ๋จ๊ณ๊ฐ ํฌํจ๋๋ ๊ฒฝ์ฐ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ ๋ฐ ์์คํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ CPU ์ฌ์ฉ๋, GPU ํ์ฉ๋ฅ , ๋ฉ๋ชจ๋ฆฌ ์๋น ๋ฐ JavaScript ์คํ ์๊ฐ์ ๊ฒํ ํ์ฌ ์ด๋ฌํ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ญ์์ค.
4. ๋ค์ํ ์ฝ๋ฑ์ผ๋ก ์ธ์ฝ๋ฉ ์ฑ๋ฅ ๋ถ์
์ค์ํ ๋จ๊ณ๋ ๋ค์ํ ์ฝ๋ฑ(H.264, VP9, AV1) ์ ๋ฐ์ ์ฑ๋ฅ์ ๋ฒค์น๋งํนํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ธ์ฝ๋ฉ ์๋์ ์์ถ ํจ์จ์ฑ ๋ฐ ํ์ง์ ๊ท ํ์ ๋ง์ถฐ ํน์ ์ฌ์ฉ ์ฌ๋ก์ ๊ฐ์ฅ ์ ํฉํ ์ฝ๋ฑ์ ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ฒค์น๋งํน ๊ณ ๋ ค ์ฌํญ:
- SSIM (Structural Similarity Index): ์๋ณธ ๋ฐ ์ธ์ฝ๋ฉ๋ ๋น๋์ค ํ๋ ์ ๊ฐ์ ์ธ์๋ ํ์ง ์ฐจ์ด๋ฅผ ์ธก์ ํฉ๋๋ค. SSIM ๊ฐ์ด ๋์์๋ก ํ์ง ์ ์ง์จ์ด ์ข์ต๋๋ค.
- VMAF (Video Multi-Method Assessment Fusion): ์ธ์๋๋ ๋น๋์ค ํ์ง์ ์ํฅ์ ๋ฏธ์น๋ ๋ค์ํ ์์ธ์ ๊ณ ๋ คํ๋ ๋ ๊ณ ๊ธ ์งํ์ ๋๋ค.
- ํ์ผ ํฌ๊ธฐ: ๋์ผํ ๋น๋์ค๋ฅผ ๋ค๋ฅธ ์ฝ๋ฑ ๋ฐ ๋งค๊ฐ๋ณ์๋ก ์ธ์ฝ๋ฉํ์ ๋์ ๊ฒฐ๊ณผ ํ์ผ ํฌ๊ธฐ๋ฅผ ๋น๊ตํฉ๋๋ค.
์์: H.264๊ฐ ๊ฐ์ฅ ๋น ๋ฅธ ์ธ์ฝ๋ฉ ์๋๋ฅผ ์ ๊ณตํ์ง๋ง VP9์ ๋นํด ๋ ํฐ ํ์ผ ํฌ๊ธฐ์ ๋ฎ์ ํ์ง์ ์ด๋ํ ์ ์์์ ์ ์ ์์ต๋๋ค. AV1์ ์ต๊ณ ์ ์์ถ ํจ์จ์ฑ์ ์ ๊ณตํ์ง๋ง ์ธ์ฝ๋ฉ ์๋๊ฐ ํจ์ฌ ๋๋ฆด ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ์ฝ๋ฑ์ ์ ํํ์ญ์์ค.
์ธ์ฝ๋ฉ ์๋ ํฅ์์ ์ํ ์ต์ ํ ๊ธฐ๋ฒ
๋ณ๋ชฉ ํ์์ ์๋ณํ ํ์๋ ์ธ์ฝ๋ฉ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ๋ค์ํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค.
1. ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์ ์กฐ์
์๋์ ํ์ง ์ฌ์ด์ ์ต์ ์ ๊ท ํ์ ์ฐพ๊ธฐ ์ํด ๋ค์ํ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์คํํ์ญ์์ค. ์ฑ๋ฅ์ด ๋ฌธ์ ์ธ ๊ฒฝ์ฐ ๋นํธ ์ ์ก๋ฅ , ํด์๋ ๋๋ ํ๋ ์ ์๋๋ฅผ ์ค์ด๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์์:
- ์ ์ํ ๋นํธ ์ ์ก๋ฅ ์คํธ๋ฆฌ๋ฐ(ABR): ์ฌ์ฉ์ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋นํธ ์ ์ก๋ฅ ์ ๋์ ์ผ๋ก ์กฐ์ ํ๊ธฐ ์ํด ABR์ ๊ตฌํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ ๋์ญํญ์์๋ ๋ถ๋๋ฌ์ด ์ฌ์์ ์ ์งํ ์ ์์ต๋๋ค.
- ์ฝํ ์ธ ์ธ์ ์ธ์ฝ๋ฉ: ๋น๋์ค ์ฝํ ์ธ ์ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ ์ธ ์ฅ๋ฉด์๋ ๋ฎ์ ๋นํธ ์ ์ก๋ฅ ์ ์ฌ์ฉํ๊ณ ์์ง์์ด ๋ง์ ์ฅ๋ฉด์๋ ๋์ ๋นํธ ์ ์ก๋ฅ ์ ์ฌ์ฉํฉ๋๋ค.
2. ํ๋์จ์ด ๊ฐ์ ํ์ฉ
์ ํํ ์ฝ๋ฑ์ ๋ํด ํ๋์จ์ด ๊ฐ์์ด ํ์ฑํ๋์ด ์๋์ง ํ์ธํ์ญ์์ค. ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ๋ H.264 ๋ฐ VP9์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ฝ๋ฑ์ ๋ํด ํ๋์จ์ด ๊ฐ์์ ์ง์ํฉ๋๋ค.
์์: VideoEncoderConfig ๊ฐ์ฒด์ hardwareAcceleration ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ์ฌ ํ๋์จ์ด ๊ฐ์์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ธ๋ผ์ฐ์ ๋ ๊ถ๊ทน์ ์ผ๋ก ์์ฒด ๊ธฐ๋ฅ ๋ฐ ์์คํ
๊ตฌ์ฑ์ ๋ฐ๋ผ ํ๋์จ์ด ๊ฐ์์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
3. JavaScript ์ฝ๋ ์ต์ ํ
JavaScript ์ฝ๋๊ฐ ๋ณ๋ชฉ ํ์์ ๊ธฐ์ฌํ๋ ๊ฒฝ์ฐ ๋ค์์ ํตํด ์ต์ ํํ์ญ์์ค:
- ๋ถํ์ํ ๊ณ์ฐ ์ค์ด๊ธฐ: ์ค๋ณต ๊ณ์ฐ์ด๋ ์์ ์ ํผํ์ญ์์ค.
- ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ฌ์ฉ: ๋น๋์ค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ญ์์ค.
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์ต์ํ: ๊ฐ๋น์ง ์ปฌ๋ ์ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ํ ๋น ํ์๋ฅผ ์ค์ด์ญ์์ค.
- Web Workers๋ก ์์ ์คํ๋ก๋ฉ: ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ Web Workers๋ก ์ด๋ํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๋ ๊ฒ์ ํผํ๊ณ ์๋ต์ฑ์ ํฅ์์ํค์ญ์์ค.
4. WebAssembly (Wasm) ํ์ฉ
๋ณต์กํ ๋น๋์ค ์ฒ๋ฆฌ ์์ ์ ๊ฒฝ์ฐ WebAssembly(Wasm)๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. Wasm์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ์คํํ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ํฌ๊ฒ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์์: C++๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ๋น๋์ค ํํฐ ๋๋ ์ธ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ณ Wasm์ผ๋ก ์ปดํ์ผํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค์ญ์์ค.
5. ์ฌ๋ฐ๋ฅธ ์ธ์ฝ๋ ๊ตฌํ ์ ํ
WebCodecs API๋ ํ์คํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ง๋ง, ๊ธฐ๋ณธ ์ธ์ฝ๋ ๊ตฌํ์ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ผ๋ถ ์ธ์ฝ๋๋ ๋ค๋ฅธ ์ธ์ฝ๋๋ณด๋ค ์๋์ ๋ ์ต์ ํ๋์ด ์์ ์ ์์ต๋๋ค.
๊ณ ๋ ค ์ฌํญ:
- ๋ธ๋ผ์ฐ์ ๋ณ ์ต์ ํ: ์ ํํ ์ฝ๋ฑ์ ๋ํด ์ด๋ค ๋ธ๋ผ์ฐ์ ๊ฐ ํจ์ฌ ๋ ๋์ ์ธ์ฝ๋ฉ ์ฑ๋ฅ์ ์ ๊ณตํ๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ญ์์ค.
- ์ํํธ์จ์ด vs. ํ๋์จ์ด ์ธ์ฝ๋: ํ๋์จ์ด ์ธ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ์ต์ ์ผ๋ก ์๋ํ์ง ์๋ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์ํํธ์จ์ด ์ธ์ฝ๋ ๊ตฌํ์ ํ์ํ์ญ์์ค.
ํฌ๋ก์ค ํ๋ซํผ ๊ณ ๋ ค ์ฌํญ
ํ๋์จ์ด ๊ธฐ๋ฅ ๋ฐ ๋ธ๋ผ์ฐ์ ๊ตฌํ์ ์ฐจ์ด๋ก ์ธํด ๋ค์ํ ํ๋ซํผ(๋ฐ์คํฌํฑ, ๋ชจ๋ฐ์ผ, ์๋ฒ ๋๋ ์ฅ์น) ๊ฐ์ ์ธ์ฝ๋ฉ ์๋๊ฐ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ๋น๋์ค ์ธ์ฝ๋ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ ๋ ์ด๋ฌํ ํฌ๋ก์ค ํ๋ซํผ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ถ์ฅ ์ฌํญ:
- ์ ์ํ ์ธ์ฝ๋ฉ: ๋์ ํ๋ซํผ์ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํ๊ธฐ ์ํด ์ ์ํ ์ธ์ฝ๋ฉ์ ๊ตฌํํ์ญ์์ค.
- ํ๋ซํผ๋ณ ์ต์ ํ: ๊ฐ ํ๋ซํผ์์ ์ฑ๋ฅ์ ๊ทน๋ํํ๊ธฐ ์ํด ํ๋ซํผ๋ณ ์ต์ ํ๋ฅผ ์ ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ค์ ์ฅ์น์์ ํ ์คํธ: ๋ค์ํ ์ค์ ์ฅ์น์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ๋ค์ํ ํ๋ซํผ์์ ์ผ๊ด๋ ์ฑ๋ฅ์ ๋ณด์ฅํ์ญ์์ค.
์ค์ ์ฌ๋ก
์ด๋ฌํ ์์น์ด ๋ค์ํ ์ค์ ์๋๋ฆฌ์ค์ ์ด๋ป๊ฒ ์ ์ฉ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ํ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์
ํ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ฎ์ ์ง์ฐ ์๊ฐ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ผ๋ถ ๋น๋์ค ํ์ง์ ํฌ์ํ๋๋ผ๋ ์ธ์ฝ๋ฉ ์๋๋ฅผ ์ฐ์ ์ํ์ญ์์ค. ํ๋์จ์ด ๊ฐ์์ ์ฌ์ฉํ๋ H.264๋ ์ข ์ข ์ข์ ์ ํ์ ๋๋ค. ์ ์ํ ๋นํธ ์ ์ก๋ฅ ์คํธ๋ฆฌ๋ฐ์ ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ๋ถ๋๋ฌ์ด ๊ฒฝํ์ ์ ์งํ๋ ๋ฐ๋ ๋์์ด ๋ ์ ์์ต๋๋ค. ์ธ์ฝ๋ฉ ์๊ฐ์ ๋์ฑ ์ค์ด๊ธฐ ์ํด ๋ ๋ฎ์ ํด์๋(์: 720p ๋๋ 480p)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
2. ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ
๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ์ ๊ฒฝ์ฐ ์ธ์ฝ๋ฉ ์๋์ ๋น๋์ค ํ์ง์ ๊ท ํ์ ๋ง์ถ์ญ์์ค. VP9๋ ์ข์ ๊ท ํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ์ํ ๋นํธ ์ ์ก๋ฅ ์คํธ๋ฆฌ๋ฐ์ ๋ค์ํ ๋์ญํญ์ ๊ฐ์ง ๋ค์ํ ์์ฒญ์๋ฅผ ์์ฉํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๋ฒ๊ฐ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก CPU ๋ฐ GPU ์ฌ์ฉ๋์ ๋ฉด๋ฐํ ๋ชจ๋ํฐ๋งํ์ญ์์ค.
3. ๋น๋์ค ํธ์ง ์ ํ๋ฆฌ์ผ์ด์
๋น๋์ค ํธ์ง ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ธ์ฝ๋ฉ ์๋๋ ์ค์ํ์ง๋ง ํ์ง์ด ์ข ์ข ์ฐ์ ์์์ ๋๋ค. ์ต์์ ์ ์ถฉ์ ์ ์ฐพ๊ธฐ ์ํด ๋ค์ํ ์ฝ๋ฑ ๋ฐ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์คํํ์ญ์์ค. ํ๋์จ์ด ๊ฐ์ ๋ฐ WebAssembly๋ฅผ ํ์ฉํ์ฌ ๋ณต์กํ ๋น๋์ค ์ฒ๋ฆฌ ์์ ์ ๊ฐ์ํํ์ญ์์ค.
4. ๋ชจ๋ฐ์ผ ๋น๋์ค ๋ นํ
๋ชจ๋ฐ์ผ ์ฅ์น์์๋ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ด ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค. ํ์ฉ ๊ฐ๋ฅํ ๋น๋์ค ํ์ง์ ์ ์งํ๋ฉด์ ์ ๋ ฅ ํจ์จ์ฑ์ ์ํด ์ต์ ํํ์ญ์์ค. ํ๋์จ์ด ๊ฐ์์ ์ฌ์ฉํ๊ณ ๋ชจ๋ฐ์ผ ์ฅ์น์ ์ต์ ํ๋ ์ฝ๋ฑ์ ์ ํํ์ญ์์ค. ์ ์ํ ์ธ์ฝ๋ฉ์ ๋คํธ์ํฌ ์ํ๊ฐ ์ข์ง ์์ ๋ ๋นํธ ์ ์ก๋ฅ ์ ๋ฎ์ถค์ผ๋ก์จ ์ ๋ ฅ ์๋น๋ฅผ ์ค์ด๋ ๋ฐ๋ ๋์์ด ๋ ์ ์์ต๋๋ค.
๋ฏธ๋ ๋ํฅ
๋น๋์ค ์ธ์ฝ๋ฉ ๋ถ์ผ๋ ๋์์์ด ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ์๋ก์ด ์ฝ๋ฑ๊ณผ ๊ธฐ์ ์ด ์ ๊ธฐ์ ์ผ๋ก ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ๊ฐ๋ฅํ ์ต๊ณ ์ ์ฑ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด ์ต์ ๋ฐ์ ๋ํฅ์ ํ์ ํ์ญ์์ค.
์ ํฅ ๋ํฅ:
- AV1 ์ฑํ: AV1์ ๋ํ ํ๋์จ์ด ์ง์์ด ๋์ฑ ๊ด๋ฒ์ํด์ง์ ๋ฐ๋ผ ์น ๊ธฐ๋ฐ ๋น๋์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ๋ ๋งค๋ ฅ์ ์ธ ์ต์ ์ด ๋ ๊ฒ์ ๋๋ค.
- AI ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ: ์ธ๊ณต ์ง๋ฅ(AI)์ ์ธ์ฝ๋ฉ ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ ํํ๊ณ ์์ถ ํจ์จ์ฑ์ ํฅ์์ํค๋ ๋ฐ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ: ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ ์๋น์ค๋ ๋น๋์ค ์ฒ๋ฆฌ๋ฅผ ์ํ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๋น์ฉ ํจ์จ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ๋ก
VideoEncoder ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ ์ธ์ฝ๋ฉ ์๋๋ฅผ ๋ถ์ํ๋ ๊ฒ์ ํจ์จ์ ์ด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์น ๊ธฐ๋ฐ ๋น๋์ค ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์ธ์ฝ๋ฉ ์๋์ ์ํฅ์ ๋ฏธ์น๋ ์ฃผ์ ์์ธ์ ์ดํดํ๊ณ , ์ ์ฌ์ ์ธ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ฉฐ, ์ ์ ํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํจ์ผ๋ก์จ WebCodecs์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ํ์ฉํ๊ณ ์ฌ์ฉ์์๊ฒ ๊ณ ํ์ง ๋น๋์ค ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํฌ๋ก์ค ํ๋ซํผ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํ๊ณ ๋น๋์ค ์ธ์ฝ๋ฉ ๊ธฐ์ ์ ์ต์ ๋ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ VideoEncoder ์ฑ๋ฅ์ ํจ๊ณผ์ ์ผ๋ก ํ๋กํ์ผ๋งํ๊ณ ์ต์ ํํ๋ ๋ฐ ํ์ํ ์ง์๊ณผ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ต๋๋ค. ์ธ์ฝ๋ฉ ํ๋ก์ธ์ค๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ๊ฐ์ ํจ์ผ๋ก์จ ์์ฒญ์๊ฐ ์ด๋์ ์๋ ๋น๋์ค ์ ํ๋ฆฌ์ผ์ด์
์ด ์ํํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ฆ๊ฑฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.