FFMPEG - 批量提取媒体持续时间并写入文本文件

2023-12-12

我的一个文件夹中有十个媒体文件。我想创建一个包含两列的文本文件 - 文件名及其持续时间(秒):

video1.mp4|300 seconds 
video2.mp4|360 seconds 
video3.mp4|420 seconds 
... 
audio10.wav|120 seconds 

我在网上没有找到任何类似的问题,所以我不知道如何做到这一点......


枚举媒体文件并解析Duration:输出中的行ffmpeg -i:

@echo off
>output.txt (
    for %%F in (*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav) do (
        for /f "tokens=2-5 delims=:., " %%a in (
            'ffmpeg -i "%%F" 2^>^&1 ^| find "Duration:"'
        ) do (
            set /p =%%~nxF^|<nul
            setlocal enableDelayedExpansion
            set /a "duration=1%%a*3600 + 1%%b*60 + 1%%c - 366100"
            echo !duration!.%%d seconds
            endlocal
        )
    )
)
pause

With ffprobe(ffmpeg 包的一部分)持续时间将具有微秒精度:

@echo off
>output.txt (
    for %%F in (*.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav) do (
        for /f "tokens=2 delims==" %%a in (
            'ffprobe "%%F" -show_entries format^=duration -v quiet -of compact'
        ) do (
            echo %%~nxF^|%%a seconds
        )
    )
)
pause

或者,您可以使用快多了 MediaInfo CLI输出持续时间(以毫秒为单位):

>output.txt "C:\Program Files (x86)\MediaInfo\MediaInfoCLI.exe" ^
    --output=General;%%FileName%%.%%FileExtension%%^|%%Duration%%\r\n ^
    *.mpg *.mp4 *.mkv *.avi *.m4a *.flac *.mp3 *.wav
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FFMPEG - 批量提取媒体持续时间并写入文本文件 的相关文章

  • 从视频中删除所有非关键帧,无需重新编码

    我有一个 HEVC mkv 视频 我需要从中删除除关键帧之外的所有内容 而无需重新编码整个内容 我发现我可以使用这个额外的关键帧 ffmpeg i full mkv c v copy vf select eq pict type PICT
  • python中ffmpeg的管道输入和输出

    我在用着ffmpeg从我通过管道传输的 Base64 编码图像列表创建视频ffmpeg 输出到文件 使用下面附加的代码 工作得很好 但我想要实现的是将输出改为Python变量 意味着管道输入和管道输出 但我似乎无法让它工作 我当前的代码 o
  • 当应用程序最小化时隐藏表单

    我有一个主表单和一个状态表单 当我的应用程序中的工作正在进行时 我会显示它们 如果工作完成我就打电话Hide状态表上出现 状态表消失 当我最小化主窗体而等待窗体可见时 就会出现问题 然后两种形式都被隐藏 这就是我想要的 但是 如果工作完成时
  • 在 C#/VB.NET 或 C++ Win32 中启用/禁用 Aero

    如何在 C NET 或 C Win32 中禁用航空效果 这是我在 C C 中的测试代码 但仅在我的应用程序运行时才有效 include
  • python 不被识别为内部或外部命令[重复]

    这个问题在这里已经有答案了 这是一个非常烦人的问题 我在网上寻找解决方案 但我发现的只是有关更改 PATH 变量的提示 当然 我也这样做了 我的Python安装目录是C Python27 这是 32 位版本 每当我在命令提示符中键入 pyt
  • IllegalComponentStateException 在 jtabbedpane 内的 jtextfield 中更改语言时

    今天 当我创建 JTabbedPane 时 我注意到一个奇怪的 在我看来 错误 这没有任何意义 而且因为我寻找这个超过 2 小时 所以在网上找不到任何东西 看看这个 import java awt BorderLayout import j
  • 如何防止从快照恢复虚拟机时出现“本机与域之间的信任关系失败”错误?

    当您从 足够旧的 快照恢复虚拟机 属于 Windows 域 时 您将收到以下错误 本机与域之间的信任关系失败 发生这种情况是因为域控制器定期更新计算机帐户密码 可能还有其他一些事情 有什么方法可以配置域控制器 或其他任何东西 以防止这种情况
  • 如何将 Windows 窗体应用程序 (C++) 设置为具有 Aero/Glass 背景?

    我正在使用 Visual Studio 2010 Pro 用 C 创建 Windows 窗体应用程序 我想创建一个透明背景 即使用 Aero Glass 效果 类似于它围绕 Windows 照片查看器中 UI 底部的方式 此时 我已经查看了
  • Powershell:别名和函数有什么区别?

    Im setting up my powershell profile to create aliases of commonly used commands On Microsoft s documentation https learn
  • PHP中如何找出特定进程仍在运行

    我正在编写一个脚本 该脚本构建其他脚本的队列 并应该管理它们的启动 管理器脚本应该知道哪个子进程已经完成 因此它可以启动在队列中等待的其他脚本 我添加了一个 echo 获取每个子进程的进程 ID 所以我有我的子进程进程 ID 现在正在使用系
  • 手动编码为 MPEG-TS

    SO 我正在尝试采用 H264 附件 B 字节流视频并将其编码为纯 Java 中的 MPEG TS 我的目标是创建一个最小的 MPEG TS 单节目 有效流 并且不包含任何定时信息 PCR PTS DTS 我目前处于可以将生成的文件传递给
  • Git core.safecrlf 对具有相同行结尾的文件有不同的行为

    我有带有 VS 项目的 Windows 计算机 并且使用 Visual Studio 和 Cygwin 环境中的工具 包括 Git 有时 编辑后我会在文件中得到不同的行结尾 我想要简单的解决方案来检查文件的行尾一致性 然后再将其发送到存储库
  • 批量-用特殊字符替换字符串

    我想使用批处理文件替换文件中的字符串 该字符串是 我想用以下方式替换它 我发现了几篇帖子 比如这个 如何替换 Windows 批处理文件中的子字符串 https stackoverflow com questions 5273937但该示例
  • 关于 Windows、原始鼠标数据的代码要 #include 哪些内容

    我发现下面的帖子对于做我自己的项目非常有用 那么新手问题是 我必须包含什么才能使其发挥作用 Link 如何准确测量具有已知 DPI 的鼠标的鼠标移动 以英寸或厘米为单位 https stackoverflow com questions 1
  • 适用于 Python 的旧版本 Windows 二进制库 Wheel 的存储库?

    作为很多用户 我使用很棒的Christopher 的 Windows 二进制轮子 http www lfd uci edu gohlke pythonlibs vlfd当尝试在 Windows 上安装一些 python 包 例如 GDAL
  • 如何检查窗口在用户屏幕上是否完全可见?

    有没有办法检查 WinForm 在屏幕上完全可见 例如是否超出屏幕范围 我已经尝试使用 SystemInformation VirtualScreen 来实现此目的 只要虚拟屏幕是一个矩形 它就可以很好地工作 但是一旦它不是 例如 L 形的
  • Windows Defender 检测 Python EXE 为木马

    我制作了一个 Python 脚本 将 Windows 目录以 zip 形式邮寄给我 我使用 sched 模块添加了一个调度程序 每小时重复一次 我试图制作一个简单的同步应用程序供个人使用 在 Windows 启动时启动 我使用将其转换为 e
  • 使用 ffmpeg 在一个音频文件中实现多个淡入/淡出效果

    我在向一个音频文件添加多种淡入淡出效果时遇到一些问题 当我尝试使用这样的命令时 ffmpeg y i home user video test sound mp3 af afade t in ss 0 d 3 afade t out st
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • phoenix 框架 - 新套接字处的参数无效 - windows

    我无法运行新的 Phoenix 应用程序 这是我收到的错误 我不确定原因是什么 我尝试更改端口 但这并没有改变行为 另外 我似乎能够正确运行节点 Compiled web views error view ex Compiled web c

随机推荐