์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

1. ๊ฐœ์š”2. FFmpeg์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋“ค3. ๋””์ฝ”๋”
3.1. FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋™์˜์ƒ ํ”Œ๋ ˆ์ด์–ด3.2. FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ฝ”๋ฑ
4. ๋™์˜์ƒ ์ธ์ฝ”๋”
4.1. ํŠน์ง•4.2. FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ธ์ฝ”๋”4.3. FFmpeg๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์„œ๋น„์Šค4.4. ์ผ๋ฐ˜์ ์ธ ์˜ต์…˜4.5. ์˜ˆ์‹œ4.6. ํ”„๋ผ์šดํ˜ธํผ AAC์ธ์ฝ”๋” libfdk_aac ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ
5. ๊ทธ ์™ธ ffmpeg์„ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋“ค6. ๊ตญ์‚ฐ ํ”Œ๋ ˆ์ด์–ด์˜ GPL ์œ„๋ฐ˜ ์˜ํ˜น7. ffmpeg? libav?

1. ๊ฐœ์š”[ํŽธ์ง‘]

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€(์œˆ๋„์šฐ ๋ฒ„์ „)

๋งˆ์ดํด ๋‹ˆ๋”๋งˆ์ด์–ด(Michael Niedermayer)์˜ ์ฃผ๋„ํ•˜์— ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๋™์˜์ƒ, ์Œ์•…, ์‚ฌ์ง„ ํฌ๋งท๋“ค์˜ ๋””์ฝ”๋”ฉ๊ณผ ์ธ์ฝ”๋”ฉ์„ ๋ชฉํ‘œ๋กœ ๋งŒ๋“ค์–ด์ง€๊ณ  ์žˆ๋Š” LGPL๊ณผ GPL ๋ผ์ด์„ผ์Šค[1]๋ฅผ ๋”ฐ๋ฅด๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ. ์ฐธ๊ณ ๋กœ FFmpeg์˜ ๋กœ์—ดํ‹ฐ ๋ฌธ์ œ๋Š” FFmpeg๊ฐ€ ์•„๋‹Œ FFmpeg๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์œ ๋ฃŒ ์ฝ”๋ฑ๋“ค์— ์˜ํ•œ ๊ฒƒ์ด๋‹ค. ์ด๋ฏธ ์ด๋Ÿฐ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์‚ผ์„ฑ์„ ๋น„๋กฏํ•œ ์ „์„ธ๊ณ„์˜ IT ๊ด€๋ จ ๋Œ€๊ธฐ์—…๋“ค์ด ํ˜‘๋ ฅํ•ด AV1 ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์ด๋‹ค.

๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ(์ธ์ฝ”๋”์™€ ๋””์ฝ”๋” ๋“ฑ๋“ฑ)์—์„œ ํ‘œ์ค€์ด๋ผ ๋ถˆ๋ฆฌ์šธ ์ •๋„๋กœ ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ๋“ค์˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด์šฉ๋˜๊ณ  ์žˆ๋‹ค. ์•„๋ž˜์˜ FFmpeg์„ ๊ธฐ๋ฐ˜[2]์œผ๋กœ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋น„๋””์˜ค ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

ํ•œ ์ผํ™”๋กœ NVIDIA์™€ AMD๋Š” ์ž์‚ฌ์˜ ๊ทธ๋ž˜ํ”ฝ์นด๋“œ์˜ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์œ„ํ•ด FFmpeg์— '์ง์ ‘' ์†Œ์Šค๋ฅผ ๊ฑด๋‚ด์ฃผ๊ณ  FFmpeg์ด ์‹œํ‚ค๋Š”๋Œ€๋กœ ์ˆ˜์ •ํ•˜์˜€๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์žฌ์ƒ๊ธฐ๊ฐ€ FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, FFmpeg์—์„œ ์ง€์›๋งŒ ํ•œ๋‹ค๋ฉด ๊ทธ ํšจ๊ณผ๋ฅผ ๋‹น์žฅ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ.

2. FFmpeg์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋“ค[ํŽธ์ง‘]

  • ffmpeg - ๋ฏธ๋””์–ด ํฌ๋งท ๋ณ€ํ™˜ ๋„๊ตฌ
  • ffserver - ๋ผ์ด๋ธŒ ๋ฐฉ์†ก์„ ํ•˜๋Š” ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋ฒ„
  • libavcodec - ์˜ค๋””์˜ค/๋น„๋””์˜ค ์ฝ”๋ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • libavformat - ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ปจํ…Œ์ด๋„ˆ์˜ ๋””๋จน์„œ/๋จน์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • libavdevice - ์ž…์ถœ๋ ฅ ์žฅ์น˜ ์ œ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • libavfilter - ๋ฏธ๋””์–ด ํ•„ํ„ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • libswscale - ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • libswresample - ์˜ค๋””์˜ค ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

3. ๋””์ฝ”๋”[ํŽธ์ง‘]

์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•˜๋ฉด ๋™์˜์ƒ์„ ์žฌ์ƒํ• ๋•Œ ์“ฐ์ด๋Š” ์ฝ”๋ฑ์ด๋‹ค. FFmpeg์˜ ์˜ํ–ฅ๋ ฅ์ด ์ ˆ๋Œ€์ ์ด๋‹ค. MAC, ์•ˆ๋“œ๋กœ์ด๋“œ, iOS, ์œˆ๋„์šฐ์ฆˆ์—์„œ ์œ ๋ช…ํ•œ ์ฝ”๋ฑ ๋‚ด์žฅํ˜• ๋™์˜์ƒ ํ”Œ๋ ˆ์ด์–ด๋“ค์€ ๋ชจ๋‘ FFmpeg์˜ libavcodec์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

3.1. FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋™์˜์ƒ ํ”Œ๋ ˆ์ด์–ด[ํŽธ์ง‘]


์—ฌ๊ธฐ์— ์ ํ˜€์žˆ๋Š” ๊ฒƒ๋“ค์€ ์œ ๋ช…ํ•œ ๊ฒƒ๋“ค์ด๊ณ , ์ด๊ฒƒ๋“ค ๋ง๊ณ ๋„ ์ˆ˜๋งŽ์€ ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด๋“ค์ด FFmpeg๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.

3.2. FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ฝ”๋ฑ[ํŽธ์ง‘]

  • FFDshow[4]
  • ๊ทธ๋ฆฌ๊ณ  LAVํ•„ํ„ฐ์™€ FFDshow๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœํ•˜๋Š” ์ˆ˜๋งŽ์€ ํ†ตํ•ฉ์ฝ”๋ฑ๋“ค

4. ๋™์˜์ƒ ์ธ์ฝ”๋”[ํŽธ์ง‘]

์ด์ชฝ์€ ํ•œ๋งˆ๋””๋กœ ์ •๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋Œ€๋‹ค์ˆ˜ ์ธ์ฝ”๋” ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ๋ชจ๋‘ FFmpeg๊ธฐ๋ฐ˜์ด๋‹ค. ๊ณฐ ์ธ์ฝ”๋”, ๋ฐ”๋‹ฅ, ๋‹ค์Œ ํŒŸ์ธ์ฝ”๋” ๋“ฑ...

4.1. ํŠน์ง•[ํŽธ์ง‘]

  • FFmpeg ํ”„๋กœ์ ํŠธ ์ž์ฒด๊ฐ€ ๋ชจ๋“  ์˜์ƒ์˜ ๋””์ฝ”๋”ฉ/์ธ์ฝ”๋”ฉ์„ ์ง€ํ–ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ์ฝ”๋ฑ์˜ ์„ค์น˜๊ฐ€ ํ•„์š”์—†๋‹ค.[5] ffmpeg.exe ํŒŒ์ผ ํ•˜๋‚˜๋กœ๋„ ์ธ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฉ€ํ‹ฐ์ฝ”์–ด๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์ง€์› ํ•œ๋‹ค. ๋”ฐ๋กœ ์˜ต์…˜์„ ์ ์ง€์•Š์œผ๋ฉด ๋ชจ๋“  ์ฝ”์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • VF(libavfilter) ๊ธฐ๋Šฅ ๋‚ด์žฅ.
  • FFmpeg์€ ์‰ฌ์šด ์ธ์ฝ”๋”ฉ์„ ์œ„ํ•ด ๊ฐ์ข… ํ”„๋ฆฌ์…‹์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ์‚ฌ์‹ค ์•„๋ž˜์˜ ์ธ์ฝ”๋”๋“ค์„ ์“ฐ๋Š” ๊ฒƒ๋ณด๋‹ค ์ง์ ‘ FFmpeg์„ ์ด์šฉํ•ด์„œ ํ”„๋ฆฌ์…‹์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ํ™”์งˆ์„ ๋ณด์žฅํ•œ๋‹ค. CLI ๊ธฐ๋ฐ˜์ด๋ผ ์–ด์งˆ์–ด์งˆ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ฐพ์•„๋ณด๋ฉด ์œ„์˜ ๋ธ”๋กœ๊ทธ์ฒ˜๋Ÿผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๊ฐœํ•œ ๊ณณ์ด ๋งŽ๋‹ค. ์ • ๊ท€์ฐฎ์œผ๋ฉด ์œ„ ๋ธ”๋กœ๊ทธ์— ์žˆ๋Š” ๋ฐฐ์น˜ํŒŒ์ผ์„ ๊ทธ๋ƒฅ ์“ฐ๋ฉด ๋œ๋‹ค. ๋ฆฌํ”Œ๋“ค์„ ๋ณด๋ฉด ์ˆ˜์ •๋œ ํ”„๋ฆฌ์…‹์ด ๋งŽ๋‹ค. ๊ทธ๋ž˜๋„ ์•„๋ž˜์˜ ์ธ์ฝ”๋”๋“ค๋ณด๋‹ค ํ™”์งˆ์ด ํ›จ์”ฌ ์ข‹๊ฒŒ ๋‚˜์˜จ๋‹ค.[6] ์ • ๊ท€์ฐฎ์œผ๋ฉด ์•„๋ž˜ ๋‚˜์˜ค๋Š” ์ธ์ฝ”๋”๋ฅผ ์จ๋„ ๋œ๋‹ค.

4.2. FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ธ์ฝ”๋”[ํŽธ์ง‘]

  • ์ œํŠธ์˜ค๋””์˜คVX(๋ฌด๋ฃŒ ํ˜น์€ ์œ ๋ฃŒ, ์ฝ”์›)
  • ์œ ๋งˆ์ผ
  • ์—”์ ค์ธ์ฝ”๋”
  • ์ƒค๋‚˜์ธ์ฝ”๋” - ๊ฐœ์ธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์ธ์ฝ”๋” ์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๊ฐ€๋ณ๊ฒŒ ์ธ์ฝ”๋”ฉํ•˜๋Š” ์šฉ๋„๋กœ๋Š” ๋งค์šฐ ์ข‹๋‹ค. ๋ฌด๋ฃŒ.
  • Freemake - ์„œ์–‘์—์„œ ์œ ๋ช…ํ•œ ์ธ์ฝ”๋”ฉ ํ”„๋กœ๊ทธ๋žจ. ๊ทธ๋Ÿฌ๋‚˜ ๋žœ์„ฌ์›จ์–ด ์œ ํฌ ์œ„ํ—˜์ด ์žˆ๋‹ค.
  • Mencoder
  • Handbrake - ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์ธ์ฝ”๋”. MPEG-4์™€ MPEG-2๋ฅผ ์ธ์ฝ”๋”ฉํ• ๋•Œ FFmpeg๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. H.264, HEVC์™€ Theora๋„ ์ง€์›ํ•œ๋‹ค.
  • WInff - ffmpeg๋ฅผ GUI๋กœ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค

๋ฌผ๋ก  ์ด ๋ชฉ๋ก ๋ง๊ณ ๋„, ๋Œ€๋‹ค์ˆ˜์˜ ์‰ฌ์šด ์ธ์ฝ”๋”๋ฅผ ์ž์ฒ˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ๋Œ€๋ถ€๋ถ„ FFmpeg๊ธฐ๋ฐ˜์ด๋‹ค.

4.3. FFmpeg๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์„œ๋น„์Šค[ํŽธ์ง‘]

  • ๋‹ˆ์ฝ”๋‹ˆ์ฝ” ๋™ํ™”, ์•„ํ”„๋ฆฌ์นด ๋“ฑ์˜ ์ธํ„ฐ๋„ท ๋™์˜์ƒ ์‚ฌ์ดํŠธ
    • ๋งŽ์€ ์ธํ„ฐ๋„ท ๋™์˜์ƒ ์‚ฌ์ดํŠธ๋“ค๋„ ffmpeg๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์˜์ƒ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„์„œ ๋œฏ์–ด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, Lavf(libavformat)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜์ƒ ์ธ์ฝ”๋”ฉ์—๋„ libavcodec๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

4.4. ์ผ๋ฐ˜์ ์ธ ์˜ต์…˜[ํŽธ์ง‘]

  • -i [input]
    • ์ž…๋ ฅ ํŒŒ์ผ์„ ์ง€์ •ํ•œ๋‹ค.
  • -vcodec [codec], -acodec [codec] ๋˜๋Š” -c:v [codec], -c:a [codec]
    • ๋น„๋””์˜ค ์ฝ”๋ฑ, ์˜ค๋””์˜ค ์ฝ”๋ฑ์„ ์ง€์ •ํ•œ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋ฑ์€ ffmpeg -encoders ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. copy๋กœ ์ง€์ •ํ•˜๋ฉด ๊ธฐ์กด ์ŠคํŠธ๋ฆผ์„ ์ธ์ฝ”๋”ฉ ํ•˜์ง€ ์•Š๊ณ (direct stream) ๋ณต์‚ฌํ•œ๋‹ค.
  • -vf [filter], -af [filter]
    • ๋น„๋””์˜ค, ์˜ค๋””์˜ค์— ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•œ๋‹ค. ๋ฆฌ์‚ฌ์ด์ฆˆ๋ฅผ ํ•˜๊ฑฐ๋‚˜ ์Šคํ”ผ๋“œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ass, srt ์ž๋ง‰์„ ์ž…ํžˆ๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ๊ฒƒ์€ ffmpeg์˜ ํ•„ํ„ฐ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž. ์ฐธ๊ณ ๋กœ ์ž๋ง‰์„ ์ž…ํžˆ๋Š” ๊ฑด ํฐํŠธ ๋•Œ๋ฌธ์— ์œˆ๋„์—์„œ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ด ์ค˜์•ผ ํ•œ๋‹ค.
  • -b:v [bitrate], -b:a [bitrate]
    • ๋น„๋””์˜ค, ์˜ค๋””์˜ค์˜ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • -crf [quality]
    • ๋น„ํŠธ๋ ˆ์ดํŠธ ๋Œ€์‹  ํ™”์งˆ ๊ธฐ์ค€์œผ๋กœ ์ธ์ฝ”๋”ฉํ•  ๋•Œ ์“ฐ๋Š” ์˜ต์…˜. 0-51, 0์€ ๋ฌด์†์‹ค, ๋””ํดํŠธ๋Š” 23
  • -y
    • ํŒŒ์ผ์„ ๋ฎ์–ด์“ธ ์ผ์ด ์žˆ์–ด๋„ ๋ฌผ์–ด๋ณด์ง€ ์•Š๋Š”๋‹ค.
  • -re
    • ์ธ์ฝ”๋”ฉ ์†๋„๋ฅผ 1x(์‹ค์‹œ๊ฐ„)์œผ๋กœ ์ œํ•œํ•œ๋‹ค. ๋กœ์ปฌ ํŒŒ์ผ์„ ffserver๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ ์‹ค์‹œ๊ฐ„์œผ๋กœ feed๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•˜๋‹ค.
  • -f [container]
    • ์ถœ๋ ฅ ํฌ๋งท์„ ์ง€์ •ํ•œ๋‹ค. ๋”ฐ๋กœ ์ ์ง€์•Š์œผ๋ฉด ํŒŒ์ผ๋ช…์— ๋งž์ถฐ์„œ ํ•ด์ค€๋‹ค.
  • -t [time]
    • ์ง€์ •๋œ ์‹œ๊ฐ„ (์ดˆ ๋‹จ์œ„)๋งŒํผ ์ธ์ฝ”๋”ฉํ•œ๋‹ค.
  • -ss [time]
    • ์ง€์ •๋œ ์‹œ๊ฐ„ (์ดˆ ๋‹จ์œ„)๋งŒํผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ธ์ฝ”๋”ฉํ•œ๋‹ค. hh:mm:ss ๋ฐฉ์‹์œผ๋กœ๋„ ํ‘œ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

4.5. ์˜ˆ์‹œ[ํŽธ์ง‘]

์ผ๋ฐ˜ ์˜์ƒ์„ ์Šค๋งˆํŠธํฐ ๋“ฑ์— ๋งž์ถ”์–ด ์žฌ์ธ์ฝ”๋”ฉ ํ• ๋•Œ๋‚˜ ๋ธ”๋ฃจ๋ ˆ์ด ์›๋ณธ ์˜์ƒ์„ ์ธ์ฝ”๋”ฉํ• ๋•Œ [7]์˜ ์„ค์ •์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

ffmpeg -i filename.mp4 -sn -c:v libx264 -preset medium -crf 23 -tune animation -sws_flags lanczos -filter:v "scale=-1:720" -c:a aac -b:a 192k -ac 2 outfile.mkv
  • "-i filename.mp4" - ์ž…๋ ฅ ํŒŒ์ผ๋กœ filename.mp4๋ฅผ ์ง€์ •ํ•œ๋‹ค. ํ™•์žฅ์ž๋ฅผ ํฌํ•จ์‹œ์ผœ์•ผ ํ•œ๋‹ค.
  • "-threads 0" - ์‚ฌ์šฉํ•  ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•œ๋‹ค 0์€ ๋ชจ๋‘. 0์ด ๋””ํดํŠธ๋ผ ์ƒ๋žตํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.
  • "-sn" - ๋‚ด์žฅ์ž๋ง‰์„ ์ธ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋‚ด์žฅ์ž๋ง‰์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์œผ๋ฉด -c:s copy๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
  • "-vcodec libx264" - libx264๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ H.264๋กœ ์ธ์ฝ”๋”ฉ. MPEG4๋ฅผ ์“ฐ๋ ค๋ฉด libxvid, VP8์„ ์“ฐ๋ ค๋ฉด libvpx๋กœ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋ฐ‘์€ ์˜ต์…˜ ์ค‘ libx264์˜ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๋ฌผ๋ก  ๋‹ฌ๋ผ์ง€์ง€๋งŒ ๋Œ€์ถฉ ๋น„์Šทํ•˜๋‹ค. ๋‹ค์–‘ํ•œ ์˜ต์…˜์€ ์˜์–ด๊ฐ€ ๋œ๋‹ค๋ฉด ffmpeg ์œ„ํ‚ค ์ฐธ์กฐ.
  • "-preset medium" - libx264์˜ ํ”„๋ฆฌ์…‹์„ ์ด์šฉํ•˜๋Š”๊ฒƒ์œผ๋กœ very slow, slower, slow, medium, fast, faster, veryfast ๋“ฑ์˜ ์˜ต์…˜์ด ์žˆ๋‹ค. ultrafast๋‚˜ placebo (์ด๋ ‡๊ฒŒ ๋А๋ ค์ง€๋ฉด ํ™”์งˆ ๊ฐœ์„ ์ด ํ”Œ๋ผ์‹œ๋ณด ํšจ๊ณผ ์ด์ƒ์˜ ๋ฌด์–ธ๊ฐ€๋Š” ์—†๋‹ค๋ผ๋Š” ์ˆ˜์ค€) ๋“ฑ์˜ ์˜ต์…˜๋„ ์žˆ์ง€๋งŒ ๋ณดํ†ต ์‚ฌ๋žŒ๋“ค์€ ์“ธ ์ผ ์—†๋‹ค (...) ๋‹น์—ฐํžˆ slow์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ์ธ์ฝ”๋”ฉ์€ ๋А๋ ค์ง„๋‹ค. CRF๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ์„ ํ• ๋•Œ๋Š” ์šฉ๋Ÿ‰์— ๊ด€์—ฌ์„ ํ•˜๋ฉฐ, ๋น„ํŠธ๋ ˆ์ดํŠธ ์ง€์ •์œผ๋กœ ์ธ์ฝ”๋”ฉ์„ ํ•  ์‹œ ํ™”์งˆ์— ๊ด€์—ฌ๋œ๋‹ค. CRF์ธ์ฝ”๋”ฉ ๊ธฐ์ค€ slow์˜ ๊ฒฝ์šฐ medium์— ๋น„ํ•ด ์ธ์ฝ”๋”ฉ ์‹œ๊ฐ„์ด 50~66% ๋Š˜์–ด๋‚˜์ง€๋งŒ ์šฉ๋Ÿ‰์€ 0~4%์ •๋„ ์ค„์–ด๋“ ๋‹ค. veryslow์˜ ๊ฒฝ์šฐ๋Š” ์•ฝ 4.5๋ฐฐ์ •๋„ ์ธ์ฝ”๋”ฉ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚˜๋ฉฐ ์šฉ๋Ÿ‰ ์ด๋“์€ 12%์ •๋„๋‹ค.[8]
  • "-crf 23" - CRF๋Š” ๊ณ ์ • ๋น„ํŠธ๋ ˆ์ดํŠธ ์ธ์ฝ”๋”ฉ์ด ์•„๋‹Œ "๊ฐ€๋ณ€ ๋น„ํŠธ๋ ˆ์ดํŠธ ํ™”์งˆ์šฐ์„  ์ธ์ฝ”๋”ฉ"๋ฐฉ์‹์œผ๋กœ์„œ ์˜ต์…˜๊ฐ’์€ 0์—์„œ 51๊นŒ์ง€์˜ ์„ค์ •์ด ๊ฐ€๋Šฅํ•œ๋ฐ ๊ฐ’์ด ๋‚ฎ์„ ์ˆ˜๋ก ๊ณ ํ™”์งˆ์ด๋‹ค. 18 ์ •๋„๋ฉด ๊ฑฐ์˜ ๋ฌด์†์‹ค์ด๊ณ  ๊ธฐ๋ณธ๊ฐ’์ธ 23 ์ •๋„๋ฉด ์ƒ๋‹นํžˆ ๊ณ ํ™”์งˆ์œผ๋กœ์„œ ์˜ํ™”๋‚˜ ๋ฏธ๋“œ๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š”๋ฐ ์ ์ ˆํ•˜๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜์€ ๋ณดํ†ต 25~27์˜ ๊ฐ’์„ ์“ด๋‹ค. ํ™”์งˆ์ด ๋‚˜์œ(๊น๋‘๊ธฐ ํฌ๋ฆฌ๋ฅผ ๋งž์€) mpeg2๋ฐฉ์‹์˜ HDTV์›๋ณธ์„ ์žฌ์ธ์ฝ”๋”ฉํ• ๋•Œ๋Š” CRF๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด ์›๋ณธ๋ณด๋‹ค ๋” ํฌ๊ฒŒ ์ธ์ฝ”๋”ฉ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๊ณ ์ • ๋น„ํŠธ๋ ˆ์ดํŠธ ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ์„ ํ•˜๋Š”๊ฒŒ ๋‚ซ๋‹ค.[9] ๊ณ ์ • ๋น„ํŠธ๋ ˆ์ดํŠธ ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด -crf 23 ๋Œ€์‹ ์— -vb 2000k ์ด๋ ‡๊ฒŒ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.
  • "-tune animation" - libx264์˜ tune ์˜ต์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ƒ‰๊ฐ๊ณผ๋Š” ๊ด€๊ณ„๊ฐ€ ์—†๊ณ  deblock ์œ„์ฃผ๋กœ ์˜ต์…˜์„ ์กฐ์ •ํ•œ๋‹ค. animation ์˜ต์…˜์€ deblock ๊ฐ’์„ ๋†’์—ฌ์„œ ํ™”๋ฉด์„ ์ข€ ๋” ๋ญ‰๊ฒŒ์ค€๋‹ค. ์ผ๋ฐ˜์ ์ธ ์˜ํ™”๋‚˜ ํ‹ฐ๋น„์˜์ƒ์˜ ๊ฒฝ์šฐ film ์˜ต์…˜์„ ์“ด๋‹ค.
  • "-sws_flags lanczos -vf "scale=1280:-1"" lanczos๋ž€ ๋ฆฌ์‚ฌ์ด์ฆˆ ํ•„ํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ 720p๋กœ ๋ฆฌ์‚ฌ์ด์ฆˆ. -1์€ ํ™”๋ฉด๋น„์— ๋งž์ถฐ์„œ ์ž๋™์œผ๋กœ ์„ธ๋กœ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ์ž๋™์œผ๋กœ ๋ฆฌ์‚ฌ์ด์ฆˆํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” 1280:718 ์ด๋Ÿฐ์‹์œผ๋กœ ์ด์ƒํ•œ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋‚˜์˜ฌ์ˆ˜ ์žˆ์œผ๋‹ˆ ์™ ๋งŒํ•˜๋ฉด ์ˆ˜๋™์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์ž. ์ด VF๋ช…๋ น์ค„์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•„ํ„ฐ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. libass๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž๋ง‰์„ ํ•˜๋“œ์ฝ”๋”ฉ ํ•  ์ˆ˜๋„ ์žˆ๊ณ  yadif๋กœ ๋””์ธํ„ฐ๋ ˆ์ด์‹ฑ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค ivtc๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ffmpeg ํ•„ํ„ฐ ๋ฌธ์„œ ์ฐธ์กฐ.
  • "-c:a aac -b:a 192k -ac 2" AAC ์ฝ”๋ฑ์œผ๋กœ 192k์ •๋„์— ๋งž์ถฐ์„œ 2์ฑ„๋„๋กœ ๋‹ค์šด๋ฏน์‹ฑํ•˜์—ฌ ์ธ์ฝ”๋”ฉํ•œ๋‹ค. AAC ์™ธ์˜ MP3๊ฐ™์€ ํฌ๋ฉง๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, OPUS์™€ Vorbis๋ฅผ ์ œ์™ธํ•˜๋ฉด ์Œ์งˆ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ถ”์ฒœ ํ•œ๋‹ค.[10] ์ด๋ณด๋‹ค๋„ ๊ณ ํ’ˆ์งˆ๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด opus ํ˜น์€ Vorbis๋ฅผ ์“ฐ๊ฑฐ๋‚˜, ํ”„๋ผ์šดํ˜ธํผ AAC์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ง์ ‘ ffmpeg์„ ์ปดํŒŒ์ผ ํ•ด์„œ ์ธ์ฝ”๋”ฉ์„ ํ•ด์•ผํ•œ๋‹ค.[11], Vorbis๋ฅผ ์ด์šฉํ•˜์—ฌ -acodec libvorbis -ac 2 -aq 4 ์ด๋Ÿฐ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ Vorbis์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๊ธฐ์—์„œ ํ˜ธํ™˜์„ฑ์€ ๋–จ์–ด์ง„๋‹ค.[12] ๋” ๋‹ค์–‘ํ•œ ์˜ต์…˜์€ FFmpeg ๊ณต์‹ ์˜ค๋””์˜ค ์ธ์ฝ”๋”ฉ ๊ฐ€์ด๋“œ ์ฐธ์กฐ.
  • "outfile.mkv" - ์ถœ๋ ฅ ํŒŒ์ผ๋ช…์ด๋‹ค. ํ™•์žฅ์ž์— ๋”ฐ๋ผ ์˜์ƒ ์ปจํ…Œ์ด๋„ˆ(avi, mp4, mkv๊ฐ™์€)๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•ด์ฃผ๊ธด ํ•˜์ง€๋งŒ, ๊ฐ€๊ธ‰์ ์ด๋ฉด -format ์˜ต์…˜์œผ๋กœ ์ถœ๋ ฅ ํฌ๋งท์„ ์ง€์ •ํ•ด ์ฃผ๋„๋ก ํ•˜์ž. ์ฐธ๊ณ ๋กœ ํ™•์žฅ์ž๊ฐ€ mp4์ธ ๊ฒฝ์šฐ์—๋Š” ์Œ์„ฑ์ฝ”๋ฑ์œผ๋กœ AAC, MP2, MP3, AC3 ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. Vorbis, Opus ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•จ. MKV๊ฐ€ ๊ฐ€์žฅ ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค. ํ˜„์กดํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํฌ๋ฉง์„ ๋‹ด์„ ์ˆ˜ ์žˆ์„ ์ •๋„.

2015๋…„ 12์›”๋ถ€๋กœ ffmpeg์˜ ๋‚ด์žฅ AAC ์ธ์ฝ”๋”๊ฐ€ ๋Œ€ํญ ๊ฐœ์„ ๋˜์—ˆ๋‹ค๊ณ  ๋ฐœํ‘œํ–ˆ๋‹ค. ๋งํฌ1 ๋งํฌ2 ์ œ์ž‘์ž๋Š” libfdk_aac์™€ ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ์ข€ ๋” ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ ์จ๋ณธ ์‚ฌ์šฉ์ž์— ์˜ํ•˜๋ฉด VBR ๋ชจ๋“œ๋กœ๋Š” ์—ฌ์ „ํžˆ ๋ถ€์กฑํ•˜๋‹ค๊ณ  ํ•˜์ง€๋งŒ CBR ๋ชจ๋“œ๋กœ๋Š” ์ฉ ๊ดœ์ฐฎ๋‹ค์นด๋”๋ผ ๋งํฌ. ์ฐธ๊ณ ๋กœ ffmpeg์ธก์˜ ์ฃผ์žฅ๋Œ€๋กœ ๋‚ด์žฅ aac๊ฐ€ (์Šคํ…Œ๋ ˆ์˜ค์ฑ„๋„) 128kbps์ •๋„์—์„œ ์Œ์งˆ์ด ์ƒ๋‹นํ•œ ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ libfdk_aac์— ๋น„ํ•ด ์ธ์ฝ”๋”ฉ ์†๋„๋Š” ๋‹ค์†Œ ๋А๋ฆฐํŽธ์ด๋‹ค. (๋Œ€์‹  ๋นŒ๋“œ๋ฅผ ๋”ฐ๋กœ ํ•  ํ•„์š” ์—†์–ด Zeranoe FFmpeg Build ๊ฐ™์ด ๋ผ์ด์„ ์Šค ๋ฌธ์ œ๋กœ libfdk_aac๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ํฌํ•จํ•ด์„œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋กœ ๊ณต๊ฐœํ•˜๋Š” ๊ฒƒ๋“ค์„ ๊ฑ ์“ฐ๋˜ ์‚ฌ๋žŒ๋“ค์˜ ํŽธ๋ฆฌ์„ฑ์€ ๊ทน๋Œ€ํ™” ๋œ ๋“ฏ)

4.6. ํ”„๋ผ์šดํ˜ธํผ AAC์ธ์ฝ”๋” libfdk_aac ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋นŒ๋“œ[ํŽธ์ง‘]

๋‚ด์žฅ AAC ์ธ์ฝ”๋”๊ฐ€ ์˜ ์ข‹์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— FFmpeg์—์„œ ๋ณด๋‹ค ๊ณ ํ’ˆ์งˆ์˜ AAC ์˜ค๋””์˜ค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”„๋ผ์šดํ˜ธํผ ์ฝ”๋ฑ์„ ์“ฐ๋Š”๊ฒŒ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ๋ผ์ด์„ผ์Šค ๋ฌธ์ œ๋กœ ๋ฐฐํฌ๋˜์ง€๋Š” ๋ชปํ•˜๊ณ  ์ง์ ‘ ์ปดํŒŒ์ผํ•ด์„œ ์จ์•ผ๋œ๋‹ค. ์ผ๋ณธ์—์„œ ์‰ฝ๊ฒŒ ๋นŒ๋“œํ• ์ˆ˜ ์žˆ๋„๋ก ํˆด์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค. http://www.sakura-zaka.net/ffmpeg/ ๊ตฌ๊ธ€ ๋ฒˆ์—ญ๊ธฐ๋กœ ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ์ˆ˜ ์žˆ๋‹ค.
๋‹จ, ์ผ๋ณธ์–ด ์œˆ๋„์šฐ ์ „์šฉ์œผ๋กœ ์ œ์ž‘๋œ ํˆด์ด๋ผ ๋งˆ์ง€๋ง‰์— ๋ฐ”ํƒ•ํ™”๋ฉด์— ๋นŒ๋“œ.lnk ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ .NET Framework ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด์„œ ๋ฐ”ํƒ•ํ™”๋ฉด์— ์•„์ด์ฝ˜์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์—๋Ÿฌ๊ฐ€ ๋œจ๋ฉด Quit ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์ข…๋ฃŒํ•˜๋ฉด ๋œ๋‹ค. ์œˆ๋„์šฐ ์ผ๋ณธ์–ด ์–ธ์–ดํŒฉ์„ ๊น”์•„๋„ ์†Œ์šฉ์—†์œผ๋‹ˆ ์ฃผ์˜ํ•  ๊ฒƒ. .NET Framework ์ผ๋ณธ์–ด ์–ธ์–ดํŒฉ์ด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์˜ค๋ฅ˜๋กœ ๋ฐ”ํƒ•ํ™”๋ฉด์— ๋งํฌํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•„๋„ ์‹คํ–‰ํŒŒ์ผ์„ ์ง์ ‘ ์ฐพ์•„์„œ ๋นŒ๋“œํ•˜๋ฉด ๋œ๋‹ค.
32๋น„ํŠธ: oreBuildmingw32msyshomex86_binore_BuildTool.exe
64๋น„ํŠธ: oreBuildmingw64msyshomex64_binore_BuildTool.exe
๋นŒ๋“œํ•˜๋Š”๋ฐ ์ƒ๋‹นํ•œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉฐ 2๊ธฐ๊ฐ€ ์ •๋„์˜ ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•˜๋‹ค. ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋œ FFmpeg.exe ํŒŒ์ผ์˜ ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
32๋น„ํŠธ: oreBuildmingw32_ffmpeg_ffmpeg.exe
64๋น„ํŠธ: oreBuildmingw64_ffmpeg_ffmpeg.exe
๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋‚˜๋จธ์ง€ ํŒŒ์ผ๋“ค์€ ์ง€์›Œ๋„ ๋œ๋‹ค. ffmpeg -encoders ์‹คํ–‰ํ•ด์„œ libfdk_aac๊ฐ€ ๋ณด์ด๋ฉด ์„ฑ๊ณต์ด๋‹ค. ์ด ํŒŒ์ผ์„ ๋ฌด๋‹จ๋ฐฐํฌํ•˜๋ฉด ๋ผ์ด์„ผ์Šค ์œ„๋ฐ˜์ด๋‹ˆ ์ฃผ์˜ํ•  ๊ฒƒ. ํ˜ผ์ž๋งŒ ์‚ฌ์šฉํ•˜์ž.

์ฃผ์˜์‚ฌํ•ญ์œผ๋กœ ํ”„๋ผ์šดํ˜ธํผ AAC ์ธ์ฝ”๋”๋Š” ๋”ฐ๋กœ ๋Œ€์—ญํญ ์˜ต์…˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณ ์ • ๋น„ํŠธ๋ ˆ์ดํŠธ ์˜ต์…˜์—์„  ์•„๋ฌด๋ฆฌ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์˜ฌ๋ ค๋„ 17,000Hz ์ด์ƒ์˜ ์ฃผํŒŒ์ˆ˜๋Š” ์นผ๊ฐ™์ด ๋‚ ๋ ค๋ฒ„๋ฆฐ๋‹ค. ๊ฐ€๋ณ€ ๋น„ํŠธ๋ ˆ์ดํŠธ ์˜ต์…˜๋„ ์—ญ์‹œ ๋Œ€์—ญํญ ์ง€์ •์ด ์—†์„๊ฒฝ์šฐ ์ตœ๊ณ ๋“ฑ๊ธ‰์ธ 5๋Š” ์ œํ•œ์ด ์—†์ง€๋งŒ ๋ฐ”๋กœ ์•„๋ž˜ ๋“ฑ๊ธ‰์ธ 4์—์„œ๋„ 15.5kHz์˜ ์ œํ•œ์ด ๊ฑธ๋ฆฐ๋‹ค. ๋‚ฎ์€ ๋น„ํŠธ๋ ˆ์ดํŠธ ์ธ์ฝ”๋”ฉ์—์„  ์ดํ•ด๊ฐ€ ๊ฐ€๋Š” ๋ถ€๋ถ„์ด์ง€๋งŒ ๋†’์€ ๋น„ํŠธ๋ ˆ์ดํŠธ์—์„œ๋„ ์ด๋Ÿฌ๋Š”๊ฑด ์•„๋ฌด๋ฆฌ ๋ด๋„ ์ •์‹ ์ค„์„ ๋†“์€๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ์ด ์—ฐ๊ตฌ์†Œ์—๋Š” ๊ณ ์ฃผํŒŒ๋Š” ๋ชป๋“ฃ๋Š” ๋…ธ์ธ๋„ค๋“ค๋งŒ ์žˆ๋Š” ๋ชจ์–‘์ด๋‹ค. ์ด๋Ÿฌ๋‹ˆ๊นŒ MP3์ธ์ฝ”๋”์—์„œ Lameํ•œํ…Œ ๊ด€๊ด‘์„ ๋‹นํ•˜์ง€ ๋น„ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๋†’์—ฌ์„œ ์ธ์ฝ”๋”ฉ ํ• ๋•Œ๋Š” ์ด ๋ถ€๋ถ„์˜ ์ง€์ •์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค. -cutoff 18000 ์˜ต์…˜์—์„œ ์ปท์˜คํ”„ ์ฃผํŒŒ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์ฃผ์ž. ์ตœ๋Œ€๊ฐ’์€ 20000.[13] ๋‹จ, ๋‚ฎ์€ ๋น„ํŠธ๋ ˆ์ดํŠธ์—์„œ ์ปท์˜คํ”„ ์ฃผํŒŒ์ˆ˜๋ฅผ ๋ฌด๋ฆฌํ•˜๊ฒŒ ๋†’๊ฒŒ ์žก์œผ๋ฉด ์ž˜ ๋“ค๋ฆฌ์ง€๋„ ์•Š๋Š” ๊ณ ์ฃผํŒŒ ๋ถ€๋ถ„์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์žก์•„๋จน์–ด์„œ ์ •์ž‘ ์ค‘์š”ํ•œ ์ €์ฃผํŒŒ์˜์—ญ ์Œ์งˆ์ด ๊ณจ๋ฃธํ•ด์งˆ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ž˜ ํŒ๋‹จํ•˜์ž. ์ž์„ธํ•œ ์ธ์ฝ”๋”ฉ ์˜ต์…˜์€ https://trac.ffmpeg.org/wiki/Encode/AAC์—์„œ ํ™•์ธ.
๊ทธ ์™ธ์— FFmpeg Launcher๋„ ๊ฐ™์ด ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ผ๋ณธ์–ด ๋Šฅ๋ ฅ์ž๋ผ๋ฉด ์‚ฌ์šฉํ•ด ๋ณด์ž. ์œˆ๋„์šฐ ์ƒ์—์„œ ์‰ฝ๊ฒŒ ์ธ์ฝ”๋”ฉ ํ• ์ˆ˜ ์žˆ๋‹ค.

์ • ์•ˆ๋˜๋ฉด https://github.com/m-ab-s/media-autobuild_suite ๋ฅผ ์จ๋ณด๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ด๋‹ค. ์˜๋ฌธ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฏ€๋กœ ๊ถ‚์ด ์–ธ์–ด์— ์ œ์•ฝ๋ฐ›์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ธํ„ฐ๋„ท๋งŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด ์ด๋ก ์ƒ MSYS2๊ฐ€ ์ง€์›๋˜๋Š” ์–ด๋–ค ์œˆ๋„์šฐ์ฆˆ ์ƒ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ์‹œ๊ฐ„๋งŒ ์žˆ์œผ๋ฉด ๊ณต๊ฐ„ ๋„‰๋„‰ํ•œ ์™ธ์žฅํ•˜๋“œ(๋Œ€๋žต 14๊ธฐ๊ฐ€ ์ •๋„ ๋จน๋Š”๋‹ค)์— ํด๋” ํ•˜๋‚˜ ๋งˆ๋ จํ•ด์„œ ์‹คํ–‰์‹œํ‚ค๊ณ  ๊ฒฐ๊ณผ๋ฌผ๋งŒ ์‹œ์Šคํ…œ์— ์˜ฎ๊ฒจ๋ฒ„๋ ค๋„ ๋œ๋‹ค. ํ”„๋ผ์šดํ˜ธํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ AV1, nvenc ๋“ฑ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค ์ฐพ์•„์„œ ์ปดํŒŒ์ผํ•œ๋‹ค. ๊ธฐ๋ณธ ์„ธํŒ…์€ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ •์ ์œผ๋กœ ffmpeg.exe ์— ๋ฐ•์•„๋„ฃ๊ฒŒ ๋˜์–ด ์žˆ์œผ๋‹ˆ ์ปดํŒŒ์ผ๋œ ๊ฒฐ๊ณผ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ github ์†Œ์Šค๋‹ˆ ๊ฐ€๋” ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

๋งŒ์ผ ๋ฆฌ๋ˆ…์Šค๋ผ๋ฉด https://github.com/markus-perl/ffmpeg-build-script ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐธ์กฐํ•ด ๋ณด์ž. ์ผ๋‹จ ๋ฐ๋น„์•ˆ/์šฐ๋ถ„ํˆฌ์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์—์„œ๋Š” ์‚ด์ง ๋งˆ์‚ฌ์ง€๋ฅผ ํ•ด ์ค˜์•ผ ํ•œ๋‹ค.

5. ๊ทธ ์™ธ ffmpeg์„ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋“ค[ํŽธ์ง‘]

6. ๊ตญ์‚ฐ ํ”Œ๋ ˆ์ด์–ด์˜ GPL ์œ„๋ฐ˜ ์˜ํ˜น[ํŽธ์ง‘]

KMPlayer, ๊ณฐํ”Œ๋ ˆ์ด์–ด, ํŒŸํ”Œ๋ ˆ์ด์–ด 3๊ฐœ ํ”Œ๋ ˆ์ด์–ด์˜ ๊ฒฝ์šฐ GPL ์œ„๋ฐ˜ ์˜ํ˜น์ด ์žˆ๋‹ค. FFmpeg์˜ GPL ๋ถ€๋ถ„์„ ํฌํ•จํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์ด ๋ถ€๋ถ„์ด ๋งŽ์ด ์“ฐ์ด๋Š” ์ฝ”๋ฑ๊ณผ ์—†์–ด์„  ์•ˆ ๋˜๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ œ์™ธํ•˜๊ณ  LGPL ๋ถ€๋ถ„๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ์ด ๋•Œ๋ฌธ์— 3๊ฐœ ํ”Œ๋ ˆ์ด์–ด ์ „๋ถ€ FFmpeg์„ ๋ณ„๋‹ค๋ฅธ ์ƒ๊ฐ ์—†์ด ๋‚ด์žฅํ–ˆ๋‹ค๊ฐ€ GPL ์œ„๋ฐ˜ ์˜ํ˜น์„ ์‚ฌ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ์ œ๊ธฐ๋œ ์ดํ›„ ๋Œ€๋ถ€๋ถ„์˜ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ณ„๋‹ค๋ฅธ ๋Œ€์‘์ด ์—†๋Š” ์™€์ค‘์— ํŒŸํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์†Œ์Šค๋ฅผ ๊ณต๊ฐœํ•˜์˜€๋‹ค. LGPL ๋ผ์ด์„ ์Šค์™€ ํ•จ๊ป˜ ์ˆ˜์ •๋œ FFmpeg ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๊ธ€๋กœ๋ฒŒ ๋ฒ„์ „์„ ์ถœ์‹œํ•˜๋ฉฐ ๊ธฐ๋ณธ ์„ค์น˜ ํŒจํ‚ค์ง€์—์„œ FFmpeg๋ฅผ ๋นผ ๋ฒ„๋ ธ๋‹ค. ๋‹ค๋งŒ, ์„ค์น˜ ์™„๋ฃŒ ํ™”๋ฉด์—์„œ 'Open Codec for PotPlayer'๋ฅผ ์ฒดํฌํ•˜๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ถ”๊ฐ€ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ํ›„์— ์„ค์น˜๊ฐ€ ์ง„ํ–‰๋œ๋‹ค. ํ˜น์‹œ ์ด ๊ณผ์ •์„ ๊ฑด๋„ˆ ๋›ฐ์—ˆ๋‹ค๋ฉด ์„œ๋ฒ„์—์„œ ํŒŒ์ผ์„ ์ง์ ‘ ๋‹ค์šด๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค. (32๋น„ํŠธ์šฉ, 64๋น„ํŠธ์šฉ)

iOS์˜ AVPlayer์˜ ๊ฒฝ์šฐ ์†Œ์Šค์ฝ”๋“œ ์ „์ฒด๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์žˆ๋‹ค. #๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€ iOS์™€ ์•ฑ์Šคํ† ์–ด ์‹ฌ์‚ฌ์˜ ํŠน์„ฑ์ƒ LGPL์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์ด๋‚˜๋ฏน ๋งํฌ๋กœ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•„์˜ˆ ์†Œ์Šค์ฝ”๋“œ ์ „์ฒด๋ฅผ ๊ณต๊ฐœํ•œ ๋“ฏ ํ•˜๋‹ค.[14] ์ด ๋•Œ๋ฌธ์— ์•ฑ์Šคํ† ์–ด์—์„œ "๋ฌด์ธ์ฝ”๋”ฉ"์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด AVPlayer ์ด์™ธ์—๋„ ๋‹ค๋ฅธ ๊ตญ์‚ฐ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํŠ€์–ด ๋‚˜์˜จ๋‹ค. ๋ฌผ๋ก  ์†Œ์Šค์ฝ”๋“œ ๊ณต๊ฐœ ์ด๋Ÿฐ๊ฑฐ ์—†๋‹ค.

์ƒ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์€ ๊ทธ๋‚˜๋งˆ ์œ ๋ช…์„ธ๋ฅผ ํƒ€๊ณ  ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๋…ผ๋ž€์ด ํ•œ ๋ฒˆ ๋๊ธฐ์— ํšŒ์ž๋˜๊ณ  ์žˆ์„ ๋ฟ, ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด์˜ ํ•œ๊ตญ์‚ฐ ์•ฑ๋“ค ์ค‘์—์„œ๋„ ffmpeg๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ผ์ด์„ผ์Šค๋ฅผ ์œ„๋ฐ˜ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ์•ฑ์ด ์ˆ˜๋‘๋ฃฉ ๋นฝ๋นฝํ•˜๋‹ค.[15] ์• ํ”Œ ์•ฑ์Šคํ† ์–ด๋Š” ๋ผ์ด์„ผ์Šค ์œ„๋ฐ˜์œผ๋กœ ์•ฑ์„ ์‹ ๊ณ ํ•˜๋ฉด ์•ฑ์ด ๋‚ด๋ ค๊ฐ€๋Š” ์‚ฌ๋ก€๋„ ์™•์™• ์žˆ์œผ๋‚˜, ๋ผ์ด์„ผ์Šค ์ •์ฑ… ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜จ๊ฐ– ๋ถ€๋ถ„์—์„œ ์ •์ฑ…์ด ํ—ˆ์ˆ ํ•œ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์ชฝ์€ ์‚ฌ์‹ค์ƒ ๊ทธ๋ƒฅ ๋ฌด๋ฒ•์ง€๋Œ€๋กœ ๋ฐฉ์น˜๋˜๊ณ  ์žˆ๋Š” ์ค‘.

์ƒ์šฉ์ด๋“  ๋ฌด๋ฃŒ๋“  ๋‚ด์žฅ ์ฝ”๋ฑ์„ ์ด์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์น˜๊ณ  ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์•„๋‹Œ ์ด์ƒ GPL ์œ„๋ฐ˜์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์€ ํ˜„์‹ค์ ์œผ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. GPL ๋ผ์ด์„ ์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ „๋ถ€๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Hall of Shame์— ๋“ฑ์žฌ๋˜์–ด ์žˆ์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ์€ GPL ์œ„๋ฐ˜์ด ์•„๋‹ˆ๋ผ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋Œ€์ค‘์—๊ฒŒ ๋น„๊ต์  ๋œ ์•Œ๋ ค์ง„ ๊ฒฝ์šฐ์— ๋ถˆ๊ณผํ•˜๋‹ค. FFmpeg์— ํฌํ•จ๋œ ์ฝ”๋ฑ๋“ค๋„ ๋ผ์ด์„ ์Šค ์ด์Šˆ์—์„œ ์™„์ „ํžˆ ์ž์œ ๋กœ์šด ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. GPL ๋ผ์ด์„ ์Šค๋Š” ์ƒ์—…์  ๋ชฉ์ ์ด ์ฃผ๊ฐ€ ๋˜๋Š” ๊ฐœ๋ฐœ์ž๋“คํ•œํ…Œ์„œ ์ ์ฐจ ๊ธฐํ”ผ๋˜๊ณ  ์žˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๋ ‡๋‹ค๊ณ  GPL์„ ๋ถ€์ •์ ์œผ๋กœ ๋ณผ ์ผ์€ ์•„๋‹ˆ๋‹ค. GPL์ด ์‹ซ์œผ๋ฉด ์ž์‹ ์ด ์ง์ ‘ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด ๋œ๋‹ค. ๋‚จ์ด ๋งŒ๋“  ๊ฑธ ๊ธˆ์ „์ ์ธ ๋Œ€๊ฐ€ ์—†์ด ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด์„œ ์•„๋ฌด ์ฑ…์ž„๋„ ์•ˆ ์ง€๋ ค๋Š” ๊ฒŒ ์ด๊ธฐ์ ์ธ ๊ฒƒ์ด๋‹ค. ์• ์ดˆ์— GPL์— ์†Œ์Šค ๊ณต๊ฐœ ๊ฐ•์ œ์กฐํ•ญ์ด ๋“ค์–ด๊ฐ„ ๊ฒƒ๋„ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ์ž๊ธฐ ์ฝ”๋“œ๋Š” ๋‚ด๋†“์ง€ ์•Š๋Š” ๋จนํŠ€๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋‹ค. [16]

[17]

7. ffmpeg? libav?[ํŽธ์ง‘]

์šฐ๋ถ„ํˆฌ๋“ฑ์˜ ๋ช‡๋ช‡ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์—๋Š” ffmpeg๋ฅผ ์„ค์น˜ํ•˜๋ฉด ffmpeg๋Œ€์‹  avconv๊ฐ€ ์„ค์น˜๋˜๋Š”๋ฐ[18], ์ด๋Š” ffmpeg์˜ ํฌํฌ์ด๋‹ค. ffmpeg ์•ˆ์—์„œ ํŒŒ๋ฒŒ์ด ๊ฐˆ๋ฆฌ๊ณ  ์‹ธ์›€์ด ์ผ์–ด๋‚ฌ๋Š”๋ฐ, ๊ทธ ๊ฒฐ๊ณผ ์˜๊ฒฌ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๋”ฐ๋กœ ๋‚˜์™€์„œ libav๋ผ๋Š” ์ƒˆ๋กœ์šด ํฌํฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. libav ์ชฝ์€ ffmpeg ์ชฝ์„ ์™„์ „ํžˆ ๋ฌด์‹œํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด์ง€๋งŒ, ffmpeg ๋Š” ์ž์‹ ๋“ค์ด ๊ฐœ๋ฐœํ•˜๋Š”๊ฒƒ์— ๋”ํ•ด์„œ, libav ์ชฝ์„ ๊ณ„์† ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉด์„œ(์•„๋ฌด๋ž˜๋„ ์˜คํ”ˆ์†Œ์Šค๋‹ˆ...) libav์—์„œ ๋งŒ๋“ ๊ฒƒ๋“ค๋„ ์ข ๊ธ์–ด๋‹ค๊ฐ€ ffmpeg์— ๊ทธ๋Œ€๋กœ ํŽธ์ž…์‹œํ‚ค๊ณ  ์žˆ๋Š” ์ƒํ™ฉ. ๋•๋ถ„์— ์™ ์ง€ ffmpeg๊ฐ€ ๋“œ๋Ÿฌ์šด ๊ฒƒ ๊ฐ™๊ธด ํ•˜์ง€๋งŒ[19], ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ffmpeg ์ชฝ์ด ๊ธฐ๋Šฅ๋ฉด์—์„œ ๋‚ซ๋‹ค. 2015๋…„ 8์›” 1์ผ, ffmpeg์˜ ๋ฆฌ๋” ๊ฐœ๋ฐœ์ž๊ฐ€ libav๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋ช…์‹œํ•˜์ง„ ์•Š์•˜์ง€๋งŒ ๋ถˆํ™”๋กœ ์ธํ•ด ffmpeg์—์„œ ๊ฐˆ๋ผ์ ธ๋‚˜์˜จ ํฌํฌ ํ”„๋กœ์ ํŠธ๋“ค์—๊ฒŒ ํ™”ํ•ด๋ฅผ ๊ณต์‹์ ์œผ๋กœ ์ œ์•ˆํ–ˆ๋‹ค.

ffmpeg์™€ libav์˜ ๊ฐˆ๋“ฑ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์—ญ์‚ฌ๋Š” #FFmpeg-libav ๋ถ„์Ÿ ๊ธฐ๋ก์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹๋‹ค.
[1] ํฌํ•จํ•ด์„œ ๋นŒ๋“œํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ ๊ธฐ๋Šฅ๊ณผ ์ตœ์ ํ™” ์ฝ”๋“œ๊ฐ€ GPL์„ ๋”ฐ๋ฅด๊ณ  ๋‚˜๋จธ์ง€๋Š” LGPL์„ ๋”ฐ๋ฅธ๋‹ค
[2] ์ •ํ™•ํžˆ๋Š” FFmpeg์˜ ์ผ๋ถ€์ธ libavcodec ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฃผ๋กœ ์“ด๋‹ค.
[3] FFmpeg ๊ฐœ๋ฐœ์ž์ค‘์—๋Š” MPlayer ๊ฐœ๋ฐœ์—๋„ ์ฐธ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งŽ๋‹ค.
[4] ์• ์‹œ๋‹น์ดˆ FFmpeg์—์„œ ํŒŒ์ƒ๋œ ํ”„๋กœ์ ํŠธ์ด๋‹ค.
[5] ๋‹จ FFmpeg ์ปดํŒŒ์ผ ์‹œ ์–ด๋–ค ์ฝ”๋ฑ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํฌํ•˜๋А๋ƒ ๋งˆ๋А๋ƒ์— ๋”ฐ๋ผ ํ•ด๋‹น ์ฝ”๋ฑ์˜ ์˜์ƒ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
[6] ์ด๊ฒƒ์€ ์ธ์ฝ”๋”๋“ค์ด ์•„์ฃผ ์˜ค๋ž˜๋œ ๋ฒ„์ „์˜ FFmpeg์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, FFmpeg์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”„๋ฆฌ์…‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
[7] ํŒŸ์ธ์ฝ”๋” ๋“ฑ ์ธ์ฝ”๋”ฉ ํ”„๋กœ๊ทธ๋žจ ๋Œ€์ฒด
[8] http://dicer.tistory.com/219 ์ฐธ์กฐ.
[9] mpeg2๋ฅผ h264๋กœ ์žฌ์ธ์ฝ”๋”ฉํ•œ๋‹ค๋ฉด ๋น„ํŠธ๋ ˆ์ดํŠธ๋Š” mpeg2์›๋ณธ์˜ ์ ˆ๋ฐ˜์ •๋„๊ฐ€ ์ ์ ˆํ•˜๋‹ค.
[10] FFmpeg ์˜ค๋””์˜ค ์ฝ”๋ฑ ์„œ์—ด libopus > libvorbis >= libfdk_aac > aac > libmp3lame >= eac3/ac3 > libtwolame > vorbis > mp2 > wmav2/wmav1
[11] ์ด ์†Œ์Šค๊ฐ€ ์•ˆ๋“œ๋กœ์ด๋“œ๊ฐ€ ์ถœ์ฒ˜์ธ๋ฐ ๋ผ์ด์„ผ์Šค ๋•Œ๋ฌธ์— ๋Œ€๋†“๊ณ  ffmpeg์— ํฌํ•จ์‹œํ‚ค์ง€๋Š” ๋ชปํ•˜๊ณ  ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ. ๋˜ํ•œ DLL๋„ ์ œ๊ณตํ•˜๋Š” ๊ฑด์ง€ ์ผ๋ถ€ FFmpeg ๊ณ„์—ด ์ธ์ฝ”๋”์— ์ด๊ฑธ DLL๋กœ ํฌํ•จํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
[12] ์ƒ์—…์šฉ ์žฅ๋น„์—์„œ ์ด๋Ÿฐ ์ผ์ด ์ข€ ์žˆ๋‹ค. ์‹ค์ œ๋กœ ์˜ฌ๋ ˆ ์Šค์นด์ด๋ผ์ดํ”„ TV์˜ USB ํŒŒ์ผ ์žฌ์ƒ์—์„œ Vorbis ์ง€์›์„ ์•ˆํ•œ๋‹ค. ์‹ฌ์ง€์–ด ์ด๋Ÿฐ ์žฅ๋น„์˜ ๊ฒฝ์šฐ smi ์ž๋ง‰์„ ์ง€์› ์•ˆํ•ด์„œ srt๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋งŽ๋‹ค.
[13] Lame MP3 encoder์˜ ๊ฒฝ์šฐ ์ตœ์‹ ๋ฒ„์ „์—์„  320kbps์—์„œ ์ฃผํŒŒ์ˆ˜ ์ปท์˜คํ”„๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค. 20,000Hz ๊นŒ์ง€ ํฌํ•จ๋œ๋‹ค
[14] ์‚ฌ์‹ค ์ด๊ฒƒ๋„ KLDP์—์„œ ํ•œ์ฐจ๋ก€ ๋…ผ๋ž€์ด ๋œ ๋์— ์ด๋ ‡๊ฒŒ ๋œ ๊ฒƒ.
[15] mms ๋ฐ ๊ทธ ํŒŒ์ƒ ํฌ๋งท์„ ์ŠคํŠธ๋ฆฌ๋ฐ(์ธํ„ฐ๋„ท ๋ฐฉ์†ก์ด๋‚˜ ๋ผ๋””์˜ค ๋”ฐ์œ„)ํ•ด์ฃผ๋Š” ์•ฑ์€ ์‹ญ์ค‘ํŒ”๊ตฌ ffmpeg๋ฅผ ๊ฐ€์ ธ๋‹ค ์ผ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ค‘์—์„œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ๋”ฐ๋ฅด๊ฑฐ๋‚˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต๊ฐœํ•œ ์•ฑ์˜ ์ˆซ์ž๋Š”...
[16] ๋‹ค๋งŒ GPL๋„ ํ—›์ ์ด ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ฑด GPL ๋ฌธ์„œ ์ฐธ์กฐ.
[17] ๋‹ค๋งŒ (C์–ธ์–ด ๊ธฐ์ค€) fork๋‚˜ exec ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ffmpeg๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” (L)GPL์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋“ฏ ํ•˜๋‹ค. ์ฐธ๊ณ 1 ์ฐธ๊ณ 2 ์ฐธ๊ณ 3 ์ฐธ๊ณ 4
[18] ๋‹จ, ์šฐ๋ถ„ํˆฌ์˜ upstream์ธ ๋ฐ๋น„์•ˆ ๋ฆฌ๋ˆ…์Šค๋Š” ๋ณด์•ˆ ๋Œ€์‘/์ปค๋ฐ‹์ˆ˜์˜ ์ฐจ์ด๋“ฑ์„ ๊ทผ๊ฑฐ๋กœ ffmpeg๋กœ ๋‹ค์‹œ ํšŒ๊ท€ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ๋น„์•ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์šฐ๋ถ„ํˆฌ ๋“ฑ์˜ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ๋“ค๋„ ์ด ํ๋ฆ„์— ๋”ฐ๋ผ๊ฐˆ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.
[19] ํ•˜์ง€๋งŒ ์›๋ž˜ ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด ๊ฒธ ์˜คํ”ˆ์†Œ์Šค๋Š” ๊ทธ๋Ÿฐ ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์ด๋‹ค.