如何将带有ffmpeg的video转换为DNxHD / DNxHR格式?
我正在按照一个关于如何使用cinelerra-cv的教程,在一开始就说,使用cinelerra的第一步是将任何video剪辑转换为dnxhd格式。 刚才说,没有解释如何做到这一点。
经过一些研究,我遇到了ffmpeg,但我不知道如何使用它关于dnxhd,我收集了关于ffmpeg的一点知识,我的猜测如何做到这一点:
ffmpeg -i -vcodec dnxhd
然而,这不起作用,我用ffmpeg转换成dnxhd时看到的例子我不明白,他们似乎每次都有一些不同的标签而没有解释为什么要使用它们。
这是一个挑剔的编码器,所以你必须选择适当的参数,包括:
- 帧率
- 像素格式/颜色空间
- 宽x高/分辨率/帧尺寸
- 比特率
有关可接受的值,请参阅下面的有效DNxHD参数 。
DNxHD的例子
此示例将缩放为1280×720,选择帧速率为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
-
如果您的输入文件已经符合某些可接受的参数,那么您不必手动声明它们。
-
DNxHD的输出格式容器通常是MXF或MOV。
DNxHR的例子
DNxHR适用于大于1080p的分辨率,如2K,4K和8K。
如果需要DNxHR,请添加配置文件输出选项,例如-profile dnxhr_hq
。
可接受的值是: dnxhd
, dnxhr_444
, dnxhr_hqx
, dnxhr_hq
, dnxhr_sq
, dnxhr_lb
。
- DNxHR LB – 低带宽(8位4:2:2)离线质量
- DNxHR SQ – 标准质量(8位4:2:2)(适用于交付格式)
- DNxHR总部 – 高品质(8位4:2:2)
- DNxHR HQX – 高品质(12位4:2:2)(UHD / 4K广播质量传送)
- DNxHR 444 – 精加工质量(12位4:4:4)(电影质量交付)
以上列表改编自DNxHR编解码器 。
有效的DNxHD参数
如果提供的值不正确, ffmpeg
将失败,但它可以提供接受的列表。
您可以使用以下“dummy”命令显示列表:
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
)
- 29.97 = 30000/1001(或使用别名
更多的选择
有关其他编码器特定选项,请参阅:
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
使用格式filter选择适当的像素格式。 请参阅上面的DNxHD示例。