Ffprobe的使用
图看不到的话翻墙
一、ffprobe 下载、配置
https://ffmpeg.org/download.html 选择需要的平台,这里我选择的是Mac,然后点击 Static builds for macOS,点进去之后可以选择下载ffmpeg、ffprobe、ffplay、ffserver。
下载后解压到自己喜欢的路径。 然后根目录下打开bash文件
open .bash_profile
添加
alias ffprobe='/Users/zz/Desktop/workspace/bin/ffprobe'
二、使用
1. 查看视频信息
ffprobe /Users/zz/Downloads/IMG_7838.MP4
打出以下信息
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/zz/Downloads/IMG_7838.MP4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: isommp41mp42
creation_time : 2022-10-25T00:52:27.000000Z
Duration: 00:02:55.94, start: 0.000000, bitrate: 2503 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720, 2443 kb/s, SAR 1:1 DAR 16:9, 25 fps, 30 tbr, 600 tbn (default)
Metadata:
creation_time : 2022-10-25T00:52:27.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 55 kb/s (default)
Metadata:
creation_time : 2022-10-25T00:52:27.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
duration:视频时常 Stream #0:0:第一轨道,这里是视频轨道,一般也就一个视频轨道,音频轨道可能有多个, 视频是h264编码,图像储存格式是yuv420p,码率2443kb/3m,30帧
2. 查看视频轨道详细信息
ffprobe -v trace /Users/zz/Downloads/IMG_7838.MP4
打印出的信息很多,包括头信息、sample信息(264对视频帧的封装),每一帧的偏移量、大小、是否是关键帧。 这调命令通常用于查看mp4的moov位置,以判断是否可以快速播放。 以下是打印的头信息部分:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7feac9f04a00] type:'mdat' parent:'root' sz: 54963965 44 55052478
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7feac9f04a00] type:'moov' parent:'root' sz: 88477 54964009 55052478
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7feac9f04a00] type:'mvhd' parent:'moov' sz: 108 8 88469
moov即mp4的头 mdat是mp4的图像信息数据 mvhd是moov的子box
sz: 54963965 44 55052478 含义: 第一个是当前box所占的大小 第二个是起始偏移量 第三个是父box的大小
从上面能看出mdat的起始偏移量要大于moov的起始偏移量,所以这个视频不是一个能快速播放的视频
3.查看视频帧详细信息
ffprobe -show_frames
输出
[FRAME]
media_type=video
stream_index=0
key_frame=0 // 是否是关键帧
pts=105460 // pts时间戳
pts_time=175.766667 // 帧播放的时间
pkt_dts=105440
pkt_dts_time=175.733333 // 解码时间
best_effort_timestamp=105460
best_effort_timestamp_time=175.766667
pkt_duration=20
pkt_duration_time=0.033333 // 0.033秒,可以看出视频是30帧
duration=20
duration_time=0.033333
pkt_pos=54963601 // 帧的起始偏移量
pkt_size=80 // 帧大小
width=1280
height=720
pix_fmt=yuv420p // 色彩格式,解码和播放用
sample_aspect_ratio=1:1
pict_type=P // I、B、P帧,这里是P帧
coded_picture_number=4394
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=tv
color_space=bt709
color_primaries=bt709
color_transfer=bt709
chroma_location=left
[/FRAME]
以上是其中一帧的描述