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