gpt4 book ai didi

python - ffmpeg Python 子进程错误返回非零退出状态 1

转载 作者:太空狗 更新时间:2023-10-30 02:30:47 25 4
gpt4 key购买 nike

所以我这里有一行是为了通过 python 和 ffmpeg 从电影中转储帧。

subprocess.check_output([ffmpeg, "-i", self.moviefile, "-ss 00:01:00.000 -t 00:00:05 -vf scale=" + str(resolution) + ":-1 -r", str(framerate), "-qscale:v 6", self.processpath + "/" + self.filetitles + "-output%03d.jpg"])

目前它给我错误:

'CalledProcessError: Command ... returned non-zero exit status 1'

python 说它正在运行的命令是:

'['/var/lib/openshift/id/app-root/data/programs/ffmpeg/ffmpeg', '-i', u'/var/lib/openshift/id/app-root/data/moviefiles/moviename/moviename.mp4', '-ss 00:01:00.000 -t 00:00:05 -vf scale=320:-1 -r', '10', '-qscale:v 6', '/var/lib/openshift/id/app-root/data/process/moviename/moviename-output%03d.jpg']'

但是当我通过 ssh 运行以下命令时...

'/var/lib/openshift/id/app-root/data/programs/ffmpeg/ffmpeg' -i '/var/lib/openshift/id/app-root/data/moviefiles/moviename/moviename.mp4' -ss 00:01:00.000 -t 00:00:05 -vf scale=320:-1 -r 10 -qscale:v 6 '/var/lib/openshift/id/app-root/data/process/moviename/moviename-output%03d.jpg'

它工作得很好。我究竟做错了什么?我认为我误解了子流程字段解析的工作方式...

最佳答案

subprocess 模块几乎不允许在其参数中使用任何空白字符,除非您在 shell 模式下运行它。试试这个:

subprocess.check_output(["ffmpeg", "-i", self.moviefile, "-ss", "00:01:00.000", "-t", "00:00:05", "-vf", "scale=" + str(resolution) + ":-1", "-r", str(framerate), "-qscale:v", "6", self.processpath + "/" + self.filetitles + "-output%03d.jpg"])

这里引用自the python docs.

“请特别注意,在 shell 中由空格分隔的选项(例如 -input)和参数(例如 eggs.txt)放在单独的列表元素中,而需要引号或反斜杠转义的参数shell 中使用的(例如包含空格的文件名或上面显示的 echo 命令)是单个列表元素。”

关于python - ffmpeg Python 子进程错误返回非零退出状态 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com