Daily AVFoundation - 视频基础H264编码

前言

随着移动技术的成熟和即将到来的5G时代,直播已成为互联网行业的大热话题,直播答题、游戏直播、竞赛直播等层出不穷,直播早已成为人们耳熟能详的技术。互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。很多互联网创业者或者成熟企业进入该领域。

H264编码

H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者...详见H264百度百科

编码的目的
编码是为了将数据进行压缩,这样在传输的过程中就不会使资源被浪费。

举个:

比如: 
当你此刻显示器正在播放一个视频,分辨率1024×576,帧率是25,
那么一秒所产生正常的数据大小为:
1024×576(位像素)*25(张) / 8(1字节8位)(结果:B) / 1024(结果:KB) / 1024 (结果:MB) =  1.75MB 
显然一秒这么大的数据我们是无法接受的,如果不将数据进行压缩,那么最后视频资源数据将会超级大;

优势

  • 低码率(Low Bit Rate):和MPEG2和MPEG4 ASP等压缩技术相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3。
  • 高质量的图像:H.264能提供连续、流畅的高质量图像(DVD质量)。
  • 容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具。
  • 网络适应性强:H.264提供了网络抽象层(Network Abstraction Layer),使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。

H.264最大的优势是具有很高的数据压缩比率,在同等图像质量的条件下,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。

举个:

原始文件的大小如果为88GB,采用MPEG-2压缩标准压缩后变成3.5GB,压缩比为25∶1,而采用H.264压缩标准压缩后变为879MB,从88GB到879MB,H.264的压缩比达到惊人的102∶1。

低码率(Low Bit Rate)对H.264的高的压缩比起到了重要的作用,和MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技术将大大节省用户的下载时间和数据流量收费。尤其值得一提的是,H.264在具有高压缩比的同时还拥有高质量流畅的图像,正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。

特点

  • 更高的编码效率: 同H.263等标准的特率效率相比,能够平均节省大于50%的码率。
  • 高质量的视频画面: H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。
  • 提高网络适应能力: H.264可以工作在实时通信应用(如视频会议)低延时模式下,也可以工作在没有延时的视频存储或视频流服务器中。
  • 采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。
  • H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。
  • H.264可以应用在不同场合:H.264可以根据不同的环境使用不同的传输和播放速率,并且提供了丰富的错误处理工具,可以很好的控制或消除丢包和误码。
  • 错误恢复功能:H.264提供了解决网络传输包丢失的问题的工具,适用于在高误码率传输的无线网络中传输视频数据。
  • 较高的复杂度:264性能的改进是以增加复杂性为代价而获得的。据估计,H.264编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。

如何编码
按照指定的特定的格式记录采样和量化后的数据Data.
编解码协议H264(视频)和AAC(音频)有软编解码和硬编解码。
软编码和硬编码如何区分

  • 软编码:使用CPU进行编码
  • 硬编码:使用非CPU进行编码,如显卡GPU、专用的DSP、FPGA、ASIC芯片等

软编码和硬编码比较

  • 软编码:实现直接、简单,参数调整方便,升级易,但CPU负载重,性能较硬编码低,低码率下质量通常比硬编码要好一点。
  • 硬编码:性能高,低码率下通常质量低于硬编码器,但部分产品在GPU硬件平台移植了优秀的软编码算法(如X264)的,质量基本等同于软编码。

举个不太恰当的:来说明软编硬编的区别

软编码和硬编码背后其实是一种设计思想,软编码更加灵活,对应扩展修改比较容易,而硬编码则是比较死板,不便于扩展和修改。
例如 int i = 2,j = 3
if ( i == 2 ) {
//硬编码
}

if( i == j ) {
//软编码,可以任意修改i,j的值,从而达到一些要求,更加容易修改和扩展。
}

目前的主流GPU加速平台

  • Intel
  • AMD
  • NVIDIA

目前主流的GPU平台开发框架

  • CUDA:NVIDIA的封闭编程框架,通过框架可以调用GPU计算资源
  • AMD APP:AMD为自己的GPU提出的一套通用并行编程框架,标准开放,通过在CPU、GPU同时支持OpenCL框架,进行计算力融合。
  • OpenCL:开放计算语言,为异构平台编写程序的该框架,异构平台可包含CPU、GPU以及其他计算处理器,目标是使相同的运算能支持不同平台硬件加速。
  • Inel QuickSync:集成于Intel显卡中的专用视频编解码模块。

总结

本文讲解了视频H264编码目的与优势,以及软硬编解码的知识概要。想要了解更多关注下一篇文章!

你可能感兴趣的:(Daily AVFoundation - 视频基础H264编码)