FFmpeg笔记(三)

视频编码格式-H.264

H.261是1990年ITU-T定制的一个视频编码标准,属于视频编解码器,视频编码器的鼻祖
H.261又称为P*64,其目是为了能在64kbps的带宽上传输质量可接受的视频信号,
编码程序设计的码率是能够在40kbps到2Mbps之间工作
对CIF和QCIF分辨率的视频进行编解码(即亮度分辨率分别是352x288和176x144,色度采用4:2:0采样,分辨率分别是176x144和88x72), 它们是一种国际化的标准图像格式,不同硬件之间共同约定的统一格式

H.261的实现原理

使用帧间预测来消除荣誉,使用了大量的矢量运动来进行运动补偿:分析相似图片的规律,将它们不变的地方保留下来,变动的地方按照位移编码规律的出一个计算方式,并根据这个计算规在解码的时候则自动生成中间帧(由于是可以计算出来的,所以中间帧被丢掉)
变换编码部分使用了一个8x8的离散余弦变换来消除空域的冗余:
然后对变换后的系数进行阶梯量化
再对变换系数进行Zig-zag(模式填充矩阵,安某种规则对矩阵进行数据填充)扫描并进行熵编码来消除冗余的统计(编码过程中按熵原理不丢失任何信息的编码。)

视频编码格式-H.264

H.264目前的应用最广泛的的视频编码格式,是由视频编码专家组和动态图像专家组提出的视频解码器标准,名字有很多,如H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC`

国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。而H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC)的第10 部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。

H.264编解码流程

帧间和帧内预测(Estimation)
变换(Transform)和反变换
量化和反量化
环路滤波
熵编码

H.264的优势

编码效率高: 同H.263等标准的特率效率相比,节省约一半的时间。
高质量的视频画面: 能够在较低的带宽传送高质量的图像
网络适应能力强: 可以在低延迟和无延迟的的场景下工作,不同的环境不同的传输和播放熟虑,提供丰富的错误处理工具,很好的控制或消除丢包和误码
采用混合编码个够: 使用了DCT+DPCM的编码个够,此外还增加了运动估计,帧内预测,多帧预测,基于内容的变长编码,44二维整数变换等新的编码方式
编码选项少,降低了编码时开发的复杂的度
较高的计算复杂度,相比H.263计算更为复杂
编码方式
帧内预测编码: 利用相邻宏块的空间相关性(相似属性),预测剩余位置的属性进行压缩编码,为了满足不同场景,宏快和取点数以及取点方向各有差异,有4
4,88,1616的宏块划分, 这种压缩类似于JPEG压缩,在图片色彩越统一,压缩效果越好,压缩后的这帧叫做I帧(I-frame).
帧间预测编码: 帧间预测编码利用连续帧中的冗余来进行运动估计和补偿, 总而言之,就是各种找规律,统计分析,将相似部分去掉,可推导有规律部分记录差值计算规则,完全不相似部分则全部记录。 帧间压缩后,很多帧会被组成一组图片(GOP,group of pictures)
去块滤波器:自适应去除块效应的滤波器,人们无法识别的信号先去除掉
整数变换: 基于4×4像素块的类似于DCT的变换,有减少运算量和复杂度,有利于向定点DSP移植的优点
量化:可选52种不同的量化步长
熵编码: 采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。

H.264-GOP

上面提到在帧间编码后,会压缩生成一组图片(GOP),GOP中主要保留有三种不同的帧.

1.I-frame,关键帧,独立帧,尺寸最大,也是压缩最快的;

P-frames: 预测帧,基于I-frames或P-frames的可预测的图片进行编码得到的,P-frames可以引用最近预测的P-frames或一组I-frames;
B-frames,双向帧,基于使用之前和之后的帧信息进行编码后得到的帧。几乎不需要存储空间,但其解码过程会耗费很长时间,因为它依赖于周围其他的帧.
H.264-视图编码
Baseline: 支持I/P 帧,只支持无交错和CAVLC,一般用于低阶或需要额外容错的应用,比如视频通话、手机视频等;
Main:提供I/P/B 帧,支持无交错和交错,提供对于CAVLC 和CABAC 的支持,用于主流消费类电子产品规格如低解码的mp4、便携的视频播放器、PSP和Ipod等。
High:在Main的基础上增加了8x8 内部预测、自定义量化、无损视频编码和更多的YUV 格式(如4:4:4)用于广播及视频碟片存储(蓝光影片),高清电视的应用。

视频信息查看

Mac上没有什么好用的软件来查看视频信息,可以通过ffmpeg或ffprobe命令在指定-i(information)加上文件名来查看视频的具体信息,如下是终端输出的视频信息

... ffmpegdemo % ffprobe

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mov':
  Metadata:
    major_brand     : qt   
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2021-02-05T02:51:34.000000Z
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: MacBookPro15,1
    com.apple.quicktime.software: Mac OS X 10.15.6 (19G2021)
    com.apple.quicktime.creationdate: 2021-02-05T10:50:55+0800
  Duration: 00:00:26.63, start: 0.000000, bitrate: 2028 kb/s  
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 766x1334 [SAR 1:1 DAR 383:667], 2015 kb/s, 59.93 fps, 60 tbr, 6k tbn, 12k tbc (default)
    Metadata:
      creation_time   : 2021-02-05T02:51:34.000000Z
      handler_name    : Core Media Video
      encoder         : H.264
  • 参数介绍
Vidoe 采用H.264的编码格式和`yuv420p`的颜色编码格式, 
766x1334, 分辨率,
2015 kb/s, 码率
59.93 fps, fps为帧率(frame per second)
60 tbr: tb表示time base,视频容器的一个基本定义,与帧率接近,每秒有60个时间单元
6k tbn: time base 表文件层(st)的时间精度),1s=6k
12k tbc: time base 代表视频层(st->codec)的时间精度,
DAR - display aspect ratio,显示宽高比,播放出来的画面的宽与高之比
SAR - Sample aspect ratio,采样纵横比,表示横向的像素点数和纵向的像素点数的比值,即为我们通常提到的分辨率宽高比
PAR - pixel aspect ratio,单个像素的宽高比,大多数情况像素宽高比为1:1

参考文章

百度百科-H.264
ffmpeg 的 tbr tbc 和 tbn的意义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值