在将 jpg 转换为视频的 Rasbpi 上初始化输出流 ffmpeg 时出错

问题描述

我有一个文件夹,其中包含数千个 1024x768 的 jpg,我想将其转换为单个视频进行播放。

我得到的错误Error initializing output stream 73:0 -- Error while opening encoder for output stream #73:0 - maybe incorrect parameters such as bit_rate,rate,width or height Conversion Failed!

这是我的输入 $ ffmpeg -i Timelapse/*.jpg -c:v libx264 -preset ultrafast -crf 0 output.mkv -y

奇怪的是它在特定编号的输出流上出错。似乎是 71:0、72:0 或 73:0。我认为它试图在给定流中处理的文件有问题,但分辨率都是一样的(因为当它不能被 2 整除时,我看到了错误)。我删除了第 71-73 个图像,希望它以某种方式搞砸了,但这也无济于事。我已确保我的 libx264 也已正确安装。

有什么建议吗?

终端输出示例

Terminal output example

解决方法

问题

您忘记了 -pattern_type glob 输入选项。结果 ffmpeg 扩展了通配符 (*) 并将 image0000.jpg 解释为唯一的输入,并将以下所有图像解释为输出。命令被执行为:

ffmpeg -i Timelapse/image0000.jpg Timelapse/image0001.jpg Timelapse/image0002.jpg Timelapse/image0003.jpg [...] -c:v libx264 -preset ultrafast -crf 0 output.mkv -y

因为您使用了 -y,它会在不要求您确认的情况下覆盖所有输出图像。

解决方案

使用 glob 模式

ffmpeg -pattern_type glob -i 'Timelapse/*.jpg' -c:v libx264 -preset ultrafast -crf 0 output.mkv

或者使用也可以在 Windows 上使用的 序列模式

ffmpeg -i Timelapse/image%04d.jpg -c:v libx264 -preset ultrafast -crf 0 output.mkv

有关详细信息,请参阅 FFmpeg image demuxer documentation