12

情况: 我正在使用 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:我看到了这个话题How to tell if ffmpeg error?但在最后一行之前/之后没有数字。我认为最后一个版本没有编号了。

4

2 回答 2

5

您可以只检查 ffmpeg 返回的退出代码。它应该在成功时返回 0,否则意味着它失败了。

于 2012-08-31T07:05:34.860 回答
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 或其他设置,输出可能会有所不同,但我认为解析完整的输出流是唯一的选择。

于 2015-06-12T11:06:42.550 回答