为什么ffmpeg.exe并不总是终止?

时间:2012-12-17 19:01:28

标签: php windows ffmpeg exec

我在php中有一个使用exec()弹出ffmpeg的脚本 - 它从图像和mp3中创建一个mp4。

这是我正在执行的命令:

"C:\\Program Files\\ffmpeg\\bin\\ffmpeg.exe" -loop 1 -r 0.1 -i image.jpg -i mp3.mp3 -c:v libx264 -preset ultrafast -crf 18 -tune stillimage -c:a copy -filter:v "[in] scale=-1:720, pad=1280:720:640-iw/2 [out]" -shortest out.mp4 -report

在绝大多数情况下,它工作正常,大约需要5秒钟然后结束。但是,ffmpeg.exe进程一次又一次地使用100%CPU“挂起”并保持在那里直到手动“杀死”。

ffmpeg.exe似乎没有做任何事情,它创建的.mp4不完整而且没有变大,日志文件没有变化,所有文件的修改时间都没有变化。我不知道它为什么使用100%CPU。

我可以使用相同的图像和mp3并再次运行它,它会正常工作。

我打开了-report,日志文件中似乎没有任何内容表明它失败并且没有终止的原因。这是(934行)日志文件的最后几行,它似乎在第10帧之后由于某种原因而停止:

[libx264 @ 0000000001E37D10] frame=   6 QP=18.00 NAL=2 Slice:P Poc:12  I:0    P:0    SKIP:3600 size=11 bytes
[libx264 @ 0000000001E37D10] frame=   7 QP=18.00 NAL=2 Slice:P Poc:14  I:0    P:0    SKIP:3600 size=11 bytes`
[libx264 @ 0000000001E37D10] frame=   8 QP=18.00 NAL=2 Slice:P Poc:16  I:0    P:0    SKIP:3600 size=11 bytes
[libx264 @ 0000000001E37D10] frame=   9 QP=18.00 NAL=2 Slice:P Poc:18  I:0    P:0    SKIP:3600 size=11 bytes
[libx264 @ 0000000001E37D10] frame=  10 QP=18.00 NAL=2 Slice:P Poc:20  I:0    P:0    SKIP:3600 size=11 bytes`

我已经尝试使用Process Explorer检查一个挂起的ffmpeg.exe,但由于它是一个后台进程,我似乎无法找到任何有意义的东西,但也许我在这里遗漏了一些东西 - 有没有办法将后台进程带到前台?

我们非常感谢任何想法: - )

0 个答案:

没有答案