如何将带有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。

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

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.