AI视觉领域流媒体知识入门介绍(二):深入理解GOP

GOP(group of pictures)

在流行的视频编码算法中,都包含GOP这个概念,例如MPEG-2, H.264, and H.265。

背景

关于视频存储和传输的"size":

|---------------------------|---------------------------------------|
| Resolution 分辨率 | Uncompressed Bitrate 未压缩时的比特率 |
| 1280×720 (720p) | ~ 1.5 Gbps |
| 1920×1080 (1080p) | ~ 3 Gbps |
| 3180 x 2160 (2160p or 4K) | ~ 12 Gbps |

试想,要传输一个4k的视频,比特率高达12Gbps,而我们普通家用的带宽也就几百Mbps,根本无法传输,即使传过来了,播放效果基本就是PPT。。。

视频压缩

既然原始视频码率太高无法传输,那自然想到可以先进行数据压缩,减小体积后再传输。

通常是压缩到1-20 Mbps这个范围。

视频压缩的基本原理

在一系列图像中找到并消除冗余。

例如新闻广播,每一帧视频通常与之前和之后的视频非常相似。新闻广播员说话时嘴唇可能会移动,信息可能会沿着屏幕底部滚动,但图像的很大一部分在每一帧之间要么相同,要么非常相似。

那这些重复的/非常相似的像素,完全没必要传输,这样就能起到压缩视频的效果了。

时间压缩

根据上述规律,可以先发送一个包含全部信息的关键帧,后续的帧就只发送与之前的关键帧不一样的地方。接收方收到数据后,通过已经接收到的关键帧+差别数据,就可以"恢复"出原帧。(当然这里的恢复不是100%还原,而是有损的)

这种利用帧的时间先后顺序的方法,属于时间压缩类算法。

空间压缩

思路一脉相承,只不过这次是在同一张图片内部找到并消除重复数据。

例如大部分国家的国旗图片,上面都是大面积的相同颜色,完全可以消除重复。

JPEG格式的图片也是用的类似的方法。

再谈GOP

GOP就是两个关键帧之间的距离。

为什么需要多个关键帧,而不是只发送视频的第一个关键帧即可?

  1. 用户是随机开始播放的,并一定是从头开始

  2. 若场景变化很大,和最开始的关键帧相比,几乎没什么冗余的部分,此时压缩已经没有意义了

  3. 中间再次发送新的关键帧,也能纠正传输错误、误差等,增强了可控制性

关键帧的另一个名字: Intra-coded frame(帧内编码帧,简称I帧)

这种帧在解码时,不依赖其他帧,因此称为"帧内"。

预测帧:Predicted frame,简称P帧

P帧携带的是与前一帧相比,差异的地方。

它既利用了时间压缩,也使用了图片内部的空间压缩。

为什么叫预测帧?预测了与前一帧的变化(具体要深入实际的编码算法)

双向预测帧:Bi-directional Predicted frame,简称B帧

B帧的压缩效果更好,因为它仅携带和前+后两帧之间的差异部分。

如何找到与未来帧之间的差异呢?

很简单,编码器先缓存一部分帧,这样就知道未来帧是啥了

最后总结一下

GOP表示每多少帧发送一个I帧

I帧可以直接被解码,不依赖外部

P帧解码需要依赖前一个P帧or I帧

B帧解码通常依赖前和后一个I帧 or P帧

下图中的两个B帧,按FIFO解码

注意:帧的显示顺序,和帧实际被解码的顺序是不一样的。

相关阅读:

AI视觉领域流媒体知识入门介绍(一)-CSDN博客

相关推荐
金智维科技官方13 分钟前
RPA财务机器人为企业高质量发展注入动能
人工智能·机器人·rpa·财务
沫儿笙17 分钟前
安川机器人tag焊接怎么节省保护气
人工智能·物联网·机器人
2501_9411474221 分钟前
人工智能赋能智慧教育互联网应用:智能学习与教育管理优化实践探索》
人工智能
阿龙AI日记40 分钟前
详解Transformer04:Decoder的结构
人工智能·深度学习·自然语言处理
爱写代码的小朋友40 分钟前
“数字镜像”与认知负能者:生成式AI个性化学习支持者的协同构建与伦理规制研究
人工智能
找方案1 小时前
新型智慧城市城市大数据应用解决方案
人工智能·智慧城市
K***72841 小时前
开源模型应用落地-工具使用篇-Spring AI-Function Call(八)
人工智能·spring·开源
Chat_zhanggong3452 小时前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法
霍格沃兹软件测试开发2 小时前
Playwright MCP浏览器自动化指南:让AI精准理解你的命令
运维·人工智能·自动化
强化学习与机器人控制仿真2 小时前
RSL-RL:开源人形机器人强化学习控制研究库
开发语言·人工智能·stm32·神经网络·机器人·强化学习·模仿学习