Skip to content

Choose a codec and encoder

needs review

Start with the playback, editing, delivery, and licensing constraints. A codec with better compression is not useful when the target device cannot decode it or the required encoder is unavailable.

  1. List every required player, device, editor, and delivery platform.
  2. Identify the codecs and profiles all of them accept.
  3. Decide whether the job needs lossless, visually lossless, or lossy output.
  4. Decide whether size, encode time, decode cost, or broad compatibility has priority.
  5. Choose an encoder implementation and test a representative short segment.
  6. Choose a container that accepts every video, audio, and subtitle stream you need.
Typical goalStarting pointCheck before committing
Broad consumer playbackAVC/H.264 with AAC in MP4Profile, level, pixel format, and device limits
Efficient modern deliveryAV1, VP9, or HEVCHardware decode coverage and platform ingest rules
Editing/intermediateProRes, DNxHR, or lossless formatsEditor support, storage, chroma, and bit depth
Archival preservationLossless video and audio in a documented containerValidation, checksums, metadata, and recovery tooling

List the encoders in your FFmpeg build instead of assuming a package includes one:

Terminal window
ffmpeg -hide_banner -encoders
ffmpeg -hide_banner -h encoder=libsvtav1

Encode a short segment containing motion, texture, gradients, dark regions, and audio transitions. Inspect it on a real target device, then use ffprobe to confirm the output streams and metadata:

Terminal window
ffprobe -v error -show_format -show_streams -of json output.mkv

Do not compare CRF or preset numbers across different encoders as if they represented the same quality or speed. Compare the resulting media under the same source, scaling, pixel-format, and playback conditions.