六、ffprobe 分析音视频参数
2023-06-07 本文已影响0人
LucXion
在终端中通过命令行将当前目录切换到视频文件的目录,使用ffprobe分析音视频文件、音视频流信息。音视频格式信息(show_format)->音视频流信息(show_stream)->音视频包信息(show_packets)->音视频帧信息(show_frames)
1.> 在终端中通过命令行将当前目录切换到视频文件的目录
2.1> 视频容器格式分析
// 容器格式、持续时间、比特率等等
/**
nb_streams = 2 :表示容器格式有两个流
nb_programs :常见于广电用的 mpegts 流里,比如某个卫视频道的节目
bit_rate :码率
*/
ffprobe -i jump.m4a -show_format
2.2> 音视频流分析
// 编解码器、码率、分辨率、帧率等等
/**
[STREAM]
index=0 //流的索引号
codec_name=h264 //流的编码名
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 //流的编码详细描述
profile=High //流的profile
codec_type=video //流的codec类型
codec_tag_string=avc1 // 流的codec tag 字符串
codec_tag=0x31637661 // 流的codec tag,也是字符串,只不过以16进制方式存储
width=1920 //视频的宽,流内容部分
height=800 //视频的高,流内容部分
coded_width=1920 // 编码视频的宽,编解码时的部分,对齐的数据,显示时不用
coded_height=800 // 编码视频的高,编解码时的部分,对齐的数据,显示时不用
has_b_frames=2 // IPB 帧排列时两个P之间包含两个B
sample_aspect_ratio=1:1 //像素点采样比例
display_aspect_ratio=12:5 // 显示图像比例
pix_fmt=yuv420p // 像素点格式
level=40 // 与profile一起出现,对应的是参考标准中有对应的参数描述
color_range=unknown //调色必备参数
color_space=unknown //调色必备参数
color_transfer=unknown //调色必备参数
color_primaries=unknown //调色必备参数
field_order=progressive // 隔行扫描逐行扫描标识
r_frame_rate=24/1 // 实际帧率
avg_frame_rate=24/1 // 平均帧率
time_base=1/24 //时间基,通常和帧率有对应关系
start_pts=0 // 开始时间戳
start_time=0.000000 // 开始时间
duration_ts=17620 //duration 时间戳
duration=734.166667 // duration 时间
bit_rate=7862427 // 码率
max_bit_rate=N/A // 最大码率
bits_per_raw_sample=8 // 原始数据每个采样占位
nb_frames=17620 // 总帧数
extradata_size=42 // extradata 大小
TAG:language=eng // 这个是TAG,主要是展示语种
TAG:handler_name=VideoHandle // 句柄名
TAG:vendor_id=FFMP // 生成MP4文件的工具
TAG:encoder=libx264 // 视频编码器标识
[/STREAM]
sample_aspect_ratio(SAR)数据采样宽高比,
display_aspect_ratio(DAR)显示宽高比,
这两个数值中间如果有差别的话,说明像素点不是矩形的,假设视频像素点的实际宽度为 4,实际高度为 3,但是为了适应某个显示设备,需要将像素点压缩成宽度为 16,高度为 9 的矩形。这种情况下,采样宽高比为 4:3,而显示宽高比为 16:9,两者之间存在差异。
垂直分辨率为 720 像素的视频通常被称为 720P 视频,而垂直分辨率为 1080 像素的视频则被称为 1080P 视频,如果垂直分辨率为800的视频,因为800P不是常见的视频格式,我们一般把它归为1080P
*/
ffprobe -i jump.m4a -show_streams
2.3>音视频包分析(可以分析文件和音视频流URL)
/**
packet codec_type=audio stream_index=1 pts=2744311 pts_time=62.229274 dts=2744311 dts_time=62.229274 duration=2029 duration_time=0.046009 size=27 pos=3105584 flags=K__
packet codec_type=video stream_index=0 pts=992896 pts_time=62.056000 dts=991840 dts_time=61.990000 duration=533 duration_time=0.033313 size=60 pos=3104195 flags=___
*/
// 分析视频包,并以xml的格式输出
ffprobe -show_packets -select_streams v -of xml input.mp4
// 分析音频包,并以xml的格式输出
ffprobe -show_packets -select_streams a -of xml jump.mp4
// 分析所有音视频包,并以xml的格式输出
ffprobe -show_packets -of xml jump.mp4
2.4> 音视频帧信息
/**
GOP 是 Group of Pictures 的缩写,意为“图像组”。在视频编码中,GOP 通常是指由多个连续的视频帧组成的一个组,其中包含一个关键帧(I 帧)和若干个预测帧(P 帧)和参考帧(B 帧)等
key_frame=1 关键帧I,key_frame=0 预测帧P、B
*/
// 使用 show_entries 指定输出的信息字段
ffprobe -show_frames -select_streams v -of xml -show_entries packet=pts_time,dts_time,flags jump.mp4