我正在尝试连接生成以下命令的视频:
ffmpeg -i /srv/proj/chunks/phrases/lq/ti.mp4 -y -c copy -bsf:v h264_mp4toannexb -f mpegts /tmp/ti.mp4 & ffmpeg -i /srv/proj/chunks/phrases/lq/luchshii.mp4 -y -c copy -bsf:v h264_mp4toannexb -f mpegts /tmp/luchshii.mp4 & ffmpeg -i /srv/proj/chunks/phrases/lq/novii.mp4 -y -c copy -bsf:v h264_mp4toannexb -f mpegts /tmp/novii.mp4 & ffmpeg -i /srv/proj/chunks/phrases/lq/drug.mp4 -y -c copy -bsf:v h264_mp4toannexb -f mpegts /tmp/drug.mp4 & ffmpeg -f mpegts -i "concat:/tmp/ti.mp4|/tmp/luchshii.mp4|/tmp/novii.mp4|/tmp/drug.mp4" -y -c copy -bsf:a aac_adtstoasc /srv/proj/concats/ty-luchshii-novyi-drug.lq.mp4当我只在终端中输入它时,这个命令工作得很好,但是当我使用subprocess.Popen时,它挂在最后处理的块上,比如这。
有什么不对的?
P.S:我就是这样执行命令的:
def _execute(command_str, **kwargs):
import subprocess
import shlex
command = shlex.split(command_str)
try:
pipe = subprocess.Popen(command, **kwargs)
pipe.wait()
stdout, stderr = pipe.communicate()
except Exception:
raise ConcatError('cannot concat files')
return stdoutP.P.S:os.system()而不是subprocess.Popen()成功了,但是子进程的问题仍然存在。
发布于 2014-12-01 14:37:33
删除pipe.wait(),只留下.communicate()调用。此外,也可以检查pipe.returncode是否为== 0,以避免出现错误。
https://stackoverflow.com/questions/27230483
复制相似问题