首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >返回非零退出状态1的ffmpeg Python子进程错误

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

Stack Overflow用户
提问于 2014-07-31 20:01:12
回答 2查看 7.2K关注 0票数 4

所以我这里有一行,用来通过python和ffmpeg从电影中转储帧。

代码语言:javascript
复制
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"])

目前它给了我一个错误:

代码语言:javascript
复制
'CalledProcessError: Command ... returned non-zero exit status 1'

python命令说它正在运行:

代码语言:javascript
复制
'['/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运行以下命令时..。

代码语言:javascript
复制
'/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'

效果很好。我做错了什么?我想我误解了子进程字段解析的工作方式.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-31 20:08:27

子进程模块几乎不允许参数中的任何空格字符,除非您在shell模式下运行它。试试这个:

代码语言:javascript
复制
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"])

以下是蟒蛇的医生。的引文

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

票数 3
EN

Stack Overflow用户

发布于 2014-07-31 20:10:39

传递给check_call的参数数组格式不正确。例如,ffmpeg的每个参数都需要是参数列表中的单个元素。

代码语言:javascript
复制
... "-ss 00:01:00.000 -t 00:00:05 -vf ...

应该是

代码语言:javascript
复制
... "-ss", "00:01:00.000", "-t", "00:00:05", "-vf", ...

完整的结果args数组应该是:

代码语言:javascript
复制
['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']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25067927

复制
相关文章

相似问题

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