【发布时间】:2014-08-10 06:16:24
【问题描述】:
我正在使用 Qt 在 Windows 7 上记录来自 Mobotix 摄像头的流数据。我使用的命令是:
ffmpeg -f mjpeg -i "http://admin:password@192.168.0.100/control/faststream.jpg?stream=full" -c:v libx264 -preset slow -crf 22 -c:a copy out.mp4
这在命令行中运行良好,当我想停止它时,我只需按 Ctrl-C。但我是通过 QProcess 从使用 Qt 5.2 的应用程序中执行此操作的。 10 分钟后,我想停止录制,所以我尝试了QProcess::terminate(),但这并没有停止。 QProcess::kill() 有效,但无法播放生成的视频。 This answer 建议我这样做是正确的。
我连接到QProcess::finished(),所以当我调用 QProcess::kill() 时,结果是:
- int exitCode = 62097
- QProcess::ExitStatusexitStatus = QProcess::CrashExit
Apparently 这是 Qt 在杀死进程时使用的返回码。
那么我有没有其他方法可以优雅地终止进程(与按 Ctrl-C 相同)或通过 ffmpeg 库执行相同的功能以便我可以正确停止它?
【问题讨论】:
-
你为什么在
AVI容器中使用H.264视频?您可以尝试输出到.mp4或.mkv文件吗? -
抱歉,剪切粘贴出错。