Transcode Video to DNxHD MOV Using FFmpeg

This article provides a direct, step-by-step guide on how to transcode video files into the professional, high-quality Avid DNxHD (and DNxHR) format inside an MOV container using FFmpeg. You will learn the exact command-line syntax required, understand how to match strict DNxHD profile specifications, and discover how to handle audio to ensure broad compatibility with major non-linear editing systems.

The Basic DNxHD Transcoding Command

DNxHD is a broadcast-standard intermediate codec that requires specific combinations of resolution, frame rate, and bitrate. To transcode a standard 1080p video at 29.97 frames per second to a high-quality 8-bit DNxHD file, use the following FFmpeg command:

ffmpeg -i input.mp4 -c:v dnxhd -b:v 220M -pix_fmt yuv422p -c:a pcm_s16le output.mov

Command Breakdown

Transcoding to 10-Bit DNxHD

If your source material is 10-bit or you need to preserve maximum color information for color grading, you must increase the bitrate and change the pixel format. For a 1080p project at 29.97 fps, the standard 10-bit bitrate is 220 Mbps:

ffmpeg -i input.mp4 -c:v dnxhd -b:v 220M -pix_fmt yuv422p10le -c:a pcm_s16le output.mov

Transcoding 4K and Custom Resolutions (DNxHR)

Standard DNxHD only supports 1080p, 1080i, and 720p resolutions. If you are working with 2K, 4K, or custom resolutions, you must use DNxHR (Digital Nonlinear Extensible High Resolution). FFmpeg handles this automatically when you use the -profile:v flag instead of specifying a strict bitrate:

ffmpeg -i input_4k.mp4 -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -c:a pcm_s16le output.mov

Available DNxHR profiles include: * dnxhr_lb: Low Bandwidth (8-bit, ideal for offline proxies) * dnxhr_sq: Standard Quality (8-bit, standard editing) * dnxhr_hq: High Quality (8-bit, standard delivery) * dnxhr_hqx: High Quality 10-bit (ideal for color grading)

Resolving “pixel format/bitrate not supported” Errors

Because DNxHD relies on strict specification tables, FFmpeg will fail with an error if your input frame rate or resolution does not match standard broadcast rates.

If you encounter this error, you can force the video to scale to 1080p and set a compatible frame rate (such as 29.97 fps) during the transcode process:

ffmpeg -i input.mp4 -vf "scale=1920:1080,fps=30000/1001" -c:v dnxhd -b:v 220M -pix_fmt yuv422p -c:a pcm_s16le output.mov