图看不到的话翻墙

一、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]

以上是其中一帧的描述