这是一个挑剔的编码器,因此您必须选择适当的参数,包括:
- 帧率
- 像素格式/色彩空间
- 宽度x高度/分辨率/框架尺寸
- 比特率
请参阅下面的有效DNxHD参数以获取可接受的值。
DNxHD示例
此示例将缩放为1280x720,选择30000/1001(也称为“ 29.97”)的帧频,以及YUV 4:2:2平面像素格式。
ffmpeg -i input -c:v dnxhd -vf "scale=1280:720,fps=30000/1001,format=yuv422p" -b:v 110M -c:a pcm_s16le output.mov
DNxHR示例
DNxHR适用于大于1080p的分辨率,例如2K,4K和8K。
如果需要DNxHR,则添加-profile:v
输出选项,例如-profile:v dnxhr_hq
。
可接受的值是:dnxhd
,dnxhr_444
,dnxhr_hqx
,dnxhr_hq
,dnxhr_sq
,dnxhr_lb
。
- DNxHR LB:
dnxhr_lb
-低带宽。8位4:2:2(yuv422p
)。离线质量。
- DNxHR SQ:
dnxhr_sq
-标准质量。8位4:2:2(yuv422p
)。适用于交货格式。
- DNxHR HQ:
dnxhr_hq
-高质量。8位4:2:2(yuv422p
)。
- DNxHR HQX:
dnxhr_hqx
-高质量。10位4:2:2(yuv422p10le
)。UHD / 4K广播质量的交付。
- DNxHR 444:
dnxhr_444
-涂饰质量。10位4:4:4(yuv444p10le
)。电影质量的交付。
上面的列表改编自DNxHR编解码器。
有效的DNxHD参数
ffmpeg
如果您提供的值不正确,则将失败,但是它可以提供接受的列表。
您可以使用以下“虚拟”命令显示列表:
ffmpeg -f lavfi -i testsrc2 -c:v dnxhd -f null -
有关帧频的重要说明
该命令生成的列表中缺少帧速率。ffmpeg
会盲目接受此编码器的任何帧速率,据报道Avid软件会接受(未确认),但是DNxHD比特率仅应与特定帧速率匹配。为了获得最大的兼容性,我建议仅使用正确的比特率/帧率组合。因此,使用上面的命令来获取可接受的正确比特率和像素格式ffmpeg
,并与Avid DNxHD分辨率列表或DNxHD白皮书(第9页)进行交叉引用以获取正确的帧频。
上面链接中列出的帧速率使用的是不正确的舍入近似值。适当的值在下面列出;缩写名称在左边,正确的值在右边。
- 29.97 = 30000/1001(或使用别名
ntsc
)
- 59.94 = 60000/1001
- 23.967 = 24000/1001(或使用别名
ntsc-film
)
更多选择
有关其他特定于编码器的选项以及受支持的像素格式的列表,请参阅:
ffmpeg -h encoder=dnxhd
失误
ff_frame_thread_encoder_init failed
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
这意味着您的帧速率,宽度,高度,像素格式和/或比特率不正确。有关可接受的值,请参阅上面的有效DNxHD参数。
pixel format is incompatible with DNxHD profile
使用格式过滤器选择合适的像素格式。请参阅上面的DNxHD示例。
ffmpeg -i <input_file> -vcodec dnxhd -b <bitrate> -an output.mov