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.movCommand Breakdown
-i input.mp4: Specifies the path to your source video file.-c:v dnxhd: Selects the Avid DNxHD/DNxHR video encoder.-b:v 220M: Sets the video bitrate. DNxHD is highly sensitive to this parameter; the bitrate must exactly match one of the standard DNxHD profiles for your video’s resolution and frame rate (e.g., 220 Mbps, 145 Mbps, or 36 Mbps for 1080p at 29.97 fps).-pix_fmt yuv422p: Sets the pixel format to 8-bit YUV 4:2:2, which is the standard for high-quality editing. For 10-bit color depth, useyuv422p10leinstead.-c:a pcm_s16le: Encodes the audio to uncompressed 16-bit PCM, which is the preferred audio format for editing environments. For 24-bit audio, usepcm_s24le.output.mov: The final output file wrapped in the QuickTime (MOV) container.
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.movTranscoding 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.movAvailable 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