首页 > 其他分享 >音视频里面的I帧、B帧和P帧

音视频里面的I帧、B帧和P帧

时间:2024-05-15 09:33:01浏览次数:22  
标签:视频 里面 编码 压缩 frame 音视频 解码

在音视频编码中,I帧、B帧和P帧是用于表示和处理视频帧的三种基本类型。以下是它们的详细解释:

  1. I帧(I-frame):
  • 又称内部画面(intra picture)或关键帧(key frame)。
  • I帧是一个全帧压缩的编码帧,它包含了一幅完整的图像数据。解码时,仅使用I帧的数据就可以重构完整的图像,无需参考其他帧。
  • 在MPEG编码过程中,部分视频帧序列会被压缩成I帧。由于I帧法是帧内压缩法,也称为“关键帧”压缩法,它基于离散余弦变换(DCT)的压缩技术,与JPEG压缩算法类似。采用I帧压缩可以达到较高的压缩比而无明显的压缩痕迹。
  • 在网络状况不佳的情况下,如果丢失了I帧,则后面的P帧和B帧可能无法正确解码,导致视频画面出现问题,如黑屏、花屏等。

 

  1. P帧(P-frame):
  • 又称前向预测编码帧(predictive-frame)。
  • P帧不是完整的数据帧,而是只包含与前面I帧或P帧的差异数据。解码时,需要参考前面的I帧或P帧才能重构完整的图像。
  • P帧利用了视频帧在时间维度上的冗余信息,通过去除这些冗余信息来减少传输的数据量。

 

  1. B帧(B-frame):
  • 又称双向预测内插编码帧(bi-directional interpolated prediction frame)。
  • B帧也是一个压缩帧,它同时参考前面的I帧或P帧和后面的P帧来进行编码。因此,在解码B帧时,需要同时获得前面的缓存视频和后面的缓存视频。
  • B帧的压缩率通常比I帧和P帧更高,但也需要更多的计算资源来解码。

在视频编码中,I帧、P帧和B帧的组合使用可以实现高效的视频压缩和传输。同时,由于它们各自的特点,也可以在网络传输和视频处理过程中进行灵活的控制和优化。

标签:视频,里面,编码,压缩,frame,音视频,解码
From: https://www.cnblogs.com/music-liang/p/18192738

相关文章

  • 设置WSL2,让局域网的其他电脑访问WSL2里面的内容
    要让局域网的其他设备访问WSL2内的内容,您需要进行以下步骤:确保WSL2正在运行。找出WSL2的IP地址。确保Windows防火墙允许访问WSL2的端口。在WSL2上设置端口转发或者将服务绑定到localhost。以下是具体步骤的示例:打开PowerShell并运行以下命令以查找WSL2......
  • 如何快速提取出一个文件里面全部指定类型的文件的全部路径
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z打开工具,切换到第五个模块,文件批量复制模块(快捷键:Ctrl+5)点击右边的“搜索添加”按钮,我这里就从我的PS文件夹里面找出全部的jpg图片叭,勾选两项,搜文件,并且搜全部子文件,然后点开始搜索按钮搜索完之后关闭窗口,就......
  • 在PLC的扫描特性下,FOR循环里面套IF或者定时器会发生什么?
    1.为什么会提出这个题目在PLC指令的执行过程中,FOR循环会在每个扫描周期执行完一个循环,然后程序才会接着往下扫描在PLC指令的执行过程中,IF判断会在每次扫描中判断一次条件,满足则进入执行体,不满足则跳出IF把IF放在FOR循环里面,会导致循环体执行时间过长,或者其他问题吗?(答案是不会......
  • 音视频播放异常现象总结
    播放卡顿或者卡住:1流媒体不发流给客户端,客户端停在当前画面不动也不销毁,也不重拉流;2弱网环境,tcp乱序,且发包间隔时间比较大,播放器收一包耗时较多,导致解码异常卡主;3流媒体(发流端)数据插入一些增强帧,其他的P帧等(一般是某些公司的定制)导致播放器得到的数据不是一个连续的GOP;解码......
  • FFMpegCore 对音视频格式转换
    下载Nuget包FFMpegCore FFMpeg的官网下载转码程序点击Dowload 选择对应系统的下载源本次为Windows系统 选择Full标记的压缩包 解压后的文件结构ffmpeg版本 将bin文件夹下的ffmpeg.exe文件放置在程序项目的根目录下  视频格式转换以下是将.mov转.mp4///......
  • react里面bind与箭头函数
    bind由于在类中,采用的是严格模式,所以事件回调的时候,会丢失this指向,指向undefined,需要使用bind来给函数绑定上当前实例的this指向;箭头函数的this指向上下文,所以永久能拿到当前组件实例,this指向,我们可以完美的使用箭头函数来替代传统事件处理函数的回调箭头函数class......
  • js - try catch 应该在 for 循环里面还是外面?
    js-trycatch应该在for循环里面还是外面?使用场景因为本身trycatch放在for循环外面和里面,如果出现异常,产生的效果是不一样的。trycatch在for循环外面publicstaticvoidtryOutside(){try{for(intcount=1;count<=5;count++){......
  • 每台服务器都有错包增长,线路问题?交换机问题? 机房里面有鬼?
    服务器网卡RX方向errors包一直在增长,换模块换尾纤都不好使,眼看业务上线要延期客户精神要崩溃,运维心想要遭罪一、问题现象服务器侧的运维人员在服务器上使用ifconfig命令发现每台服务网卡上都有错包,且一直在不停增长通过图片可以看到网卡RX方向有大量的errors包,服务器......
  • Qt/C++音视频开发72-倍速推流/音视频同步倍速推流/不改变帧率和采样率/低倍速和高倍速
    一、前言最近多了个新需求,需要倍速推流,推流界的扛把子obs也有倍速推流功能,最高支持到两倍速。这里所说的倍速,当然只限定在文件,只有文件才可能有倍速功能,因为也只有文件才能倍速解码播放。实时视频流是不可能倍速的,因为没有时长,有时长的才可以按照播放进度来。是否是文件也不能通......
  • FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
    ​同步播放音视频的时候,《FFmpeg开发实战:从零基础到短视频上线》一书第10章的示例程序playsync.c采取一边遍历一边播放的方式,在源文件的音频流和视频流交错读取的情况下,该方式可以很好地实现同步播放功能。但个别格式的音频流和视频流是分开存储的,前面一大段放了所有的音频帧,后......