如何将带有ffmpeg的视频转换为DNxHD / DNxHR格式?


12

我正在观看有关如何使用cinelerra-cv的教程,一开始就说过,使用cinelerra的第一步是将任何视频剪辑转换为dnxhd格式。只是说而已,没有解释如何做。

经过一番研究,我遇到了ffmpeg,但是我不知道如何针对dnxhd使用ffmpeg,因为我对ffmpeg的了解很少,所以我猜怎么做:

ffmpeg -i <video-clip> -vcodec dnxhd <video-clip-in-dnxhd>

但是,这是行不通的,而且我所见过的用ffmpeg转换为dnxhd的示例我也不明白,它们似乎每次都有一些不同的标签,而没有解释为什么要使用它们。


1
deb-indus.org/tuto/ffmpeg-howto.htm#Encoding_VC-3会建议ffmpeg -i <input_file> -vcodec dnxhd -b <bitrate> -an output.mov
Rinzwind

谢谢,我以前看过这个,我当时想:我是否必须指定一个比特率,并且它必须没有声音(-an)?....我是说只能在cinelerra中使用没有声音的dnxhd视频剪辑工作吗?
sharkant

1
-b <int> : Set video bitrate in bit/s ( default = 200k ).因此我认为您必须添加比特率,因为200k不是有效的选择。但是-an我会放弃的:)
Rinzwind '17

比特率取决于源文件还是要转换成的文件?....我的意思是,如果我只是尝试使用200,它可以工作吗?
sharkant '17

不需要。您需要为此特定编码器指定比特率。
llogan

Answers:


18

这是一个挑剔的编码器,因此您必须选择适当的参数,包括:

  • 帧率
  • 像素格式/色彩空间
  • 宽度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
  • 如果您的输入文件已经符合某些可接受的参数,则无需手动声明它们。

  • DNxHD的输出格式容器通常是MXF或MOV。


DNxHR示例

DNxHR适用于大于1080p的分辨率,例如2K,4K和8K。

如果需要DNxHR,则添加-profile:v输出选项,例如-profile:v dnxhr_hq

可接受的值是:dnxhddnxhr_444dnxhr_hqxdnxhr_hqdnxhr_sqdnxhr_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示例。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.