Atm我把它作为我的代码,第一行似乎运行良好,但第二行给出了错误.
os.chdir('C://Users/Alex/Dropbox/code stuff/test')
subprocess.call(['ffmpeg', '-i', 'test%d0.png', 'output.avi'])
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "C:\Users\Alex\Dropbox\code stuff\solarsystem.py", line 56, in <module>
subprocess.call(['ffmpeg', '-i', 'test%d0.png', 'output.avi'])
File "C:\Python27\lib\subprocess.py", line 524, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
Coo*_*rab 12
对于寻找答案的后代,这很有效.(你必须用空格分隔命令.)
import os
import subprocess
os.chdir('C://Users/Alex/')
subprocess.call(['ffmpeg', '-i', 'picture%d0.png', 'output.avi'])
subprocess.call(['ffmpeg', '-i', 'output.avi', '-t', '5', 'out.gif'])
Run Code Online (Sandbox Code Playgroud)
最好subprocess.call
用另一种方式调用。
首选方式是:
subprocess.call(['ffmpeg', '-i', 'test%d0.png', 'output.avi'])
Run Code Online (Sandbox Code Playgroud)
或者:
subprocess.call('ffmpeg -i test%d0.png output.avi', shell=True)
Run Code Online (Sandbox Code Playgroud)
您可以在手册中找到原因。我引用:
所有调用都需要 args 并且应该是字符串或程序参数序列。提供参数序列通常是首选,因为它允许模块处理任何需要的参数转义和引用(例如,允许文件名中的空格)。如果传递单个字符串,则 shell 必须为 True(见下文),否则字符串必须简单地命名要执行的程序而不指定任何参数。
我知道这个问题已经很老了,但是现在 Python 中有一个出色的 ffmpeg 包装器:
ffmpeg-python
。您可以在https://github.com/kkroening/ffmpeg-python找到它
有了它,命令可以这样实现:
import ffmpeg
ffmpeg
.input('test*.png', pattern_type='glob')
.output('output.avi')
.run()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23120 次 |
最近记录: |