|
|
发表于 2026-4-20 17:58:06
|
显示全部楼层
本帖最后由 aloha20200628 于 2026-4-26 21:02 编辑
以下代码用 utf-8 编码存为 test.bat 运行,与视频文件和 mediainfo.exe 同目录,其中调用的 mediainfo.exe 可从本论坛第三方下载 http://bcn.bathome.net/tool/mediaarea,20.03/MediaInfo.rar 落地即用,须用 20.03 版,因此版支持命令行用通配符传入批量文件可完成一次性处理。
代码会析取当前目录下的 *.mp4, *.mkv, *.avi 视频文件中所有音视频轨道所属的基本参数,汇总写入当前目录下的 all.csv 文件(utf-8 编码),其中每行参数序列根据 mediainfo.exe 的标准输出列表顺序,相应各参数的细分定义要比资源管理器中显示的属性(或用 shell.application 获取的结果)完整准确。
备注》若某一视频文件包含多个视频轨或多个音频轨,则其参数位序会相应扩展(即视频组属性值 '视频时长, 视频比特率, 宽度, 高度, 帧率' 或音频组属性值 '音频时长, 音频比特率, 声道数, 音频采样率' 会随之增扩),与输出文件 all.csv 的行头标题有可能错位,对那些被 mediainfo 解析不完备的视频文件则只能另当别论....
- @echo off &chcp 65001>nul &del /q "all.csv" 2>nul &echo,等候处理...
- setlocal enabledelayedexpansion &set "kw=/text/menu/chapter/image/" &set "h="
- (echo,文件名, 类型名, 文件路径, 文件大小, 总时长, 总比特率, 视频时长, 视频比特率, 宽度, 高度, 帧率, 音频时长, 音频比特率, 声道数, 音频采样率
- for /f "tokens=1* delims=:" %%a in ('mediainfo *.mp4 *.avi') do (
- set "a=%%a" &set "b=%%b" &set "b=!b: =!"
- if /i "!a:%kw%=!" neq "!a!" goto :end
- if /i "%%~nxa"=="complete name" (for /f "tokens=* delims= " %%F in ("%%b") do set/p=""%%~nxF",%%~xF,"%%~dpF",") else if /i "%%~nxa"=="file size" (set "c=1" &set/p="!b!,") else if /i "%%~nxa"=="duration" (set/p="!b!,") else if /i "%%~nxa"=="overall bit rate" (set/p="!b!,") else if /i "%%~nxa"=="bit rate mode" (if /i "!b:~,1!"=="v" set "c=" &set/p="!b!,") else if /i "%%~nxa"=="bit rate" (if defined c set/p="!b!,") else if /i "%%~nxa"=="width" (set "g=1" &set/p="!b!,") else if /i "%%~nxa"=="height" (set/p="!b!,") else if /i "%%~nxa"=="frame rate" (if defined g set/p="!b!,") else if /i "%%~nxa"=="channel(s)" (set "g=" &set/p="!b!,") else if /i "%%~nxa"=="sampling rate" (set/p="!b!,") else if /i "%%~nxa"=="general" (if not defined h (set "h=1") else echo,)
- ) )<nul >"all.csv"
- :end
- type "all.csv" &echo,&pause&exit/b
复制代码 |
评分
-
查看全部评分
|