H264视频GOP组和视频压缩技术之有损压缩(帧间压缩、帧内压缩)、无损压缩(ACBAC压缩)

  • 一、 编码帧的分类
    • 1、I帧(intraframe frame), 关键帧,采用帧内压缩技术。IDR帧属于I帧。
    • 2、P帧(forward Predicted frame),向前参考帧。压缩时,只参考前面已经处理的帧,采用帧间压缩技术。它占I帧的一半的大小
    • 3、B帧(Bidirectionally predicted frame),双向参考帧。压缩时,即参考前面已经处理的帧,也参考后面的帧,帧间压缩技术。它占I帧的1/4大小。
  • 二、IDR帧与I帧的区别与联系
    • 1、IDR(Instantaneous Decoder Refresh)解码器立即刷新帧
    • 2、每当遇到IDR帧时, 解码器就会清空解码器参考buffer中内容
    • 3、每个GOP中的第一帧就是IDR帧
    • 4、IDR帧是一种特殊的I帧
  • 三、SPS与PPS
    • 1、SPS(Sequence Parameter Set)
    • 2、PPS(Picture Parameter Set)
  • 四、H264压缩技术
    • 1、帧内压缩、 解决的是空域数据冗余问题
    • 2、帧间压缩、 解决的是时域数据冗余问题
    • 3、整数离散余弦变换(DCT)、 将空间上的相关性变为频域上无关的数据然后进行量化。
    • 4、CABAC压缩
  • 五、宏块
    • 1、宏块是视频压缩操作的基本单元
    • 2、无论是帧内压缩还是帧间压缩、他们都以宏块为单位
  • 六、帧内压缩的理论
    • 1、相临橡素差别不大,所以可以进行宏块预测
    • 2、人们对亮度的敏感度超过色度
    • 3、YUV很容易将亮度与色度分开
  • 七、帧间压缩原理
    • 1、GOP
    • 2、参考帧
    • 3、运动估计(宏块匹配 + 运动矢量)
    • 4、运动补偿(解码)
    • 5、宏块查找算法(运动估计)
      • ①、 三步搜索
      • ②、二维对数搜索
      • ③、四步搜索
      • ④、钻石搜索
    • 帧间压缩的帧类型
      • P帧
      • B帧
  • 八、无损压缩
    • 1、 DCT变换
    • 2、 VLC压缩(MPEG2压缩)
    • 3、 CABAC压缩 (H264)

音视频基础学习实验地址:https://github.com/chensongpoixs/caudio_video

H264压缩比

条件: 1. YUV格式为YUV420
2. 分辨率为640X480
3. 帧率为15

公式

640*480*1.5 * 15 * 8

建议码流:500Kpbs

结果:约 1/100

一、 编码帧的分类

1、I帧(intraframe frame), 关键帧,采用帧内压缩技术。IDR帧属于I帧。

2、P帧(forward Predicted frame),向前参考帧。压缩时,只参考前面已经处理的帧,采用帧间压缩技术。它占I帧的一半的大小

3、B帧(Bidirectionally predicted frame),双向参考帧。压缩时,即参考前面已经处理的帧,也参考后面的帧,帧间压缩技术。它占I帧的1/4大小。

二、IDR帧与I帧的区别与联系

I_GOP

1、IDR(Instantaneous Decoder Refresh)解码器立即刷新帧

2、每当遇到IDR帧时, 解码器就会清空解码器参考buffer中内容

3、每个GOP中的第一帧就是IDR帧

4、IDR帧是一种特殊的I帧

三、SPS与PPS

1、SPS(Sequence Parameter Set)

序列参数集,作用与一串连续的视频图像。如seq_parameter_set_id、帧数及POC(picture order count)的约束、参考帧数目、解码图像尺寸和帧场编码模式选择标识等。

2、PPS(Picture Parameter Set)

图像参数集,作用于视频序列中的图像。如pic_parameter_set_id、熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等

四、H264压缩技术

1、帧内压缩、 解决的是空域数据冗余问题

2、帧间压缩、 解决的是时域数据冗余问题

3、整数离散余弦变换(DCT)、 将空间上的相关性变为频域上无关的数据然后进行量化。

4、CABAC压缩

五、宏块

1、宏块是视频压缩操作的基本单元

2、无论是帧内压缩还是帧间压缩、他们都以宏块为单位

六、帧内压缩的理论

1、相临橡素差别不大,所以可以进行宏块预测

2、人们对亮度的敏感度超过色度

3、YUV很容易将亮度与色度分开

帧内预测:

H264提供9种模式帧内压缩

h264_chiled
h264_x16_x8

h264_frame

h264_frame_picture
h264_en_picture_mode

七、帧间压缩原理

1、GOP

2、参考帧

3、运动估计(宏块匹配 + 运动矢量)

4、运动补偿(解码)

5、宏块查找算法(运动估计)

①、 三步搜索

②、二维对数搜索

③、四步搜索

④、钻石搜索

帧间压缩的帧类型

P帧

B帧

视频花屏原因

如果GOP分组中有帧丢失,会造成解码端的图像发生错误、这会出现马赛克(花屏)

视频卡顿原因

为了避免花屏问题的发生,当发现有帧丢失时、就丢弃GOP内的所有帧、直到下一个IDR帧重新刷新图像。

I帧是按照周期来的,需要一个比较长的时间周期,如果在下一个I帧来之前不显示后来的图像、那么视频就静止不动了,这就是出现了所谓的卡顿现象。

GPU解码问题

八、无损压缩

1、 DCT变换

2、 VLC压缩(MPEG2压缩)

3、 CABAC压缩 (H264)

H264查考资料:

https://en.wikipedia.org/wiki/Advanced_Video_Coding

H264视频GOP组和视频压缩技术之有损压缩(帧间压缩、帧内压缩)、无损压缩(ACBAC压缩)相关推荐

  1. H264编码 GOP组 以及 I帧 B帧 P帧 说明

    H264 GOP I帧 B帧 P帧 说明 H264 未压缩的码流: Byte 字节单位的码流 = 640x480x1.5x15 = 691200 所有在网上传输的数据都是按照比特位计算的 所以要用 b ...

  2. 从HEVC到通用视频编码的下一代视频压缩技术

    本文来自于ATEME研究总监兼总监米克尔·劳莱特的主题演讲.他主要分享了MPEG-2.H.264.H.265.H.265.VVC,以及EVC.LCEVC等较新的编解码器.我们需要了解HEVC方面的编解 ...

  3. Brightcove发布新视频压缩技术测试版

    网络视频技术提供商Brightcove发布情境感知编码测试版,这是一种旨在降低总拥有成本和提高视频质量的新视频压缩技术 该解决方案结合机器学习和深视频分析,并宣称使用最少比特为每个视频达到最佳质量. ...

  4. Intel Media SDK H264 encoder GOP setting

    1 I帧,P帧,B帧,IDR帧,NAL单元 I frame:帧内编码帧,又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随 ...

  5. H264视频压缩算法

    H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的.随着 x264/openh264以及ffmpeg等开源库的推出, 大多数使用者无需再对H264的细节做过多的研究,这大降低了人们使 ...

  6. H264视频码流结构分析

    目录 前言 H264码流结构 H264帧结构 H264档次介绍 RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> <YUV编码为H264视频流代码实现>链接: h ...

  7. 网易视频云分享:流媒体技术介绍(上篇)

    网易视频云分享:流媒体技术介绍(上篇) 网易视频云2016-04-14 11:49:49 创业 媒体 技术 阅读(949)评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代 ...

  8. H264 视频文件 帧格式 传输封装等 杂碎

    H264 视频文件 帧格式 传输封装等 杂碎 rfc3984 Standards Track [Page 2] RFC 3984 RTP Payload Format for H.264 Video ...

  9. 主要视频压缩技术在中国内地市场发展分析

    1 主要视频压缩技术在中国内地市场发展分析 --------孟冰 晶门科技 一,视频压缩技术背景及主要压缩技术发展 视频处理技术是伴随着视频从模拟到数字化转变的过程中得到蓬勃发展的. 随着人们对视频图 ...

最新文章

  1. Android--Retrofit的简单使用(一)
  2. 史上最全软件测试自学完整路线,走过路过千万不要错过
  3. Matlab 图像处理相关函数命令大全
  4. demo解析 小程序node.js_小程序-demo:小程序示例
  5. matlab 2016b更改工作路径
  6. GridView中实现单选RadioButton
  7. Android项目中Bluetooth类如何写
  8. C++虚成员函数表vtable
  9. C语言编写2048小游戏
  10. Flink SQL 在网易云音乐的产品化实践
  11. Java整数缓存-为什么Integer.valueOf(127)== Integer.valueOf(127)为True
  12. ASP.NET生成静态页面方法大全(3)
  13. ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we cannot accurately
  14. Android tombstone文件是如何生成的
  15. java基础之java输入输出语句
  16. ubuntu 安裝deb_Ubuntu离线安装deb包和依赖
  17. ios适配iPhone和iPad
  18. glib使用之哈希表
  19. android怎么实现广告页,Android开屏广告的实现原理与适配方案
  20. 【简单算法】计算几月几日是一年的第几天

热门文章

  1. 以数字孪生为基础,构建机房智慧化管理新环境
  2. 谷歌浏览器快速安装Axure扩展插件
  3. 解读 ChatGPT 背后的技术重点:RLHF、IFT、CoT、红蓝对抗
  4. using-fastcgi-to-host-php-applications-on-iis7
  5. Unity打包iOSFailed to resolve base type System.ServiceModel.Configuration.BehaviorExtensionElement for
  6. 甜度犹如蜂蜜的蜂糖李,究竟有何不同之处?礼誉带你一探究竟
  7. 数据交换实践:创建业务系统间高速公路
  8. 常用网站的pop和stmp服务器地址
  9. 价值几百元的仿小刀娱乐网经典Emlog模板
  10. PKIX path 异常 - 可以使用 Keytools 将服务端的秘钥库导入本地