ffmpeg - 创建带有 alpha 的 DNxHD MFX 文件

ffmpeg - 创建带有 alpha 的 DNxHD MFX 文件

我目前正在努力解决 FFMpeg 中的一些问题......

我正在尝试从一系列 PNG 文件制作 DNxHD 1080p/24、36Mb/s MXF 文件。

我当前的命令行是:

ffmpeg -y -f image2 -i /tmp/temp.%04d.png -s 1920x1080 -r 24 -vcodec dnxhd -f mxf -pix_fmt rgb32 -b 36Mb /tmp/temp.mxf

ffmpeg 向我提供了以下输出:

Input #0, image2, from '/tmp/temp.%04d.png':
  Duration: 00:00:01.60, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: png, rgb32, 1920x1080, 25 tbr, 25 tbn, 25 tbc
Output #0, mxf, to '/tmp/temp.mxf':
    Stream #0.0: Video: dnxhd, yuv422p, 1920x1080, q=2-31, 36000 kb/s, 90k tbn, 24 tbc
Stream mapping:
  Stream #0.0 -> #0.0
[mxf @ 0x1005800]unsupported video frame rate
Could not write header for output file #0 (incorrect codec parameters ?)

这里有几件事令我担心:

  • 输出流坚持为 yuv422p,它不支持 alpha。
  • 24fps 是不支持的视频帧率吗?我也试过 23.976,结果是一样的。

然后我尝试了同样的事情,但是使用以下方式写入 quicktime(但仍然是 DNxHD):

ffmpeg -y -f image2 -i /tmp/temp.%04d.png -s 1920x1080 -r 24 -vcodec dnxhd -f mov -pix_fmt rgb32 -b 36Mb /tmp/temp.mov

这给了我输出:

Input #0, image2, from '/tmp/1274263259.28098.%04d.png':
  Duration: 00:00:01.60, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: png, rgb32, 1920x1080, 25 tbr, 25 tbn, 25 tbc
Output #0, mov, to '/tmp/1274263259.28098.mov':
    Stream #0.0: Video: dnxhd, yuv422p, 1920x1080, q=2-31, 36000 kb/s, 90k tbn, 24 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
frame=   39 fps=  9 q=1.0 Lsize=    7177kB time=1.62 bitrate=36180.8kbits/s    
video:7176kB audio:0kB global headers:0kB muxing overhead 0.013636%

显然,这在一定程度上是可行的,但仍然存在 yuv422p 的问题,因此会丢失 alpha。

如果我使用 QuickTime,那么我可以使用 Shake 获得我需要的内容,但我的主要目的是能够生成 .mxf 文件。

有什么想法吗?

谢谢

答案1

首先我要感谢这篇帖子,因为它确实帮助我获得了一些关于如何在 ffmpeg 中编码为 DNxHD quicktime 的说明。我试图将 J2K MXF 转换为 DNxHD。

至于使用正确参数生成 mxf 文件,您是否尝试过通过最新版本的 Avid Metafuze 运行 png 序列?它在这些方面提供了很大的灵活性。我已经从 DPX 文件序列创建了精彩的 1080p 24fps DNxHD mxf。Metafuze 也支持 png 序列。加载序列,编辑 LUT,输入元数据,生成 ALE,您就可以开始了。

如果您是 Linux 用户,它可以通过 Wine 在 Linux 上无缝运行。

答案2

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

相关内容