在 Python 脚本中使用 FFProbe

2024-01-14

我对 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.

这非常令人困惑,我无法在网上找到解决这个确切问题的方法,任何意见都将非常感激。


Python 找不到 ffprobe,因为它不在您的环境变量中。这个 YouTube 视频 https://www.youtube.com/watch?v=xcdTIDHm4KM显示如何正确安装它,就像这个维基百科页面 http://www.wikihow.com/Install-FFmpeg-on-Windows)(方法2),我将从这里引用:

在命令行中启用 FFmpeg

enter image description here Click the Start button and right-click on Computer. Select Properties from the right-click menu. In the System window, click on the “Advanced system settings” link in the left frame.

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

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

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

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

我希望这有帮助。

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

我建议使用子进程来代替(改编自代码here https://gist.github.com/oldo/dc7ee7f28851922cca09):

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 脚本中使用 FFProbe 的相关文章

随机推荐

  • vector::iterator - 无效? [复制]

    这个问题在这里已经有答案了 可能的重复 g 不是类型 错误 https stackoverflow com questions 1301380 g is not a type error 以下内容无法编译 1 template
  • 当锁屏出现时 Android 启动意图

    我正在尝试开发替代锁屏 因为我需要一个意图过滤器来监听屏幕关闭 但问题是我不知道要使用哪个属性以及要给出哪个值 也在做同样的事情 这就是问题 https stackoverflow com questions 10800683 androi
  • 为什么使用 Java 套接字永远无法到达输入流的末尾?

    我正在用 Java 编写一个简单的代理 我无法将整个给定请求读入字节数组 具体来说 在下面的循环中 即使客户端已发送了它将发送的所有数据 即永远不会到达流的末尾 对 read 的调用也会阻塞 由于在读取完整的输入之前我无法确定是否是开始写入
  • 如何让数据对齐到html表格行的顶部

    我有这个 html 表 其中表中有一个单元格rowSpan 3 因此 在第一列中 我有 3 行带有输入 在第二列中 我有一张显示跨越所有 3 列的图片 我试图弄清楚浏览器如何计算出如何为第一列中的每一行垂直分配间距 然后我想变得 紧 这样所
  • 使用本地文件在远程数据库中执行 COPY 命令

    我正在尝试执行 PostgresCOPY命令 COPY warehouse terminal test table FROM C file csv DELIMITERS E t CSV HEADER QUOTE E ESCAPE E NUL
  • 使用 Json.NET 从 Json String 反序列化嵌套 DataSet

    我尝试使用 Json NET 从 JSON 字符串反序列化数据集 Json 字符串包含我想要使用的状态 消息和表 status ok message table column1 value1 column2 value2 column1 v
  • 该网站如何知道我正在打开另一个选项卡?

    当我登录一个网站 这是我大学的 学习系统 时 我发现我无法打开打开同一网站的新选项卡 当我这样做时 该网站不知何故会意识到并显示以下消息 该网站到底如何知道我在计算机上打开了哪些选项卡 据我所知 前端代码不应该访问我的私人浏览器信息 该网站
  • Jquery hasClass + If 语句

    我希望以下 loadContent 函数仅在单击的链接具有特定类时加载目标 div 这是我到目前为止所想出的 function loadContent targetDIV sourceURL if this hasClass done ta
  • 如何清理 TeamCity 中旧的失败构建?

    我们在 TeamCity 中确实有数百个失败的构建 由于旧的失败设置重试 数量特别高 现在浏览历史记录非常痛苦 我只想清理旧的失败构建 TeamCity 中有办法做到这一点吗 正常的清理策略只允许在上次成功构建之前的 X 天进行清理 在 T
  • 执行默认信号处理程序

    我编写了一个应用程序 其中我为 linux 中的不同信号注册了多个信号处理程序 进程接收到信号后 控制权将转移到我注册的信号处理程序 在这个信号处理程序中 我做了一些我需要做的工作 然后我想调用默认信号处理程序 即SIF DFL or SI
  • Bash - 文件意外结束[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在编写 bash 脚本来对程序运行测试 但我似乎无法找到语法错 误 当我使用 x 时 它告诉我它正在等待 但我找不到它 请参
  • 禁用 JSHint 警告:需要赋值或函数调用,但看到的是表达式 [重复]

    这个问题在这里已经有答案了 我有以下几行 imageUrl data imageUrl imageUrl 对于这一行 JSHint 抱怨道 Expected an assignment or function call and instea
  • 在非管理员用户下从远程运行 PS cmdlet - 访问被拒绝

    我正在尝试通过 Invoke Command 远程运行 Get ScheduledTask 该用户是非管理员 但属于 远程管理用户 的一部分 PS 远程处理工作正常 在本地运行命令效果很好 但是通过 Invoke Command 运行它会出
  • FSM actor 在转到相同状态后不会触发 onTransition

    根据Akka FSM 文档 http doc akka io docs akka snapshot scala fsm html 笔记 可以使用 goto S 或stay 实现相同状态转换 当前处于状态 S 时 它们之间的区别在于 goto
  • Osmdroid - 自定义离线图块源更改位置

    我使用此代码来显示离线 Osmdroid 地图图块 问题是 我已将图块存储在位置 sdcard emulated0 0 中 有什么方法可以将它传递到 XYTileSource 中吗 Thx myMapView setTileSource n
  • jQuery iframe 模式关闭表单提交

    我有一个 jQuery 模态对话框 其中包含一个 iframe 该 iframe 包含一个表单 当用户提交表单时 我想关闭模式对话框 我怎样才能做到这一点 index php 上的 jquery 模态脚本
  • 如何修复客户端首选项不接受服务器选择的协议版本 TLS10 [TLS12]

    我想使用 sql server 数据库运行 spring boot 应用程序 但是当我运行它时 出现以下错误 com microsoft sqlserver jdbc SQLServerException The driver could
  • Webstorm 6 - 如何使 scss 文件观察器忽略文件

    我希望 SCSS 文件的文件观察器忽略文件名以下划线开头的文件 例如 buttons scss 我该怎么做呢 首先向您想要忽略的文件添加 完成 来自文档 http sass lang com docs yardoc file SASS RE
  • 尝试设置 Laravel 4 给出“无法打开流:没有这样的文件或目录”

    尝试在 Mac 上设置 Laravel 4 我已经安装了 Composer 但是当我通过 XAMPP 进入公共文件夹时 我得到以下信息 警告 require Applications XAMPP xamppfiles htdocs lara
  • 在 Python 脚本中使用 FFProbe

    我对 python 相当陌生 这是我的第一个真正的项目 我遇到了障碍 我这里有一个 wmv 文件 我使用 FFprobe 从 wmv 文件中提取持续时间 以秒为单位 当我在 CMD 中运行以下命令时 ffprobe i Video2 wmv