0

我是视频编码的新手。我正在尝试将一系列 .dpx 文件编码为以下任何格式的单个编码视频 O/P 文件。(.mp4、.avi、.h264、.mkv 等)

我尝试了 2 种不同的方法。第一个有效,第二个无效。我想知道两者的区别。任何帮助/输入将不胜感激。

1) 使用 FFMPEG 和 x264 库,效果很好。我能够产生所需的输出

ffmpeg -start_number 0 -i frame%4d.dpx -pix_fmt yuv420p -c:v libx264 -crf 28 
-profile:v baseline fromdpx.h264

2)我首先尝试使用ffmpeg中的concate协议将所有dpx文件连接到一个文件中,然后使用x264对连接后的文件进行编码。在这里我看到连接文件的大小是所有连接文件的总和。但是当我使用 x264 命令对连接文件进行编码时,我得到一个绿屏(基本上不是所需的输出)。

ffmpeg -i "concat:frame0.dpx|frame01.dpx|frame2.dpx etc" -c copy output.dpx

然后

x264 --crf 28 --profile baseline -o encoded.mp4 --input-res 1920x1080 --demuxer raw 
output.dpx

我还尝试使用 ffmpeg 对连接文件进行编码,如下所示

ffmpeg -i output.dpx -pix_fmt yuv420p -c:v libx264 -crf 28 -profile:v baseline fromdpx.h264

这也给了我一个空白视频。

有人可以向我指出这里发生了什么吗?为什么第一种方法有效而第二种方法无效?

谢谢你。

4

1 回答 1

0

在第二种方法中,您将 DPX 文件指定为 x264 的原始输入(--demuxer raw),但 DPX 不是原始格式(它是更多具有标头、元数据和可选 RLE 压缩的容器),因此需要解码。x264 仅支持以下原始格式 (--input-csp):i420、yv12、nv12、i422、yv16、nv16、i444、yv24、bgr、bgra、rgb。所有这些格式每个组件可以有 8..16 位(--input-depth)。

我也怀疑 DPX 格式是否支持连接,因为它是图像格式而不是视频格式。所以可能你在 concat 之后的结果已经被破坏了。

于 2015-06-04T21:45:51.477 回答