在Python脚本中使用FFProbe

时间:2017-01-18 19:51:04

标签: python ffmpeg ffprobe

我对python很新,这是我的第一个真正的项目,我遇到了障碍。我这里有一个.wmv文件,我使用FFprobe从.wmv文件中提取持续时间(以秒为单位)。当我在CMD中运行以下命令时:

ffprobe -i Video2.wmv -show_entries format=duration -v quiet -of csv="p=0"

我获得了成功的输出。

但是,当我使用os.system时,就像这样:

os.system('ffprobe -i Video2.wmv -show_entries format=duration -v quiet -of csv="p=0"')

我得到以下输出:

'ffprobe' is not recognized as an internal or external command, operable program or batch file.

这非常令人困惑,我无法在网上找到解决此问题的方法,我们非常感谢任何输入。

1 个答案:

答案 0 :(得分:0)

Python无法找到ffprobe,因为它不在您的环境变量中。 This youtube video显示了如何正确安装它,this wikihow page(方法2)也是如此,我将从这里引用:

  

在命令行中启用FFmpeg

     

enter image description here   单击“开始”按钮,然后右键单击“计算机”。选择属性   从右键菜单中。在“系统”窗口中,单击   左侧框架中的“高级系统设置”链接。

     

enter image description here

     

单击“系统属性”中的“环境变量”按钮   窗口。它将位于窗口的底部。

     

enter image description here

     

在“用户变量”部分中选择PATH条目。这是位于   在“环境变量”窗口的第一帧中。点击   编辑按钮。在“变量值”字段中,输入; c:\ ffmpeg \ bin之后   任何已经写在那里的东西。如果您将其复制到另一个   开车,更改驱动器号。单击“确定”保存更改。如果   在此屏幕中输入的内容不正确,可能会导致Windows   无法正常启动。如果“用户”中没有PATH条目   变量“设置,单击”新建“按钮并创建一个。输入PATH   对于变量名称。此方法将为当前启用FFmpeg   用户。其他Windows用户将无法从该命令运行它   线。要为每个人启用它,请在PATH中输入; c:\ ffmpeg \ bin   在“系统变量”中输入。小心不要删除任何东西   已经在这个变量中。

     

enter image description here

     

打开命令提示符。输入命令“ffmpeg -version”。如果   命令提示符返回FFmpeg的版本信息,然后是   安装成功,可以从任何地方访问FFmpeg   命令提示符下的文件夹。

     

如果收到“libstdc ++ -6 is   缺少“错误,您可能需要安装Microsoft Visual C ++   可再发行软件包,可从Microsoft免费获得。

我希望有所帮助。

只是旁注,我不认为os.system是推荐的调用命令行的方式。

我建议使用subprocess更改这样的东西(改编自代码here):

import subprocess
import shlex
import json
def get_duration(file_path_with_file_name):

    cmd = 'ffprobe -show_entries format=duration -v quiet -of csv="p=0"'
    args = shlex.split(cmd)
    args.append(file_path_with_file_name)
    # run the ffprobe process, decode stdout into utf-8 & convert to JSON
    ffprobe_output = subprocess.check_output(args).decode('utf-8')

    ffprobe_output = json.loads(ffprobe_output)

    return ffprobe_output