首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python的subprocess.Popen与ffmpeg连接的文件

使用python的subprocess.Popen与ffmpeg连接的文件
EN

Stack Overflow用户
提问于 2014-12-01 14:26:18
回答 1查看 679关注 0票数 0

我正在尝试连接生成以下命令的视频:

代码语言:javascript
复制
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:我就是这样执行命令的:

代码语言:javascript
复制
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.Sos.system()而不是subprocess.Popen()成功了,但是子进程的问题仍然存在。

EN

回答 1

Stack Overflow用户

发布于 2014-12-01 14:37:33

删除pipe.wait(),只留下.communicate()调用。此外,也可以检查pipe.returncode是否为== 0,以避免出现错误。

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

https://stackoverflow.com/questions/27230483

复制
相关文章

相似问题

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