情况: 我正在使用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 errored?但是在最后一行之前/之后没有数字。我认为最后一个版本不再有数字了。
答案 0 :(得分:3)
您可以查看ffmpeg返回的退出代码。它应该在成功时返回0,其他任何意味着它失败。
答案 1 :(得分:3)
我知道这已经很老了,但是当我遇到并没有找到其他可靠的答案并经过一些更多的测试后:
检查返回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或其他设置,输出可能会有所不同,但我认为解析完整的输出流是唯一的选择。