ffprobe
是 FFmpeg 工具集中的一个非常有用的命令行工具,它可以用来查看媒体文件的详细信息,比如音视频编码格式、时长、分辨率、帧率、码率、音频采样率、轨道信息等等。
基本用法
要查看一个媒体文件的基本信息,可以使用以下命令:
ffprobe input.mp4
这将输出该媒体文件的各种信息,包括音视频流、格式、时长、大小、比特率等。
1. 查看所有详细信息
如果你想查看所有详细的元数据(包括视频流、音频流、字幕流等),可以使用以下命令:
ffprobe -v verbose input.mp4
-v verbose
:设置详细输出,会显示更多调试信息。input.mp4
:指定要分析的媒体文件路径。
2. 只显示媒体流的简要信息
如果你只对媒体文件的基本信息(如视频流和音频流的编码格式、时长等)感兴趣,可以使用以下命令:
ffprobe -v error -show_format -show_streams input.mp4
-v error
:只输出错误信息,忽略其他冗余信息。-show_format
:显示文件的基本格式信息(比如时长、文件大小等)。-show_streams
:显示所有媒体流的详细信息(视频、音频、字幕等)。
3. 查看格式信息
如果你只想查看文件的格式信息(如时长、文件大小、比特率等),可以使用以下命令:
ffprobe -v error -show_format input.mp4
输出内容示例:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Duration: 00:02:45.13, start: 0.000000, bitrate: 2133 kb/s
Stream #0:0(und): Video: h264 (High), yuv420p(tv), 1280x720, 23.98 fps, 23.98 tbr, 12288 tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 192 kb/s (default)
4. 查看流信息
如果你想查看文件中各个流的详细信息(如视频流、音频流的编码格式、帧率、分辨率等),可以使用以下命令:
ffprobe -v error -show_streams input.mp4
输出内容示例:
Stream #0:0(und): Video: h264 (High), yuv420p(tv), 1280x720, 23.98 fps, 23.98 tbr, 12288 tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 192 kb/s (default)
5. 查看特定流的信息
如果你只想查看某个特定流的信息,可以加上 -select_streams
参数指定流的编号。例如,查看视频流的信息:
ffprobe -v error -select_streams v:0 -show_streams input.mp4
如果要查看音频流的信息:
ffprobe -v error -select_streams a:0 -show_streams input.mp4
v:0
:指定第一个视频流。a:0
:指定第一个音频流。
6. 查看包信息
如果你要查看媒体文件中的数据包信息,可以使用以下命令:
ffprobe -v error -show_packets input.mp4
输出内容类似如下
[PACKET]
pkt_pts=0
pkt_dts=0
pkt_duration=1001
pkt_size=50000
stream_index=0
codec_type=video
key_frame=1
flags=K
[/PACKET]
[PACKET]
pkt_pts=1001
pkt_dts=1001
pkt_duration=1001
pkt_size=45000
stream_index=1
codec_type=audio
key_frame=0
flags=
[/PACKET]
[PACKET]
pkt_pts=2002
pkt_dts=2002
pkt_duration=1001
pkt_size=46000
stream_index=0
codec_type=video
key_frame=0
flags=
[/PACKET]
7. 查看文件的元数据
如果你需要查看文件的元数据(例如标题、艺术家、版权信息等),可以使用 -show_entries
参数:
ffprobe -v error -show_entries format_tags input.mp4
输出内容可能会类似于:
artist=Artist Name
title=Sample Video
copyright=Some Copyright Info
8. 查看文件的大小和时长
如果你只想查看文件的时长和大小等基本格式信息,可以使用以下命令:
ffprobe -v error -show_format input.mp4
输出内容示例:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Duration: 00:02:45.13, start: 0.000000, bitrate: 2133 kb/s
File size: 4510737 bytes
9. JSON 输出格式
如果你需要将输出内容处理成 JSON 格式,方便机器读取,可以使用 -print_format json
参数:
ffprobe -v error -show_format -show_streams -print_format json input.mp4
这会将结果以 JSON 格式输出,方便程序进行解析。其它的格式还包括csv,xml等。
输出示例:
{
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"codec_type": "video",
"codec_time_base": "1/1000",
"codec_tag_string": "avc1",
"codec_tag": "0x31637661",
"width": 1280,
"height": 720,
"r_frame_rate": "24000/1001",
"avg_frame_rate": "24000/1001",
"time_base": "1/90000",
"start_time": "0.000000",
"duration": "164.138667",
"bit_rate": "1500000",
"tags": {
"language": "und"
}
},
{
"index": 1,
"codec_name": "aac",
"codec_long_name": "AAC (Advanced Audio Codec)",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "mp4a",
"codec_tag": "0x6134706d",
"sample_rate": 44100,
"channels": 2,
"channel_layout": "stereo",
"time_base": "1/90000",
"start_time": "0.000000",
"duration": "164.138667",
"bit_rate": "192000",
"tags": {
"language": "und"
}
}
],
"format": {
"filename": "input.mp4",
"nb_streams": 2,
"nb_programs": 0,
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"format_long_name": "QuickTime / MOV",
"start_time": "0.000000",
"duration": "164.138667",
"size": "4510737",
"bit_rate": "2133000",
"tags": {
"artist": "Artist Name",
"title": "Sample Video",
"copyright": "Some Copyright Info"
}
}
}
常用参数总结
-v error
:只输出错误信息,避免多余的调试信息。-show_format
:显示文件格式的详细信息。-show_streams
:显示所有流(视频、音频、字幕等)的信息。-select_streams v:0
:选择特定的视频流(第一个视频流)。-select_streams a:0
:选择特定的音频流(第一个音频流)。-select_packets
:显示每一个数据包的信息。-show_entries format_tags
:查看文件的元数据标签(如艺术家、标题等)。-print_format json
:输出结果为 JSON 格式,便于机器解析。