在 Python 中打开 ffmpeg 子进程时出错
Error opening ffmpeg subprocess in Python
我想做的是在Python中打开一个ffmpeg进程。我的代码如下所示:
import subprocess
import os
def Main():
ffmpeg = "C:\ffmpeg\bin\ffmpeg.exe"
args = " -i C:\video.mp4 -r 1 -f image2 C:\FRAMES\frame-%03d.jpg"
subprocess.Popen(ffmpeg + args).wait()
Main()
但即使是这种简单的形式,我也总是得到同样的错误:
Traceback (most recent call last):
File "C:/Users/Francesco/Desktop/test.py", line 9, in <module>
Main()
File "C:/Users/Francesco/Desktop/test.py", line 7, in Main
subprocess.Popen(ffmpeg + args).wait()
File "C:\Users\Francesco\Desktop\WinPython-64bit-2.7.9.4\python-2.7.9.amd64\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Users\Francesco\Desktop\WinPython-64bit-2.7.9.4\python-2.7.9.amd64\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] Impossibile trovare il file specificato
>>>
怎么了?
您需要转义反斜杠,并在两者之间添加一个 space
ffmpeg = "C:\ffmpeg\bin\ffmpeg.exe "
args = " -i C:\video.mp4 -r 1 -f image2 C:\FRAMES\frame-%03d.jpg"
但是,这不是推荐的方式。
您应该有一个作为参数而不是字符串传递的列表。
cmd = ['C:\ffmpeg\bin\ffmpeg.exe', '-i', 'C:\video.mp4', '-r', '1', '-f', 'C:\FRAMES\frame-%03d.jpg']
我想做的是在Python中打开一个ffmpeg进程。我的代码如下所示:
import subprocess
import os
def Main():
ffmpeg = "C:\ffmpeg\bin\ffmpeg.exe"
args = " -i C:\video.mp4 -r 1 -f image2 C:\FRAMES\frame-%03d.jpg"
subprocess.Popen(ffmpeg + args).wait()
Main()
但即使是这种简单的形式,我也总是得到同样的错误:
Traceback (most recent call last):
File "C:/Users/Francesco/Desktop/test.py", line 9, in <module>
Main()
File "C:/Users/Francesco/Desktop/test.py", line 7, in Main
subprocess.Popen(ffmpeg + args).wait()
File "C:\Users\Francesco\Desktop\WinPython-64bit-2.7.9.4\python-2.7.9.amd64\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Users\Francesco\Desktop\WinPython-64bit-2.7.9.4\python-2.7.9.amd64\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] Impossibile trovare il file specificato
>>>
怎么了?
您需要转义反斜杠,并在两者之间添加一个 space
ffmpeg = "C:\ffmpeg\bin\ffmpeg.exe "
args = " -i C:\video.mp4 -r 1 -f image2 C:\FRAMES\frame-%03d.jpg"
但是,这不是推荐的方式。 您应该有一个作为参数而不是字符串传递的列表。
cmd = ['C:\ffmpeg\bin\ffmpeg.exe', '-i', 'C:\video.mp4', '-r', '1', '-f', 'C:\FRAMES\frame-%03d.jpg']