如何判断ffmpeg是否有错误?

dvd*_*dmn 6 ffmpeg

情况: 我正在使用ffmpeg(通过.net)来保存视频文件.我可以从ffmpeg获得输出,但我不知道如何自定义输出以获得更好的结果.

我的问题: 我的问题是,成功和失败的操作之间没有一定的区别.

最后一道成功:

视频:1006kB音频:134kB字幕:0全局标题:0kB多路复用开销0.943510%

最后一行失败

c:\ x\test-9-8/30/2012-9:29:56-AM.mp4:参数无效

rtmp://cdn.tv/cdn-live39/ definst/stream01:发生未知错误

我的问题: 是否有一个选项(或命令行参数)来添加某种返回代码(200:成功,500:错误等)

谢谢!

PS:我看到了这个话题如何判断ffmpeg是否有误?但是在最后一行之前/之后没有数字.我认为最后一个版本不再有数字了.

sas*_*alm 5

您可以只检查 ffmpeg 返回的退出代码。成功时应该返回 0,其他任何值都意味着失败。

  • 这是行不通的。FFmpeg 不会(总是)在错误时返回非 0 (12认同)
  • @DIDoS 你能举个例子吗? (6认同)
  • 这能保证可靠吗? (2认同)

Ele*_*sar 5

我知道这已经很老了,但是当我遇到并没有找到其他可靠的答案并经过更多测试后:

检查返回 0 的建议通常是一个很好的建议 - 但在所有情况下都没有帮助。检查文件是否存在的另一个想法也很好 - 但同样 - 在所有情况下都没有帮助。

例如,当输入文件是具有嵌入封面的 mp3 文件时,ffmpeg 会(在我的测试中)使用此图像并将该图像提取为(无法使用的)视频文件。

我现在要做的是有调试级别的输出并解析它的复用数据包的数量。

ffmpeg -i "wildlife.mp4" -c:v copy -an -sn "out.mp4" -y -loglevel debug 2> wildlife.txt

使用正则表达式,我搜索此文本:
Output stream .+ (video): [0-9][0-9]+ packets muxed \([0-9][0-9]+ bytes\)

(这假设每个视频都有超过 9 个数据包 - 当然可以针对真正的短视频进行优化)。

当然,对于 RTMP 或其他设置,输出可能会有所不同,但我认为解析完整的输出流是唯一的选择。