除了转储元数据之外,如何阻止 FFmpeg 对提供的视频执行任何操作?

除了转储元数据之外,如何阻止 FFmpeg 对提供的视频执行任何操作?

我正在使用 ffmpeg 从视频中提取嵌入的缩略图:

ffmpeg -dump_attachment:t cover.webp -i video.mkv

问题是,ffmpeg 抱怨必须指定至少一个输出文件。

添加类似或相似的输出文件-f raw /dev/null是不能令人满意的,因为 ffmpeg 仍然会访问该文件,对其进行解码,然后将其写入 /dev/null——这是我特别想避免的。

添加选项-an -vn也会导致错误。

本质上,我希望 ffmpeg 不要对视频进行任何其他操作,甚至不对其进行解码,因为我需要的只是转储嵌入的封面艺术,这已经通过选项完成-dump_attachment:t

有没有办法让 ffmpeg 基本上不做任何事情?我能想到的唯一办法就是使用,-c copy -f null /dev/null但这也会导致访问整个文件。

目前,我使用的是:

ffmpeg -dump_attachment:t cover.webp -i video.mkv -f ffmetadata /dev/null

然而我认为这是一个非常糟糕的解决方法。

答案1

添加短暂的输出持续时间。

ffmpeg -dump_attachment:t cover.webp -i video.mkv -map 0:a -t 1 -f null -

FFmpeg 在命令中探测每个输入。这意味着访问所有流并解码一小部分,以便获得每个流的准确编解码器属性。探测到的数据随后被缓冲并在实际处理开始时释放。

相关内容