音视频常见概念

    • 软解与硬解
    • IBP帧
    • GOP
    • YUV编码
    • RGB与YUV相互转换
  • 参考资料

软解与硬解

视频解码分为软解硬解
所谓“软解”就是通过软件让 CPU 进行视频解码处理;而“硬解”是指不依赖于 CPU,通过专用的设备(子卡)
单独完成视频解码,比如曾经的 VCD/DVD 解压卡、视频压缩卡都被冠以“硬解”的称号。现在实现高清硬解不需
要额外的子卡,也不需要额外的投入,因为硬解码模块被整合在了 GPU 内部,而目前主流的显卡(包括整合显卡)都能支持硬解码。
“硬解”其实更需要软件的支持,只是基本不需要 CPU 参与运算,从而为系统节约了很多资源开销。通过降低 CPU
占用率,可以给用户带来很多实惠。

GPU 硬解码高清视频的优势

  • 不需要太好的 CPU,单核足矣,CPU 方面节约不少资金;
  • 硬解码基本相当于免费附送,不到 500 元的整合主板都能完美支持;
  • 硬解码让 CPU 占用率超低,系统有能力在看 HDTV 的同时进行多任务操作;
  • CPU 需要倾尽全力才能解码 HDTV,而 GPU 只需动用 0.1 亿晶体管的解码模块就能完成任务,功耗控制更好

GPU 硬解码高清视频的劣势

  • 起步较晚,软件支持度无法与软解相提并论;
  • 面对杂乱无章的视频编码、封装格式,硬解码无法做到全面兼容;
  • 软解拥有大量画面输出补偿及画质增强技术,而硬解这方面做得还远远不够;
  • 硬解码软件设置较为复杂,很多朋友根本不知道该如何正确使用 GPU 硬件解码。

IBP帧

帧——就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。而在实际压缩时,会采取各种算法减少数据的容量,其中 IPB 就是最常见的。

I frame :帧内编码帧,又称 intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I 帧可以看成是一个图像经过压缩后的产物。

P frame: 前向预测编码帧,又称 predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;

B frame: 双向预测内插编码帧 又称 bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;

I、B、P 的特点

I 帧特点:
它是一个全帧压缩编码帧。它将全帧图像信息进行 JPEG 压缩编码及传输;解码时仅用 I 帧的数据就可重构完整图像;

  • I 帧描述了图像背景和运动主体的详情;
  • I 帧不需要参考其他画面而生成;
  • I 帧是 P 帧和 B 帧的参考帧(其质量直接影响到同组中以后各帧的质量);
  • I 帧是帧组 GOP 的基础帧(第一帧),在一组中只有一个 I 帧;
  • I 帧不需要考虑运动矢量;
  • I 帧所占数据的信息量比较大。

P 帧:前向预测编码帧。
P 帧的预测与重构:P 帧是以 I 帧为参考帧,在 I 帧中找出 P 帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。在接收端根据运动矢量从 I 帧中找出 P 帧“某点”的预测值并与差值相加以得到 P 帧“某点”样值,从而可得到完整的 P 帧。
P 帧特点:

  • P 帧是 I 帧后面相隔 1~2 帧的编码帧;
  • P 帧采用运动补偿的方法传送它与前面的 I 或 P 帧的差值及运动矢量(预测误差);
  • 解码时必须将 I 帧中的预测值与预测误差求和后才能重构完整的 P 帧图像;
  • P 帧属于前向预测的帧间编码。它只参考前面最靠近它的 I 帧或 P 帧;
  • P 帧可以是其后面 P 帧的参考帧,也可以是其前后的 B 帧的参考帧;
  • 由于 P 帧是参考帧,它可能造成解码错误的扩散;
  • 由于是差值传送,P 帧的压缩比较高。

B 帧:双向预测内插编码帧。
B 帧的预测与重构
B 帧以前面的 I 或 P 帧和后面的 P 帧为参考帧,“找出”B 帧“某点”的预测值和两个运动矢
量,并取预测差值和运动矢量传送。接收端根据运动矢量在两个参考帧中“找出(算出)”预测
值并与差值求和,得到 B 帧“某点”样值,从而可得到完整的 B 帧。
B 帧特点

  • B 帧是由前面的 I 或 P 帧和后面的 P 帧来进行预测的;
  • B 帧传送的是它与前面的 I 或 P 帧和后面的 P 帧之间的预测误差及运动矢量;
  • B 帧压缩比最高,因为它只反映丙参考帧间运动主体的变化情况,预测比较准确;
  • B 帧不是参考帧,不会造成解码错误的扩散。

从上面的解释看,我们知道 I 和 P 的解码算法比较简单,资源占用也比较少,I 只要自己完成就行了,P 呢,也
只需要解码器把前一个画面缓存一下,遇到 P 时就使用之前缓存的画面就好了,如果视频流只有 I 和 P,解码器可
以不管后面的数据,边读边解码,线性前进,大家很舒服。

但网络上的电影很多都采用了 B 帧,因为 B 帧记录的是前后帧的差别,比 P 帧能节约更多的空间,但这样一来,
文件小了,解码器就麻烦了,因为在解码时,不仅要用之前缓存的画面,还要知道下一个 I 或者 P 的画面(也就是
说要预读预解码),而且,B 帧不能简单地丢掉,因为 B 帧其实也包含了画面信息,如果简单丢掉,并用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的 B 帧,

B 帧用的多,对不支持 B 帧的播放器就造成更大的困扰,画面也就越卡。

一般平均来说,I 的压缩率是 7(跟 JPG 差不多),P 是 20,B 可以达到 50,可见使用 B 帧能节省大量空间,节
省出来的空间可以用来保存多一些 I 帧,这样在相同码率下,可以提供更好的画质。

GOP

GOP:Group of Pictures 画面组
GOP(Group of Pictures)策略影响编码质量:所谓 GOP,意思是画面组,一个 GOP 就是一组连续的画面。MPEG编码将画面(即帧)分为 I、P、B 三种,I 是内部编码帧,P 是前向预测帧,B 是双向内插帧。简单地讲,I 帧是一个完整的画面,而 P 帧和 B 帧记录的是相对于 I 帧的变化。没有 I 帧,P 帧和 B 帧就无法解码,这就是MPEG 格式难以精确剪辑的原因,也是我们之所以要微调头和尾的原因。

GOP总是以I 帧为起始点,后面有若干P 帧,其它是B 帧,下一个I 帧为新的GOP的起始点,如下图。

YUV编码

一文读懂 YUV 的采样与格式 - 知乎 (zhihu.com)

RGB 色彩空间更适合图像采集和显示, YUV 空间用于编码和存储则比较好。 在存储和编码之前,RGB 图像要转换为 YUV 图像,而 YUV 图像在 显示之前通常有必要转换回 RGB。

Y 代表 亮度,U代表色调,V代表色饱和度。

色调是由光波的峰值定义的,描述的是光的颜色。色饱和度是由光波的谱宽定义的,描述的是光的纯度。

RGB与YUV相互转换

RGB 转 YUV 的过程实际上就是 把 RGB 3分量里面的亮度信息 提取出来,放到 Y 分量。再把 RGB 3分量里面的 色调 ,色饱和度 信息提取出来放到 U跟 V分量。

有如下公式进行转换:

YUV 图像的主流采样方式有如下三种:

  • YUV 4:4:4 采样
  • YUV 4:2:2 采样
  • YUV 4:2:0 采样

YUV 4:2:0 采样的图像比 RGB 模型图像节省了一半的存储空间,因此它也是比较主流的采样方式。

参考资料

《ffmpeg基础库编程开发》
一文读懂 YUV 的采样与格式 - 知乎 (zhihu.com)

音视频常见概念:软解硬解、IBP帧、GOP、YUV编码相关推荐

  1. 从零实现简易播放器-0.音视频基本概念

    音视频基本概念 作者:史正 邮箱:shizheng163@126.com 如有错误还请及时指正 如果有错误的描述给您带来不便还请见谅 如需交流请发送邮件,欢迎联系 我的csdn : https://b ...

  2. 音视频传输:RTP协议详解和H.264打包方案

    问题背景: 前面讲解了PS.TS.FLV这三种媒体封装格式,现在新开一个系列讲解下传输协议,这里面会包含RTP.RTSP.HLS.RTMP等.当然最复杂的封装格式MP4在准备中,后面会把封装格式这个系 ...

  3. 音视频基本概念和FFmpeg的简单入门(新手友好+FFmpeg资料分享)

    音视频基本概念和FFmpeg的简单入门 基本概念 容器/文件(Conainer/File): 即特定格式的多媒体文件,一般来说一个视频文件是由视频,音频,字幕等按特定的格式/规则组合到一起的,常见如: ...

  4. Android 音视频采集与软编码总结

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/75807435(本文已在 "任玉刚" 微信公众号发布 ...

  5. 【网络通信 -- 直播】音视频常见封装格式 -- MEPG2 TS

    [网络通信 -- 直播]音视频常见封装格式 -- MEPG2 TS [1]相关码流基本概念 ES 流(Elementary Stream)基本码流,直接取自编码器的数据流,可以为音频(AAC 等).视 ...

  6. 《音视频开发进阶指南》读书笔记(一) —— 音视频基础概念

    前言 最近要学音视频,在图书馆借到这本<音视频开发进阶指南>,读了一段时间觉得挺好就在某宝买了. 以后一段时间应该都会沉浸在研究音视频中,开个专题记录哈每一章的读书笔记吧(以iOS开发的角 ...

  7. 音视频基础概念(2)——音频

    目录 1. 基本知识 2.采样率和采样位数 3.音频编码 4. 声道数 5. 码率 6. 音频格式 日常生活中,音视频随处可见,包括视频.音频.编解码.封装容器.音视频等概念. 1. 基本知识 音频数 ...

  8. 音视频基础概念(1)——视频

    目录 1.1 动画书 1.2 视频 1.3 视频帧 1.4 帧率 1.5 色彩空间 RGB与YUV YUV优势 RGB与YUV的换算 日常生活中,音视频随处可见,包括视频.音频.编解码.封装容器.音视 ...

  9. 音视频编解码知识学习详解(分多部分进行详细分析)

    1. 常用的基本知识 基本概念 编解码 编解码器(codec)指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序.这里指的变换既包括将信号或者数据流进行编码(通常是为了传输.存储或者加密)或 ...

最新文章

  1. jquery仿邮箱文本输入框自动加载邮箱后缀
  2. cufflinks基于dataframe数据绘制三维散点图(3d scatter plot)
  3. pLSQL中文乱码问题
  4. C51 汇编指令英文全称
  5. java编写创建数据库和表的程序
  6. HTTP1.1 Keep-Alive到底算不算长连接?
  7. 从能用到好用,GIS信创如何做到行稳致远?
  8. php memcached 设置过期,memcached过期时间无效
  9. Delphi 与 DirectX 之 DelphiX(15): TPictureCollectionItem.DrawWaveX、DrawWaveY ...
  10. java paint方法_在Java中,为了使paint()方法执行,以下各项中,()是最佳的调用方法
  11. SpringBoot中的定时任务和异步任务
  12. Java字符串排序-带数字字母的字符串混合排序
  13. 【图像加密解密】基于matlab GUI混沌序列图像加密解密(含相关性检验)【含Matlab源码 1862期】
  14. CausalImpact
  15. Android Fingerprint完全解析(一) :Fingerprint整体框架
  16. Effective Java笔记(第二章)
  17. matlab等距偏置曲线,144 偏置曲线命令详解
  18. 重磅!《深度学习 500 问》已更新,(附完整下载)
  19. 物联网毕业设计题目选题大全
  20. WPS哪些文件夹可以删除

热门文章

  1. OpenStack云平台搭建(4) | 部署Placement
  2. Python imgaug库的使用
  3. 计算机基础知识题库百度云链接,科目一考试题库百度云
  4. Python语言程序设计基础_实验四_函数(三)_答案_通识教育必修课程_上海师范大学
  5. jsp中点击一个图片跳转到另一个页面的方法
  6. 程序员必备基础:加签验签
  7. Java复习整理 01
  8. 原神迷城战线光界篇增幅试炼怎么过
  9. IDEA控制台乱码(已解决)
  10. 少说话多写代码之Python学习002——环境搭建