视频编码(压缩)方式/编码(压缩)原理/概念 (转)作者:哈库呐玛塔塔__

视频数据有极强的相关性,帧与帧之间有大量冗余信息,压缩的本质就是去除这些冗余信息。
压缩的方向:

空间冗余,视频的背景和整体颜色相近并且平稳变化,可以利用帧内编码进行压缩;(无损)
时间冗余,两个视频帧之间具有强相关性,利用运动估计和运动补偿进行帧间压缩;(无损)
运动补偿:通过先前的局部图像来预测,补偿当前的局部图像;
运动表示:不同区域的图像需要使用不同的运动矢量来描述运动信息;
运动估计:从视频序列中抽取运动信息的一整套技术。
结构冗余,图像内部存在相似性,通过这种关系可以进行分形编码;
编码冗余,出现概率大的颜色编码长度短,概率小的颜色编码长度长;(可变长度编码)
视觉冗余,利用人眼对亮度和色度的敏感度不同,在编码时进行数据压缩;(有损压缩)
GOP概念:它代表两个I帧之间形成的一组连续的图像帧。
通常在编码器设置参数时,必须会设置一个gop_size的值,其实就是代表2个I帧之间的帧数目。在一个GOP组中容量最大的就是I帧,所以相对而言,gop_size设置的越大,整个视频画面质量就会越好。但是解码端必须从接受的第一个I帧开始才可以正确解码出原始图像,否则无法正确解码。
IPB帧:
简略:
I帧是关键帧,解码时只需要本帧数据;
P帧是参考帧,表示这一帧与前一个关键帧(或P帧)的差别;
B帧是双向参考帧,表示本帧与前后帧的差别;(B帧压缩率高,解码复杂,直播中较少用)
IDR帧是第一个I帧,为的是和其他I帧区别开,方便控制编码和解码;
编码角度来理解IPB:
I帧通过视频压缩算法解压成一张单独的完整视频画面,I帧去掉的是视频帧在空间维度上的冗余信息;
P帧需要参考其前面的一个I帧或者P帧来解码成一张完整的视频画面;
B帧需要参考其前一个I帧或者P帧,以及后面的一个P帧来生成一张完整的视频画面,所以P帧和B帧去掉的是视频帧在时间维度上的冗余信息。
DTS:Decode Timestamp 解码时间戳。用于解码阶段进行视频的同步和输出。
PTS:Presentation Timestamp 显示时间戳
硬编码:使用GPU计算,性能高 VideoToolBox、AudioToolBox。但是特性支持有限,而且压缩率一般偏低
软编码:使用CPU来进行编码计算,实现简单直接,升级容易,但是CPU负载重。压缩率比较高,而且支持的H264特性也会比硬编码多很多,相对来说比较可控。

视频:使用ffmpeg,x264算法吧视频原始数据YUV/RGB编码成H264

音频:使用fdk_aac将音频数据PCM转换成AAC。

在优势方面,软件编码兼容性好,能解码所有的视频格式文件,画质清晰、画面精致,速度较快。而硬件编码的优势在于它的编码速度非常快且效率极高,由于GPU承担起了编码的重担,因此硬编码对CPU的占用率低,就算长时间高清录制视频手机也不会发烫降频。
在劣势方面,软件编码的CPU占用率高,一些性能比较差的手机可能会因CPU发热而降频、卡顿,无法流畅录制、播放视频,同时使用软件编码的方式可能会让软件包体变大,手机内存占用率变高。而硬件编码的确定就更明显,在某些智能手机上,由于机型区别,采取硬件编码的方式可能会出现兼容性上的问题,还有硬件编码画面不够精细的问题一直都很难解决。

作者:哈库呐玛塔塔__
链接:https://www.jianshu.com/p/3a7fbaf64a7a
来源:简书

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值