MediaInfo 是一款强大的多媒体文件分析工具,它能够提供音视频文件的详细技术信息,包括编码格式、分辨率、比特率、帧率、声道数、字幕轨道等,除了图形界面版本,MediaInfo 还提供了功能丰富的命令行版本(MediaInfo CLI),适合批量处理、自动化脚本以及服务器环境下的使用,本文将详细介绍 MediaInfo 命令行的使用方法、常用参数、输出格式及实际应用场景。

MediaInfo 命令行基础
MediaInfo 命令行的可执行文件通常为 mediainfo(Linux/macOS)或 MediaInfoCLI.exe(Windows),其基本语法结构为:
mediainfo [选项] <文件路径>
基本信息查询
直接运行 mediainfo 文件名 即可输出文件的完整信息,默认格式为“文本视图”,包含 General、Video、Audio、Subtitles 等多个部分,每个部分详细列出了对应轨道的参数。
mediainfo video.mp4
输出示例:
General
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 25.5 MiB
Duration : 1mn 30s
Overall bit rate : 2 348 kb/s
...
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Codec ID : avc1
Bit depth : 8 bits
Width : 1 920 pixels
Height : 1 080 pixels
Frame rate : 25.000 FPS
...
输出格式控制
MediaInfo 支持多种输出格式,通过 --Output 参数指定:

-
文本视图(默认):
mediainfo --Output="General; %Duration% seconds" video.mp4
输出文件的时长(秒)。 -
CSV 格式:
mediainfo --Output="CSV" video.mp4
适合表格处理,字段间用逗号分隔。 -
XML 格式:
mediainfo --Output="XML" video.mp4
适合程序解析,结构化数据输出。 -
JSON 格式:
mediainfo --Output="JSON" video.mp4
现代开发中常用,便于直接集成到代码中。
(图片来源网络,侵删) -
自定义字段:
mediainfo --Output="Video; %Width%x%Height%: %FrameRate% FPS" video.mp4
输出视频的分辨率和帧率,1920x1080: 25.000 FPS。
递归与批量处理
-
递归目录:
mediainfo --Output="CSV" /path/to/videos/ > report.csv
分析指定目录下所有文件并生成 CSV 报告。 -
文件列表输入:
cat files.txt | xargs -I {} mediainfo --Output="JSON" {} > output.json
通过管道或文件列表批量处理。
高级参数与功能
信息筛选与深度控制
-
指定轨道类型:
mediainfo --Output="Video" video.mp4
仅输出视频轨道信息。 -
完整信息:
mediainfo --Full "video.mp4"
显示所有可用信息,包括非标准标签。 -
语言设置:
mediainfo --Language=eng "video.mp4"
输出英文标签(默认为系统语言)。
输出重定向与日志
-
保存到文件:
mediainfo "video.mp4" > info.txt
将结果保存到文本文件。 -
错误日志:
mediainfo "video.mp4" 2> error.log
捕获错误信息到日志文件。
实用脚本示例
示例1:批量提取视频分辨率
for file in *.mp4; do echo "$file: $(mediainfo --Output="Video; %Width%x%Height%" "$file")" done
示例2:检查音频编码是否为 AAC
if [[ "$(mediainfo --Output="Audio; %Codec%" "$file")" == "AAC" ]]; then echo "File $file has AAC audio." fi
输出字段详解
MediaInfo 支持数百种输出字段,常用字段如下表所示:
| 字段类别 | 字段标识符 | 说明 |
|---|---|---|
| General | %Format% | 容器格式(如 MP4、MKV) |
| %FileSize% | 文件大小(字节) | |
| %Duration% | 时长(毫秒) | |
| Video | %Width% | 视频宽度(像素) |
| %Height% | 视频高度(像素) | |
| %FrameRate% | 帧率(FPS) | |
| %BitRate% | 比特率(bps) | |
| Audio | %Codec% | 音频编码(如 AAC、MP3) |
| %Channel(s)% | 声道数(如 2=立体声) | |
| %SamplingRate% | 采样率(Hz) |
实际应用场景
-
媒体资产管理
生成视频库的元数据报告,便于检索和分类。 -
转码前检查
脚本自动检查视频编码、分辨率是否符合转码要求。 -
合规性验证
确认视频是否满足特定平台的技术规范(如 YouTube 的 1080p@30fps 要求)。 -
故障排查
分析损坏文件的元数据,定位问题轨道。
相关问答 FAQs
Q1: 如何通过 MediaInfo 命令行提取视频文件的编码格式?
A1: 使用以下命令即可提取视频编码格式:
mediainfo --Output="Video; %Codec%" video.mp4
输出可能为 AVC(H.264)或 HEVC(H.265)。
Q2: MediaInfo 命令行如何输出 JSON 格式并指定特定字段?
A2: 通过 --Output 参数结合 JSON 格式和字段标识实现,
mediainfo --Output="{\"Format\":\"%Format%\",\"Resolution\":\"%Width%x%Height%\"}" video.mp4
输出结果为:{"Format":"MPEG-4","Resolution":"1920x1080"}。
