C.W.K.
Stream
Lesson 08 of 10 · published

Codec vs Encoder — 같은 단어, 다른 것

~10 min · codec, encoder, decoder, h264

Level 0Viewer
0 XP0/73 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

어휘 trap

사람들이 'H.264' 라고 할 때 세 가지를 의미해: codec spec, H.264 bitstream을 만드는 encoder, 그걸 읽는 decoder. FFmpeg 은 셋을 분리해서 다뤄. 이 차이 몸에 박히면 에러 메시지가 훨씬 친절해져.

  • Codec — format spec (H.264, H.265, AV1). 표준화 단체가 정의. 'do' 안 함, 문서야.
  • Encoder — codec spec을 따르는 byte를 만드는 소프트웨어. 같은 codec을 여러 encoder가 target할 수 있어: libx264 (CPU), h264_videotoolbox (Apple Silicon hardware), h264_nvenc (NVIDIA), h264_amf (AMD), h264_qsv (Intel) 모두 H.264 만들어.
  • Decoder — bitstream byte를 읽어 raw frame 만드는 소프트웨어. 보통 codec 당 하나, 가끔 가속.

왜 중요한가

같은 codec의 다른 encoder들은 속도/품질 tradeoff가 미친듯이 달라. libx264-preset slow 가 같은 bitrate에서 hardware encoder를 품질로 자주 이겨. Hardware encoder는 속도로 압도해. workflow에 맞게 골라.

Code

특정 codec의 encoder/decoder list·bash
# 이 빌드가 지원하는 모든 H.264 encoder
ffmpeg -hide_banner -encoders 2>/dev/null | grep -i 264
# V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC
# V....D h264_videotoolbox    VideoToolbox H.264 Encoder (Apple Silicon)
# V..... h264_v4l2m2m         V4L2 mem2mem H.264 encoder (Linux)

# 모든 H.264 decoder
ffmpeg -hide_banner -decoders 2>/dev/null | grep -i 264

# HEVC, AV1도 같은 trick
ffmpeg -hide_banner -encoders 2>/dev/null | grep -iE 'hevc|265'
ffmpeg -hide_banner -encoders 2>/dev/null | grep -iE 'av1'
workflow에 맞는 encoder·bash
# CPU (최고 품질, 느림): libx264
ffmpeg -i in.mp4 -c:v libx264 -preset slow -crf 20 out_cpu.mp4

# Apple Silicon Hardware (5x 빠름, 일상 업로드 'good enough')
ffmpeg -i in.mp4 -c:v h264_videotoolbox -b:v 8M out_hw.mp4

# NVIDIA (RTX/Quadro GPU 있는 Linux/Windows)
ffmpeg -i in.mp4 -c:v h264_nvenc -preset p5 -cq 22 out_nv.mp4

External links

Exercise

머신에 H.264 encoder list (ffmpeg -encoders | grep 264) 와 H.265/HEVC encoder list. 같은 source clip을 두 가지로 encode — 하나는 libx264 -preset slow -crf 20, 다른 하나는 platform의 hardware H.264 encoder — 그리고 wall-clock time과 file size 비교. 실제 workflow에서 어느 trade를 받을까?

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.