我在使用构造函数通过 FFmpeg 写入未压缩的编号文件时遇到了麻烦%04d
(例如)。
对于压缩格式(例如 JPEG 和 PNG)来说,这没问题,但对于未压缩的高质量格式(例如 yuv422p16le),如果我不使用-f image2
,FFmpeg 会尝试写入单个文件。
例如,当我使用 时output.%04d.yuv
,我希望输出为等output.0000.yuv
,output.0001.yuv
但实际输出是单个文件。
但使用时-f image2
,输出文件不再解压。
我该如何解决这个问题?
这里有些例子:
此命令生成(不需要的)压缩的、编号的输出文件:
ffmpeg -i input.mov -f image2 -pix_fmt yuv422p16le -pattern_type sequence output.%04d.yuv
此命令生成一个名为的未压缩的输出文件output.%04d.yuv
(即它不会扩展%04d
):
ffmpeg -i input.mov -pix_fmt yuv422p16le -pattern_type sequence output.%04d.yuv
答案1
选择rawvideo
视频编解码器:
ffmpeg -i input.mov -vcodec rawvideo -f image2 -pix_fmt yuv422p16le -pattern_type sequence output.%04d.yuv
当未指定视频编解码器时,FFmpeg 会选择默认编解码器。FFmpeg
为每种格式(每个复用器)定义了一个默认编解码器。复用器
的默认编解码器image2
是mjpeg
(我们可以通过执行:查看默认编解码器ffmpeg -h muxer=image2
)。
这就是为什么当-vcodec rawvideo
未指定时输出文件以 JPEG 格式编码的原因。