每当未成功创建缩略图时,强制 ffmpeg 以错误代码退出

Posted

技术标签:

【中文标题】每当未成功创建缩略图时,强制 ffmpeg 以错误代码退出【英文标题】:Force ffmpeg to exit with error code whenever thumbnail isn't successfully created 【发布时间】:2017-05-27 06:49:43 【问题描述】:

要从100 秒的图像中获取缩略图,我可以使用ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg。但是,如果视频小于100 秒,ffmpeg 不会创建缩略图,也不会退出并显示任何错误代码,这是非常意外的。

命令退出,没有错误代码(退出状态为0)。它只在stderr 上输出一条消息,说Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

我希望 ffmpeg 在任何未创建缩略图的情况下退出并显示错误代码。否则,我总是必须在 ffmpeg 命令之后对我的应用程序代码进行另一次检查,以确保已将预期数量的缩略图输出到文件系统。

有没有办法绕过这个应用程序级别的检查,并在 ffmpeg 没有成功将缩略图写入文件系统时强制它失败?

【问题讨论】:

【参考方案1】:

使用

ffmpeg -ss 100 -i /tmp/video.mp4 -frames:v 1 -s 200x100 image.jpg -abort_on empty_output

失败时返回1

【讨论】:

谢谢。顺便说一句,手册页中还有-xerror 标志,上面写着Stop and exit on error。无论如何,ffmpeg不会停止/退出错误吗?是否值得添加此标志,您知道它在哪些情况下会有所帮助吗? 如果搜索点超出输入 EOF,则不是命令错误。结果只是空。由于这通常不是预期的,因此警告.. xerror ,AFAICT,仅在输出中的无序时间戳时退出。 乱序时间戳是什么意思,怎么会这样? 我通常在捕获实时流或使用 concat 连接多个文件时看到这种情况。输出播放正常,但多路复用器可能会抱怨非单调的 DTS。如果添加 xerror,它将退出。

以上是关于每当未成功创建缩略图时,强制 ffmpeg 以错误代码退出的主要内容,如果未能解决你的问题,请参考以下文章

Laravel FFmpeg 错误调用未定义的方法 FFMpeg\FFMpeg::fromDisk()

fluent-ffmpeg 缩略图创建错误

使用 ffmpeg 创建 png 缩略图会给出错误消息“错误填充图片”

找到缩略图时如何获取实际图像?

Ffmpeg - 从 webm 格式创建缩略图并将 webm 电影转换为 flv 电影

单击缩略图时如何显示全尺寸图像?