首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

音视频基础知识(4):I、P、BGOP

一、H264类型定义: 在H264的编码中,通常以三种不同类型的来表示传输的画面,分别是I、P、B。...P:P指的是前向参考,它需要参考前一的图片才能够正确把数据解码出来。 B:B指的是双向参考,它需要参考前一数据和后一数据才能够正常把数据解码出来。...B:B也称之为双向参考,B的特点是以前面的(I或者P)或者后面的(也是I、P)作为参考找出B的预测值,并且取预测差值和预测矢量进行传送。...接下来我们再来看一下上图中的GOP含义: GOP指的是两个I之间的距离,在一个GOP包含了一组连续的图片。如图所示,在一个GOP中包含了I、P、B,直到下一个I的出现,一个GOP才算结束。...通常来说,I所占用的字节和体积大于P、而P所占用的字节大于B。所以在码率不变的情况下,可以调整GOP的长度去改善画质,GOP的长度越长,所得到的P和B更多,画面的质量和细节就会更好。

6.9K32

什么是闭合GOP和开放GOP?

这些基本的类型有: I(仅内预测) P(仅参考前一预测) B(可参考前、后预测,即双向预测) 好,现在有了这些最基本的类型,我们就可以构建GOP了: 一个GOP通常以I开头,紧接着是P...和B序列 两个连续I之间的距离被称为GOP长度 连续P之间的距离被称为mini-GOP大小 P和B参考其他进行时域预测。...为了回答这些问题,我们需要先理解闭合GOP和开放GOP的概念。让我们继续吧! 什么是闭合GOP? 顾名思义,闭合GOP是指不对外开放的GOP。一个属于闭合GOP只能参考本GOP之内的。...在上面的图片中,第一个GOP以P而不是B结束,这就意味着编码器不会将下一个GOP中的用作参考。多补充一点,如果GOP的最后一是B,你认为会发生什么?...现在你已经理解闭合GOP了吧,让我们继续学习开放GOP。 什么是开放GOP? 开放GOP正好和闭合GOP相反,允许其内的参考其他GOP内的。请看下图第二个I

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

什么是open-GOP,close-GOP

什么是open-GOP,close-GOP H.264主要有五种编码: I(IDR)、i(非IDR I)、P(P)、B(参考B)、b(非参考B)。...有些解码器没有区分这两种I,将所有的i都缺省的认为是IDR,这样会造成解码错误。这两种i在open-GOP的结构中需要明确区分,而在close-GOP中可以视为相同。...一个GOP里面的某一在解码时要依赖于前一个GOP的某些,这个GOP就称为open-GOP。...两者区别在于I6前面的第5设置为B还是P,如果一个GOP的最后一(上例中是第5设置为B,这个码流就是open-GOP,设置为P就是close-GOP。...由于B压缩性能好于P,因此open-GOP在编码性能上稍微优于close-GOP,但为了兼容性和少一些麻烦,还是把opne-GOP关闭的好。

84010

WebRTC源码阅读——视频参考info设置

视频参考info设置 1.概括 视频在编码的时候是有参考概念存在的,对于I可独立解码,不需要参考,但对于P或B(webrtc iOS端采用h264硬编码时,并没有设置B)在解码时必须保证其所参考的可以被解码...故在组结束以后,还需要对视频的参考信息进行设置,否则在取送入到解码器之前无法判断其是否可以被解码。..._存储最近的gop表,last_seq_num_gop_是一个map,其key值为关键的结束packet包的序列号,value值是一个pair,其第一个值为key关键所在gop内的最后一个完整的结束...>last_seq_num(), frame->last_seq_num())));` //若当前last_seq_num_gop_为空,说明没有关键,那么这个frame也是无法正确设置参考信息的,...= last_picture_id_with_padding_gop) return kStash; } //设置frame的参考信息 frame->id.picture_id = frame-

1.6K31

【Unity3D】Unity 游戏画面更新 ( 游戏相关概念 | MonoBehaviour#Update() 更新方法 | 更新时间统计 | 设置游戏更新帧率 )

文章目录 一、 游戏相关概念 二、 MonoBehaviour#Update() 更新方法 三、 更新时间统计 四、 设置游戏更新帧率 一、 游戏相关概念 ---- 游戏画面由 连续的 Frame...Update() 方法 就是 更新 的方法 , 每次 更新 画面 时 , 都会 调用该方法 , 也就是一秒钟调用几十次到一百多次 ; 在 Unity 游戏中 , 如果要 更新 游戏物体 GameObject...大部分在个位数毫秒值间隔 ; 这个与操作系统时间片分配有关 , 没有办法精准控制 ; 四、 设置游戏更新帧率 ---- 在 Unity 中 无法精准的控制 游戏画面 的帧率 , 但是可以使用 Application.targetFrameRate...= 5; 代码 , 为游戏画面更新 , 设置一个帧率 5 fps , Unity 会尽量按照该帧率进行更新 , 但是不保证严格按照该帧率进行更新 , 该设置只是给一个建议值或者近似值 , 不是精确值...update void Start() { // 打印日志 Debug.Log("Unity 脚本入口 , 启动加载时调用"); // 设置游戏更新帧率

99920

H264编码之GOP含义

H264编码之GOP含义 GOP说白了就是两个I之间的间隔.比较说GOP为120,如果是720p60的话,那就是2s一次I.        ...它既需要之前的图 像(I或P),也需要后来的图像(P),采用运动预测的方式进行间双向预测编码   在视频编码序列中,GOP即Group of picture(图像组),指两个I之间的距离,...需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I,此时实际的GOP值被缩短了。...另一方面,在一个GOP中,P、B是由I预测得到的,当I的图像质量比较差时,会影响到一个GOP中后续P、B的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。   ...另外,过长的GOP还会影响Seek操作的响应速度,由于P、B是由前面的I或P预测得到的,所以Seek操作需要直接定位,解码某一个P或B时,需要先解码得到本GOP内的I及之前的N个预测才可以,GOP

3.8K20

视频编码的三种:I,B,P

在视频压缩编码中,所有的被分成了三个种类,I,B和P,其实就是Intra-Prediction,Bi-prediction和Prediction。...顾名思义,就是内预测,双向预测以及(单向)预测。...(inter prediction),内预测的话就是在找参照块的时候,只在当前内寻找;而间预测的话,找参照块的时候会在相邻的之间去找相似块。...因此,基于上述所说, 如果说当前是只在当前内寻找参照块的话,那么该就是I 如果在已经编码的里面寻找参照块的话,那么它是P 如果既在已编码的里去寻找参照块,又在未来将要被编码的里去寻找参照块的话...,那么该就是B

2.2K20

视频中的 I ,P ,B

编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) 如下图, 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。...GOP (Group of Pictures) 是一组连续的画面,由一个 I 和数个 B / P 组成,是视频图像编码器和解码器存取的基本单位,它的排列顺序将会一直重复到影像结束。...由于压缩处理的方式不同,视频中的画面就分为了不同的类别,其中包括:I 、P 、B 。I 是内部编码(也称为关键),P 是前向预测(前向参考),B 是双向内插(双向参考)。...简单地讲,I 是一个完整的画面,而 P 和 B 记录的是相对于 I 的变化。如果没有 I ,P 和 B 就无法解码。...比如上图的 GOP,他的采集顺序是 IBBBP,那显示顺序 PTS 也是 I B B B P PTS:     12345 编码器的编码顺序是: I P B B B DTS:     12345 PTS

3.1K20

IBC 2023 | VVC在自适应流式处理工作流程中支持OPENGOP编码

对于广播,intra-period通常设置为1秒,以最大限度地减少调谐和频道切换延迟。...这种时间参考结构的中断被称为闭合GOP。在随机访问的情况下,来自GOP#2的最后I和所有先前B可以独立于来自GOP#1的先前而被解码和显示。...实验结果 为了评估较长编码段的影响,我们设置了一些不同长度的编码。在实验中,每个输出片段的大小为4秒96(对于帧率为24的情况)。...GOP大小(即RASL图片的数量)被设置为16,并且intra-period在16到128的范围内。...使用这些编码设置,视频序列首先以不同的分辨率(2K、4K、5K、6K、8K)和比特率进行编码(见表4),并打包成每个5秒的HLS段。

16310

《FFmpeg从入门到精通》读书笔记(三)

另一方面,在一个GOP中,P、B是由I预测得到的,当I的图像质量比较差时,会影响到一个GOP中后续P、B的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。...另外,过长的GOP还会影响Seek操作的响应速度,由于P、B是由前面的I或P预测得到的,所以Seek操作需要直接定位,解码某一个P或B时,需要先解码得到本GOP内的I及之前的N个预测才可以,GOP...将scenecut设为0,相当于设定 no-scenecut 在FFmpeg中,通过命令行的-g参数设置以帧数间隔为GOP的长度,但是当遇到场景切换时,例如从一个画面跳到另一个画面,会强行插入一个关键...这样可以控制关键,进行视频切片时会更加方便 5.x264opts String 设置x264专有参数 可以通过该参数设置x264的内部私有参数,如设置I、P、B的顺序及规律等 例如:设置视频无...6 设置H.264的编码HRD信号形式为CBR 7 设置每50一个GOP 8 设置场景切换不强行插入关键 7.crf 用于控制视频画质,取值为[0-51],数值越低画质越好 0:无损 51

1K20

面试官常问的音视频技术点!

一般我们有两种方式解决: 推流端缩短GOP长度:在推流端设置GOPSIZE,一般来说GOP的长度会影响播放端的黑屏时间。...GOP长度越长,找到I的时间就会变长,若解码端长时间没找到I,播放器就会处于长时间黑屏。若出现黑屏的时间过长,则可以考虑缩短GOPSIZE的长度。...比方说,黑屏的GOPSIZE长度是60,则可以缩短GOPSIZE为5,此时解码端则会快速找到I,播放器基本上会秒开。 设置服务端GOP缓存:这个方法跟第一个方法有点相似,也是设置GOP的属性。...但这个方法是在服务端设置GOP属性,在服务端可以通过设置GOP-Cache缓存让播放器总是缓存着前一个I,这样的话播放器每次刷新都可以快速播放视频。...我的回答是通过FFMPEG的抽api av_read_frame把每一个码流中的每一H264/H265码流获取到,并且通过内部的标识符00 00 00 01进行分割,最终分割成sps+pps+i作为一完整的视频

65830

音视频生产关键指标:视频编辑优化丨音视频工业实战

1.2、精准抽与非精准抽 由于编码采用的参数不同,不同视频的关键帧数量和关键间隔差别很大,目前很多短视频产品为了提高压缩率,转码时设置的关键帧数量都比较少。...如果待解码的中有两或多在一个 GOP 内,则这两或多在一次 GOP 顺序解码中完成,不要重复多次从头开始解码该 GOP。这样可以提升抽的速度。...非精准抽:抽取并返回给定数量的图像,但是可以不设置的时间点,或者允许抽取的时间点和给定的时间点存在一定的误差。-仅解码关键,并可重复使用。...比如,现在需要抽取 10 幅缩略图,但视频中仅 2 个 I ,则返回的前 5 幅为第 1 个 I ,后 5 幅为第 2 个 I 设置非精准误差范围。...如果目标跟当前不在一个 GOP,则直接跳到目标所在的 GOP 的 IDR 开始解码。

90631

音频、视频及其同步

今天介绍下音频、视频的主要参数和分析方法,以及音视频的同步等,主要内容如下: 音频 视频 PTS与DTS 音视频同步 音频 音频的概念没有视频那么清晰,几乎所有视频编码格式都可以简单的认为一就是编码后的一副图像...types),主要的三种图片类型分别是 I、P 和 B,其特征如下: I 内编码,通常是每个 GOP(下文介绍) 的第一,可压缩性最低,无需其他视频即可解码,可以说是一张完整的图片,通常,...前面提到了 GOP,它是 Group of pictures 的缩写,可译为图片组,每个 GOP 都以 I 为起始点,其他为 P 和 B ,如下图所示: ?...、P9、B10、B11、B12、I13 编解码顺序为: 1I1、P5、B2、B3、B4、P9、B6、B7、B8、I13、B10、B11、B12 其中下标数字表示在原始帧数据中 PTS,这里可以理解为 GOP...对于音频来说,DTS 和 PTS 是相同的,对于视频来说,由于 B 是双向预测,这就导致 DTS 与 PTS 不同,如果每个 GOP 没有 B ,则 DTS 和 PTS 相同,反之则 DTS 与

3.9K10

音视频编解码技术(一):MPEG-4H.264 AVC 编解码标准

GOP结构一般有两个数字,其中一个是GOP的长度(即两个I之间的B和P帧数),另一个数字为I和P之间的间隔距离(即B帧数)。...但是通过提高GOP值来提高图像质量是有限度的。H264编码器在遇到场景切换的情况时,会自动强制插入一个I,此时实际的GOP值被缩短了。...另一方面,在一个GOP中,P、B是由I预测得到的,当I的图像质量比较差时,会影响到一个GOP中后续P、B的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。...另外,过长的GOP还会影响Seek操作的响应速度,由于P、B是由前面的I或P预测得到的,所以Seek操作需要直接定位,解码某一个P或B时,需要先解码得到本GOP内的I及之前的N个预测才可以,GOP...IDR GOP中的I又分为普通I和IDR,IDR就是GOP的第一个I,这样区分视为了方便控制编码和解码的流程。 IDR一定是I,但是I不一定是IDR

1K30

Easy Tech:什么是I、P和B

下图中显示了一个GOP(group of pictures)结构,GOP是一组连续的画面,在每一个mini-GOP中,都使用了两个B和一个P,也就是IBBPBBP。 解码器端也是如此操作。...这种I通常被称为IDR(Instantaneous Decoder Refresh,即时解码刷新),并且这种不参考I之前图像的行为被称为闭合GOP(Closed GOP)。...如果关键放置太多,那么虽然快进快退体验会很棒,但这时候视频就太大了,可能导致网路缓冲等问题。 所以设计出最佳的GOP和mini-GOP结构真的是一项平衡的艺术。 在哪里使用P和B?...基于你所使用的GOP和mini-GOP结构,使用相关QP值压缩P和B(被参考或者不被参考),你就可以达到目标比特率或视频质量。...想要更深入地理解它们,你可以下载静态编译好的 FFmpeg 版本,并在 FFmpeg 中使用 GOP、no-b-frame 相关设置来查看视频的大小及其质量如何变化。

3.2K20

嵌入式音视频开发面试题:如何优化画面质量?

二、你如何进行画面增强: 我这里回答了两点,一个是GOP调节,另外一个是QP调节。 2.1、适当增加GOP的长度: GOP是画面调节的一种,在音视频开发中,可以通过调节GOP长度去改善画质的。...一般情况下,GOP的长度越长视频增强效果越长,反之GOP越小则画质增强效果越弱。所以,可以适当通过调节GOP的长度去增强画质。...五、对IDR有什么了解? IDR是I的一种,当解码器收到I和IDR的时候,都会将所有参考丢弃,在这点上I和IDR是一样的。...但有一点不同的是,IDR除了清空所有参考外,还会把所有的SPS和PPS参数进行更新。...输入模块设置完成之后,则调用rknn_run开启识别工作,并实时把输出的结果拿到(调用rknn_outputs_get获取识别出来后的结果)。 第四步,把识别出来的结果进行可视化操作。

42830
领券