我将视频服务器端(使用Ubuntu和PHP)转换为:
$result = shell_exec("ffmpeg -i ".$filetmp." -vcodec h264 -filter:v fps=30 -acodec aac ".$filetmp.".mp4");有些视频转换需要几分钟,我需要阻止它们。
通过使用Ubuntu的超时 (在以下30秒内),我尝试给ffmpeg命令一个超时:
$result = shell_exec("timeout 30 ffmpeg -i ".$filetmp." -vcodec h264 -filter:v fps=30 -acodec aac ".$filetmp.".mp4 2>&1");但是输出包含来自FFmpeg的所有日志。
即使医生说:
如果命令超时,并且-保存状态未设置,则退出状态124。
我尝试将-loglevel quiet添加到FFmpeg命令(希望只获得超时输出124),但之后没有日志。
在PHP方面,我尝试用以下方法捕捉超时:
if ((int)$result == 124) { }如何从超时值命令中只获取代码124 -而不使用FFmpeg日志?
此外,我需要--kill-after=DURATION作为超时吗?
发布于 2022-06-30 09:14:34
您需要在;echo $?之后添加一个2>&1;。然后输出是到达超时时的124。
对于ffmpeg,也可以使用-loglevel quiet。
$result = shell_exec("timeout -k 10 10 ffmpeg -loglevel quiet -i ".$filetmp." -vcodec h264 -filter:v fps=30 -acodec aac ".$filetmp.".mp4 2>&1; echo $?");输出:
124
https://stackoverflow.com/questions/72812946
复制相似问题