어휘 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에 맞게 골라.