我正在尝试从php exec()
在后台执行多个单行命令。我的脚本为视频添加水印并删除原始视频,并将带水印的视频重命名为原始名称。我想在后台运行整个代码。我已经尝试了圆形()和卷曲{}括号但最后失败的是我的代码,我试图在后台运行。
(/usr/bin/ffmpeg -i video.mp4 -i watermark.png -filter_complex 'overlay=10:10' video_watermarked.mp4 && rm -rf video.mp4 && mv video_watermarked.mp4 video.mp4) &
答案 0 :(得分:-1)
你的命令似乎很好。也许你不喜欢后台命令仍然输出到控制台?在这种情况下,重定向输出(在命令结尾处注意&> / dev / null ):
(/usr/bin/ffmpeg -i video.mp4 -i watermark.png -filter_complex 'overlay=10:10' /video_watermarked.mp4 && rm -rf video.mp4 && mv video_watermarked.mp4 video.mp4) &>>/home/$USER/watermarking.log &
甚至更好,您可以强制后台命令将其输出附加到某个日志文件:
__int64
答案 1 :(得分:-1)
如果ffmpeg无法访问标准输出,它将自动暂停。
您有两种选择:
nohup /usr/bin/ffmpeg ...
将为您处理重定向,并将ffmpeg的输出放在名为nohup.out的文件中
或者在exec()的参数中的结束括号后添加2>&1>/dev/null
。这会将标准输出和标准错误发送到/ dev / null。