How can I get Python to search for ffprobe?

I have ffmpeg and ffprobe installed on my mac (macOS Sierra) and I added their path to PATH. I can run them from the terminal.

I am trying to use ffprobe to get the width and height of a video using the following code:

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) 

Sorry, I cannot provide MCVE since I did not write this code, and I really don't know how this works.

It produces the following error:

 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' 

If python is not reading from the PATH file, how can I indicate where ffprobe is?

EDIT: It looks like the python path does not match my shell outline. Using os.environ["PATH"]+=":/the_path/of/ffprobe/dir" at the beginning of each program allows me to use ffprobe, but why won't my python path be the same as my shell path?

+1
source share
1 answer

you can use

 import os print os.environ['PATH'] 

to verify / verify that ffprobe is in your python environment. In accordance with your mistake, most likely, it will not.

+1
source

All Articles