我试图连接生成以下命令的视频:
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
时,它会挂起最后处理的块,如this
有什么不对?
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 stdout
P.P.S :os.system()
代替subprocess.Popen()
做了诀窍,但子进程的问题仍然存在。
答案 0 :(得分:0)
删除pipe.wait()
,只留下.communicate()
电话。也可以检查pipe.returncode
是否= = 0,没有错误。