python - 我怎样才能让 Python 找到 ffprobe?

标签 python ffmpeg path subprocess pythonpath

我在我的 mac (macOS Sierra) 上安装了 ffmpegffprobe,并且我已将它们的路径添加到 PATH。我可以从终端运行它们。

我正在尝试使用 ffprobe 通过以下代码获取视频文件的宽度和高度:

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)

很抱歉,我无法提供 MCVE,因为我没有编写这段代码,而且我真的不知道它是如何工作的。

它给出了以下错误:

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'

如果 python 没有从 PATH 文件读取,我如何指定 ffprobe 在哪里?

编辑: 看来 python 路径与我的 shell 路径不一致。 在每个程序的开头使用 os.environ["PATH"]+=":/the_path/of/ffprobe/dir" 允许我使用 ffprobe,但为什么我的 python 路径可能不是和我的 shell 路径一样吗?

最佳答案

你可以使用

import os
print os.environ['PATH']

验证/确认 ffprobe 在您的 python 环境中。根据你的错误,应该不是。

关于python - 我怎样才能让 Python 找到 ffprobe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285142/

相关文章:

python - 如何在 Python 中获取/设置函数的局部变量(从外部)?

nginx - ffmpeg 转发流有 3 秒延迟

ffmpeg - DirectShow RTSP SourceFilter 与 MPEG-4 视频流

python - arcpy 获取要素数据集中要素类的数据库路径

python - 清除条目小部件框

python - AttributeError : dlsym(0x7fc4cfd563b0, add_all_items_to_map): symbol not found;使用 C 从 Python 运行 Go

ffmpeg - 将 mp3 文件转换为 Amazon Alexa SSML 所需的编解码器版本(MPEG 版本 2)和比特率(48 kbps)的正确命令是什么?

Python os.path.dirname 更改目录时返回意外路径

python路径django

python - NetworkX - 从数据帧设置节点属性