FFMpeg学习记录:FFProbe

一、查看媒体文件信息

1.1 查看视频文件格式信息

查询视频文件格式的命令为:

ffprobe -show_format input.mp4

ffprobe version 4.2.2-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2007-2019 the FFmpeg developers
# 省略一些没用的

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/***/Desktop/***.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2020-06-23T02:09:34.000000Z
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: MacBookPro13,1
    com.apple.quicktime.software: Mac OS X 10.15.5 (19F101)
    com.apple.quicktime.creationdate: 2020-06-23T10:04:45+0800
  Duration: 00:02:21.52, start: 0.000000, bitrate: 19417 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 2880x1800 [SAR 1:1 DAR 8:5], 19403 kb/s, 59.94 fps, 60 tbr, 6k tbn, 12k tbc (default)
    Metadata:
      creation_time   : 2020-06-23T02:09:34.000000Z
      handler_name    : Core Media Video
      encoder         : H.264
[FORMAT]
filename=/Users/***/Desktop/***.mov
nb_streams=1
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=141.515000
size=343474749
bit_rate=19417008
probe_score=100
TAG:major_brand=qt  
TAG:minor_version=0
TAG:compatible_brands=qt  
TAG:creation_time=2020-06-23T02:09:34.000000Z
TAG:com.apple.quicktime.make=Apple
TAG:com.apple.quicktime.model=MacBookPro13,1
TAG:com.apple.quicktime.software=Mac OS X 10.15.5 (19F101)
TAG:com.apple.quicktime.creationdate=2020-06-23T10:04:45+0800
[/FORMAT]

看一下Stream的信息:

参数 解释
h264 视频的一种压缩标准,H264是目前兼容性最好的,已经使用了很多年了,它的新一代标准H265,也就是苹果说的HEVC、HEIC
Main H264标准中一种Profile
yuv420p 像素格式,YUV分别对应着亮度分量和色度分量,420表示亮度是全采样的,色度分量是取1/4
2880x1800 视频的分辨率
19403 kb/s 视频的码率
59.94 fps 视频的帧率
tbr、tbn、tbc 编码器和封装格式的时间基

1.2 查看音频文件格式信息

ffprobe -show_format input.mp3

ffprobe version 4.2.2-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2007-2019 the FFmpeg developers
# 省略一些没用的

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/wanghaipeng/Desktop/audi.m4a':
  Metadata:
    major_brand     : M4A 
    minor_version   : 0
    compatible_brands: M4A isommp42
    creation_time   : 2020-06-23T14:44:59.000000Z
    iTunSMPB        :  00000000 00000440 000000A0 000000000057E720 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  Duration: 00:02:00.02, start: 0.022667, bitrate: 127 kb/s
    Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
    Metadata:
      creation_time   : 2020-06-23T14:44:59.000000Z
      handler_name    : Core Media Audio
[FORMAT]
filename=/Users/***/Desktop/***.m4a
nb_streams=1
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.022667
duration=120.016667
size=1905418
bit_rate=127010
probe_score=100
TAG:major_brand=M4A 
TAG:minor_version=0
TAG:compatible_brands=M4A isommp42
TAG:creation_time=2020-06-23T14:44:59.000000Z
TAG:iTunSMPB= 00000000 00000440 000000A0 000000000057E720 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[/FORMAT]

看一下Stream的信息:

参数 解释
AAC 音频的一种压缩格式/封装格式
LC AAC格式的一种Profile,低复杂度规则
48000Hz 音频的采样率,每秒钟有多个少音频采样点
Stereo 立体声,双声道,指声音中有多少个音轨,常见的有单声道、双声道、5.1、7.1、Dolby全景声等
125 kbps 音频的码率,每秒钟有多少数据量

二、查看帧信息

2.1 查看视频的帧信息

假如把视频先简单理解成一张一张的图片,一帧视频就是一张图片

使用下面的命令查看视频的帧信息,视频的帧率一般在24-240(常见的),根据视频时长的不同,这个命令会解析出很多数据

//注意frame要加s,因为是复数,
ffprobe -show_frames input.mp4
ffprobe version 4.2.2-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2007-2019 the FFmpeg developers
# 省略一些没用的

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/wanghaipeng/Desktop/AirPods自动切换.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2020-06-23T02:09:34.000000Z
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: MacBookPro13,1
    com.apple.quicktime.software: Mac OS X 10.15.5 (19F101)
    com.apple.quicktime.creationdate: 2020-06-23T10:04:45+0800
  Duration: 00:02:21.52, start: 0.000000, bitrate: 19417 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 2880x1800 [SAR 1:1 DAR 8:5], 19403 kb/s, 59.94 fps, 60 tbr, 6k tbn, 12k tbc (default)
    Metadata:
      creation_time   : 2020-06-23T02:09:34.000000Z
      handler_name    : Core Media Video
      encoder         : H.264
[FRAME]
media_type=video
stream_index=0
key_frame=1
pkt_pts=0
pkt_pts_time=0.000000
pkt_dts=1700
pkt_dts_time=0.283333
best_effort_timestamp=0
best_effort_timestamp_time=0.000000
pkt_duration=100
pkt_duration_time=0.016667
pkt_pos=36
pkt_size=349820
width=2880
height=1800
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=I
coded_picture_number=0
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]

  • [FRAME]【表示一帧的起始,下面还有个[/FRAME]表示一帧的结束】
  • media_type=video【说明这一帧的类型是视频】【一个视频里往往也有音频,这两种帧是有规律存储的,如果是个正常的录像,第一帧往往可能是音频】
  • stream_index=0【流的索引,一个视频文件里可能有多个音视频流,比如:一个电影里可能有美语、汉语双音频】
  • key_frame=1【是否是关键帧,这个会在视频篇里解释】
  • pkt_pts=0【pkt是包,这里可以理解成帧;pts是展示时间戳,或者说显示的顺序】
  • pkt_dts=0【pkt同上,dts是解码时间戳,dts和pts的关系也在视频篇单独解释】
  • pkt_duration=512【表示这一阵的持续时间,注意这里的512是以tbn为时间单位的,并不是毫秒,下面的pkt_duration_time的单位是秒】
  • pkt_size=273【帧的大小】
  • pix_fmt=yuv420p【像素的格式是yuv420p,在4组yuv数据中,y数据取4个,uv数据总共取2个,详细采样规则后续单独写】
  • pict_type=I【帧的类型是 I 帧,I帧是P帧的参考帧】
  • color_range=tv【tv的色彩范围和pc有一些差别,以8位位深为例,pc的取值范围是0-255,tv则是18(好像是)-235】
  • color_space=bt709【色彩空间,常见的有三种601、709、2020,也是不同的标准,709使用了很长时间了,2020是最新的标准,色彩范围大,支持的分辨率也大,只是普及的还不够广】

2.2 查看音频的帧信息

音频的帧概念与视频有些不一样,视频帧是比较容易理解的,音频的稍微绕一些

音频数据的最基本单位是采样点,普通音乐的采样率是44100Hz(1秒钟有44100个采样点),而音频根据编码格式的不同,对帧的定义也不同。音频一帧可能是1024个采样点或者1052个采样点

以aac格式为例,一帧有1024个采样点

  • 如果采样率是44100,那么一秒就有44100/1024(43.067)帧
  • 如果采样率是48000,那么一秒就是48000/1024(46.875)帧

音频帧的查询命令与视频是类似的

ffprobe -show_frames input.mp3

音频的帧参数和视频类似,这里就不重复了

三、查看包信息

3.1 查询视频的包信息

视频的包信息和帧信息类似

ffprobe -show_packets input.mp3

3.2 查看视频的包数据

//如果是音频,也是一样的命令
ffprobe -show_data -show_packets input.mp4

这里甚至能看到包数据(音频也是类似的),只是个人能力有限,这里解读不动了,如果哪天学习了新知识,再来补充吧

你可能感兴趣的:(FFMpeg)