Ich habe ffmpeg und ffprobe auf meinem Mac (macOS Sierra) installiert, und ich habe ihren Pfad zu PATH hinzugefügt. Ich kann sie vom Terminal laufen lassen.Wie kann ich Python finden, um ffprobe zu finden?
Ich versuche ffprobe zu verwenden, um die Breite und Höhe einer Videodatei mit dem folgenden Code zu erhalten:
import subprocess
import shlex
import json
# function to find the resolution of the input video file
def findVideoResolution(pathToInputVideo):
cmd = "ffprobe -v quiet -print_format json -show_streams"
args = shlex.split(cmd)
args.append(pathToInputVideo)
# run the ffprobe process, decode stdout into utf-8 & convert to JSON
ffprobeOutput = subprocess.check_output(args).decode('utf-8')
ffprobeOutput = json.loads(ffprobeOutput)
# find height and width
height = ffprobeOutput['streams'][0]['height']
width = ffprobeOutput['streams'][0]['width']
return height, width
h, w = findVideoResolution("/Users/tomburrows/Documents/qfpics/user1/order1/movie.mov")
print(h, w)
Es tut mir leid ich kann keine MCVE liefern, wie ich diesen Code nicht schreiben, und ich weiß nicht wirklich wie es funktioniert.
Es gibt die folgenden Fehler:
Traceback (most recent call last):
File "/Users/tomburrows/Dropbox/Moviepy Tests/get_dimensions.py", line 21, in <module>
h, w = findVideoResolution("/Users/tomburrows/Documents/qfpics/user1/order1/movie.mov")
File "/Users/tomburrows/Dropbox/Moviepy Tests/get_dimensions.py", line 12, in findVideoResolution
ffprobeOutput = subprocess.check_output(args).decode('utf-8')
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 626, in check_output
**kwargs).stdout
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 693, in run
with Popen(*popenargs, **kwargs) as process:
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 947, in __init__
restore_signals, start_new_session)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 1551, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe'
Wenn Python nicht aus der PATH-Datei liest, wie kann ich angeben, wo ffprobe ist?
EDIT: Es scheint, dass der Python-Pfad nicht mit meinem Shell-Pfad ausgerichtet ist. Die Verwendung von os.environ["PATH"]+=":/the_path/of/ffprobe/dir"
am Anfang jedes Programms ermöglicht es mir, ffprobe zu verwenden, aber warum ist mein Python-Pfad möglicherweise nicht mit meinem Shell-Pfad identisch?
Um zu verifizieren, dass es sich tatsächlich um ein '$ PATH'-bezogenes Problem handelt, geben Sie den vollständigen Pfad an, anstatt sich auf die Shell-Umgebung zu verlassen, um das für Sie zu tun. Z.B. benutze 'cmd =" / full/pfad/zu/ffprobe -v ruhig -print_format json -show_streams "' – boardrider