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

sha*_*ant 17 codecs convert ffmpeg cinelerra

我正在学习如何使用 cinelerra-cv 的教程,一开始有人说,使用 cinelerra 的第一步是将任何视频剪辑转换为 dnxhd 格式。只是说了,没说明怎么做。

经过一番研究,我遇到了 ffmpeg,但我不知道如何将它用于 dnxhd,由于我对 ffmpeg 的了解很少,我猜怎么做:

ffmpeg -i <video-clip> -vcodec dnxhd <video-clip-in-dnxhd>
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,我看到的关于使用 ffmpeg 转换为 dnxhd 的示例我不明白,它们似乎每次都有一些不同的标签,但没有解释为什么要使用它们。

llo*_*gan 26

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

  • 帧率
  • 像素格式/色彩空间
  • 宽 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
Run Code Online (Sandbox Code Playgroud)
  • 如果您的输入文件已经符合某些可接受的参数,那么您不必手动声明它们。

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


DNxHR 示例

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

DNxHR HQX、10 位 4:2:2、4K (4096x2160)、24 fps 的示例:

ffmpeg -i input -c:v dnxhd -vf "scale=4096:2160,fps=24,format=yuv422p10le" -profile:v dnxhr_hqx -b:v 746M -c:a pcm_s16le output.mov
Run Code Online (Sandbox Code Playgroud)

-profile:v输出选项是必需的选择DNxHR配置文件,如-profile:v dnxhr_hq

接受的值为-profile:vdnxhddnxhr_444dnxhr_hqxdnxhr_hqdnxhr_sqdnxhr_lb

  • DNxHR LB:dnxhr_lb- 低带宽。8 位 4:2:2 ( yuv422p)。离线质量。
  • DNxHR SQ:dnxhr_sq- 标准质量。8 位 4:2:2 ( yuv422p)。适用于交付格式。
  • DNxHR 总部: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如果您提供不正确的值,将失败,但它可以提供可接受的列表。(对于 DNxHR,向下滚动到下面的有效 DNxHR 参数部分。)

您可以使用以下“虚拟”命令显示列表:

$ ffmpeg -loglevel error -f lavfi -i testsrc2 -c:v dnxhd -f null -
Frame size: 1920x1080p; bitrate: 175Mbps; pixel format: yuv422p10
Frame size: 1920x1080p; bitrate: 185Mbps; pixel format: yuv422p10
Frame size: 1920x1080p; bitrate: 365Mbps; pixel format: yuv422p10
Frame size: 1920x1080p; bitrate: 440Mbps; pixel format: yuv422p10
Frame size: 1920x1080p; bitrate: 115Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 120Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 145Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 240Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 290Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 175Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 185Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 220Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 365Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 440Mbps; pixel format: yuv422p
Frame size: 1920x1080i; bitrate: 185Mbps; pixel format: yuv422p10
Frame size: 1920x1080i; bitrate: 220Mbps; pixel format: yuv422p10
Frame size: 1920x1080i; bitrate: 120Mbps; pixel format: yuv422p
Frame size: 1920x1080i; bitrate: 145Mbps; pixel format: yuv422p
Frame size: 1920x1080i; bitrate: 185Mbps; pixel format: yuv422p
Frame size: 1920x1080i; bitrate: 220Mbps; pixel format: yuv422p
Frame size: 1440x1080i; bitrate: 120Mbps; pixel format: yuv422p
Frame size: 1440x1080i; bitrate: 145Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 90Mbps; pixel format: yuv422p10
Frame size: 1280x720p; bitrate: 180Mbps; pixel format: yuv422p10
Frame size: 1280x720p; bitrate: 220Mbps; pixel format: yuv422p10
Frame size: 1280x720p; bitrate: 90Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 110Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 180Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 220Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 60Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 75Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 120Mbps; pixel format: yuv422p
Frame size: 1280x720p; bitrate: 145Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 36Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 45Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 75Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 90Mbps; pixel format: yuv422p
Frame size: 1920x1080p; bitrate: 350Mbps; pixel format: yuv444p10, gbrp10
Frame size: 1920x1080p; bitrate: 390Mbps; pixel format: yuv444p10, gbrp10
Frame size: 1920x1080p; bitrate: 440Mbps; pixel format: yuv444p10, gbrp10
Frame size: 1920x1080p; bitrate: 730Mbps; pixel format: yuv444p10, gbrp10
Frame size: 1920x1080p; bitrate: 880Mbps; pixel format: yuv444p10, gbrp10
Frame size: 960x720p; bitrate: 42Mbps; pixel format: yuv422p
Frame size: 960x720p; bitrate: 60Mbps; pixel format: yuv422p
Frame size: 960x720p; bitrate: 75Mbps; pixel format: yuv422p
Frame size: 960x720p; bitrate: 115Mbps; pixel format: yuv422p
Frame size: 1440x1080p; bitrate: 63Mbps; pixel format: yuv422p
Frame size: 1440x1080p; bitrate: 84Mbps; pixel format: yuv422p
Frame size: 1440x1080p; bitrate: 100Mbps; pixel format: yuv422p
Frame size: 1440x1080p; bitrate: 110Mbps; pixel format: yuv422p
Frame size: 1440x1080i; bitrate: 80Mbps; pixel format: yuv422p
Frame size: 1440x1080i; bitrate: 90Mbps; pixel format: yuv422p
Frame size: 1440x1080i; bitrate: 100Mbps; pixel format: yuv422p
Frame size: 1440x1080i; bitrate: 110Mbps; pixel format: yuv422p
Run Code Online (Sandbox Code Playgroud)

有效的 DNxHR 参数

请参阅Avid 高分辨率工作流程指南 的第 111-112 页。


关于帧率的重要说明

  • 从此命令生成的列表中缺少帧速率。ffmpeg将盲目接受此编码器的任何帧速率,据报道 Avid 软件将接受它(未经证实),但 DNxHD 比特率应该仅与特定的帧速率匹配。为了获得最大的兼容性,我建议只使用正确的比特率/帧率组合。因此,使用上面的命令来获得 接受的正确比特率和像素格式ffmpeg,并交叉参考Avid DNxHD 分辨率列表DNxHD 白皮书(第 9 页)以获得正确的帧速率。

  • 以上链接中列出的帧速率使用的是不准确的舍入近似值。下面列出了正确的值;不正确的别名在左边,正确的值在右边。

     Wrong     Correct  
     29.97     30000/1001
     59.94     60000/1001
     23.967    24000/1001
    
    Run Code Online (Sandbox Code Playgroud)

    所以代替fps=29.97use fps=30000/1001,或者代替-r 29.97use -r 30000/1001


更多选择

有关其他编码器特定选项以及支持的像素格式列表,请参阅:

ffmpeg -h encoder=dnxhd
Run Code Online (Sandbox Code Playgroud)

阿尔法/透明度

FFmpeg DNxHD/DNxHR 编码器不支持 alpha。


错误

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!
Run Code Online (Sandbox Code Playgroud)

这意味着您的帧速率、宽度、高度、像素格式和/或比特率不正确。有关可接受的值,请参阅上面的有效 DNxHD 参数

pixel format is incompatible with DNxHD profile

使用格式过滤器选择合适的像素格式。请参阅上面的 DNxHD 示例。

  • 好的,将比特率增加到 185M (`-b:v 185M`) 就可以了。这可能会帮助人们 (2认同)