当前位置: 首页 > news >正文

【音视频】闭合GOP和开放GOP

参考资料:https://cloud.tencent.com/developer/article/1919128

一、GOP 的概念

  • 在视频编码中,GOP(Group of Pictures,图像组) 是由连续的视频帧组成的序列,包含 I 帧(关键帧)、P 帧(前向预测帧)和 B 帧(双向预测帧)等不同类型的帧,用于平衡压缩效率和解码灵活性。

  • 闭合 GOP 和开放 GOP 是两种不同的 GOP 结构,核心区别在于帧之间的参考关系是否局限于当前 GOP 内部。

  • P帧和B帧参考其他帧进行时域预测。用作预测的帧既可以是I帧和P帧,也可以是被参考的B帧。H.264/AVC允许将这三种类型的帧组合起来形成多个预测帧。

  • 问题来了——分析显示顺序(Display Order)时,预测/参考帧的位置在哪里?换言之,P帧和B帧可以参考几个GOP之前的帧吗?这样做也许会呈现最好的效果,为什么不这样做呢?

为了回答这些问题,我们需要先理解闭合GOP和开放GOP的概念

二、闭合GOP

2.1 闭合GOP 的概念

闭合 GOP 的核心特点是:当前 GOP 内的所有帧(P 帧、B 帧)仅参考本 GOP 内的帧,不依赖前一个 GOP 的任何帧

  • 如下图所示,第一个GOP以P帧而不是B帧结束,这就意味着编码器不会将下一个GOP中的帧用作参考帧

在这里插入图片描述

  • 如果最后一帧是B帧的话,由于 B 帧需要参考 “后面的帧”,但当前 GOP 的 “后面” 是下一个 GOP 的帧(如 I 帧或 P 帧)。此时,该 B 帧的参考链会延伸到其他 GOP,导致当前 GOP 必须依赖下一个 GOP 才能解码,违背了 “闭合 GOP 内帧仅参考本 GOP” 的定义,使其退化为类似开放 GOP(Open GOP)的结构。

  • 闭合GOP在视频流化和压缩中非常有用,它是视频中的独立片段,和其他GOP有清晰的隔断,所有在闭合GOP出现的问题都不会影响到其他GOP。

  • 闭合GOP以一个被称为IDR(Instantaneous Decoder Refresh,即时解码刷新)的I帧开始。 之所以称之为IDR,是因为当解码器遇到 IDR 帧时,由于在 IDR 之前出现的任何帧都不能用作在该 IDR 之后出现的图片的参考帧,它可以刷新其解码图片缓冲区(Decoded Picture Buffer 或 DPB)。这就形成了图片序列的彻底中断。

2.2 闭合GOP的作用

  • ABR视频流: 在ABR视频流中,播放器可以根据带宽和解码器缓冲器的填充程度在不同配置文件(组合不同码率和分辨率的视频)之间切换。如果播放器要从1080p切换到360p,那么它就需要这种利落的切换。此时IDR发挥作用,这样播放器就能刷新缓冲,让360p的视频流进入。

    • 具体来说
      1. 当播放器决定切换到 360p 流时,会等待 360p 流中最近的一个 IDR 帧(因为 IDR 帧是独立解码的,不需要参考任何其他帧);
      2. 从这个 IDR 帧开始解码 360p 流,由于 IDR 帧之后的所有帧(属于闭合 GOP)只参考本 GOP 内的帧(不涉及之前的 1080p 流),因此不需要依赖旧流的任何数据;
      3. 此时播放器可以 “刷新缓冲”—— 清空旧的 1080p 流数据,只加载和缓存 360p 流从 IDR 帧开始的新数据,确保新流能独立、正确解码
  • 错误恢复:如果你在流化视频时使用HLS,并且每个视频片段都以IDR开始,这意味着片段中的所有帧都不能参考前、后片段中的帧。所以如果因为某个错误而失去其中一个片段,播放器仍然能继续接收下一个视频片段。有趣的是,Apple 的 HLS 规范提到应该每两秒使用一次 IDR。(注意:规范没有说视频片段持续时间应该是两秒,而是指 GOP 的大小是两秒)。

  • 快进快退(Trick Mode): 我们之前提到过,IDR非常有助于实现快进快退。播放器需找到距离最近的IDR,然后开始从这一点播放视频流。

三、开放GOP

3.1 开放GOP的概念

开放GOP正好和闭合GOP相反,允许其内的帧参考其他GOP内的帧。请看下图第二个I帧。来自前一个GOP的B帧被用作参考帧,这意味着这是一个开放GOP(由黄色箭头表示)。

在这里插入图片描述

3.2 开放GOP 的作用

开放GOP在以下情况中非常有用:

  • 你不需要为了ABR而重新开始一段新的视频,但是需要关闭GOP
  • 你现在想要提高视频压缩效率(因为B帧可以多一个高质量的参考帧)
  • 当你需要插入I帧时(或是为了刷新视频质量,或者在非场景转换的情况下,是否跨I帧预测并不重要)

四、总结

4.1 闭合GOP

适用场景:
  1. 点播视频(VOD)
    点播中用户经常会进行“seek操作”(拖动进度条跳转),此时需要快速定位到目标时间点并开始解码。闭合GOP的独立性确保:找到目标时间点所在的GOP后,无需依赖前面的GOP即可解码,避免画面花屏或延迟。

  2. ABR自适应码率切换
    ABR场景下,播放器会根据带宽在不同码率(如1080p/720p/360p)的视频流之间切换。切换时需要从新码率的某个GOP开始播放,闭合GOP的独立性可确保切换瞬间不依赖前一个码率的帧,实现“无缝切换”(否则若依赖前GOP,新码率的帧可能因缺少参考而解码失败)。

  3. 直播时移/回看
    直播中用户可能回退到几分钟前的内容(时移),或直接跳转至某个时间点观看(回看)。闭合GOP允许播放器直接定位到目标时间点的GOP并解码,保证时移操作的流畅性。

  4. 视频编辑/剪辑
    视频编辑时,若需要截取一段视频(如从第10秒到第20秒),闭合GOP的独立性可确保截取的片段能单独解码,无需携带前序GOP的帧,简化编辑流程。

  5. 低延迟交互场景
    如在线教育的“暂停/继续”、远程会议的“回放片段”等,需要快速响应操作并从指定点播放,闭合GOP的独立解码能力可降低延迟。

4.2 开放GOP

适用场景:
  1. 存储型视频(如本地文件、蓝光光盘)
    这类场景中,视频通常按顺序播放,用户很少进行跳转(或跳转可接受轻微延迟),更关注存储容量。开放GOP的高压缩率可减少文件体积,节省存储成本(例如一部2小时的电影,开放GOP可能比闭合GOP小5%-10%)。

  2. 非实时视频分发(如预录视频的CDN分发)
    若视频内容以“完整下载后播放”为主(而非边下边播),用户几乎不进行seek操作,开放GOP的高压缩率可降低传输带宽成本,同时不影响播放体验(因为完整下载后可按顺序解码,依赖关系可被提前处理)。

  3. 带宽受限的直播(无交互需求)
    某些对带宽极度敏感的直播场景(如偏远地区的低带宽直播),若用户仅“实时观看”而不进行时移/跳转,开放GOP可在有限带宽下提升画质(或降低卡顿率),牺牲的“随机访问能力”对体验影响较小。

  4. 长视频连续播放(如电影、纪录片)
    这类内容用户通常按顺序观看,很少拖动进度条,开放GOP的压缩效率优势更明显,且跨GOP参考不会影响连续播放的流畅性(解码时按顺序加载即可处理依赖)。

更多资料:https://github.com/0voice

http://www.dtcms.com/a/342910.html

相关文章:

  • 旅游小程序开发指南
  • 第三阶段数据库-5:数据库的主键,索引,约束,表间关系的图形化操作
  • 8.Shell脚本修炼手册---sed工具的基本使用
  • HarmonyOS 实战:6 种实现实时数据更新的方案全解析(含完整 Demo)
  • JavaScript中的深浅拷贝
  • Llama-Factory微调 Qwen2.5-VL-3B 模型
  • 人工智能未来趋势如何?
  • 【秋招笔试】2025.08.19百度秋招机考第一套
  • 算法训练营day57 图论⑦ prim算法精讲、kruskal算法精讲
  • 前端无感刷新 Token 的 Axios 封装方案
  • Github 下载加速--2025-08-21 亲测好用
  • 神经网络(Neural Network, NN)
  • gemini cli 用命令行玩转 AI 多模态开发
  • 网络安全大模型测试指标体系设计思路
  • 我与 ChatGPT 5:一段时间的深度编程体验与全栈评测
  • Zabbix状态图标灯显示
  • K8s部署dashboard平台和基本使用
  • MySQL:MVCC机制及其在Java秋招中的高频考点
  • AutoTrack-IR-DR200平台的构建与实现过程
  • python采集义乌购(yiwugo)商品详情API接口,json数据返回
  • 透射TEM 新手入门:快速掌握核心技能
  • 【每日一道算法题 day5】盛最多水的容器 (Container With Most Water) - LeetCode 题解
  • 深度学习之NLP基础
  • 【React】tab切换功能和排序实现,classnames工具优化类名控制
  • Java基础环境jdk和maven安装及配置+开源项目下载及编译打包教程
  • Flutter如何通过GlobalKey调用组件内的方法
  • 微服务的编程测评系统13-我的竞赛列表-elasticSearch
  • 与H5交互,与flutter的交互
  • 求解三位数
  • 深度解析DeepSeek V3.1 :6850 亿参数开源模型如何以 71.6% 编码得分、68 倍成本优势重构全球 AI 竞争格局