繁体   English   中英

ffmpeg Python Subprocess Error返回非零退出状态1

[英]ffmpeg Python Subprocess Error returned non-zero exit status 1

所以我在这里有一条线,用于通过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 SAYS是:

'['/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'

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

除非在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"])

这是python文档的引用

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

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

... "-ss 00:01:00.000 -t 00:00:05 -vf ...

应该

... "-ss", "00:01:00.000", "-t", "00:00:05", "-vf", ...

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

['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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM