首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在shell_exec()中正确包装bash的情况下进行FFMPEG视频转换?

如何在shell_exec()中正确包装bash的情况下进行FFMPEG视频转换?
EN

Stack Overflow用户
提问于 2022-06-30 08:54:36
回答 1查看 113关注 0票数 0

我将视频服务器端(使用Ubuntu和PHP)转换为:

代码语言:javascript
复制
$result = shell_exec("ffmpeg -i ".$filetmp." -vcodec h264 -filter:v fps=30 -acodec aac ".$filetmp.".mp4");

有些视频转换需要几分钟,我需要阻止它们。

通过使用Ubuntu的超时 (在以下30秒内),我尝试给ffmpeg命令一个超时:

代码语言:javascript
复制
$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方面,我尝试用以下方法捕捉超时:

代码语言:javascript
复制
if ((int)$result == 124) { }

如何从超时值命令中只获取代码124 -而不使用FFmpeg日志?

此外,我需要--kill-after=DURATION作为超时吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-30 09:14:34

您需要在;echo $?之后添加一个2>&1;。然后输出是到达超时时的124

对于ffmpeg,也可以使用-loglevel quiet

代码语言:javascript
复制
$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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72812946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档