首页
学习
活动
专区
圈层
工具
发布

音视频面试题集锦(第 13 期)

3、SPS 和 PPS 在 extradata 中的作用是什么? 4、I 帧和 IDR 帧有什么区别?在什么情况下 I 帧不是 IDR 帧? 1、AVPlayer 中如何实现视频片段加速预览播放?...和 PPS 在 extradata 中的作用是什么?...在 extradata 中,SPS 和 PPS 的作用是为解码器提供视频序列的配置信息,以确保解码器能够正确地解释和处理视频数据。...4、I 帧和 IDR 帧有什么区别?在什么情况下 I 帧不是 IDR 帧? I 帧:I 帧是视频序列中的关键帧,它是一个完整的图像帧,类似于 JPEG 或 BMP 图像文件。...IDR 帧:IDR 帧是一种特殊的 I 帧,它具有刷新解码器缓冲区的功能。当解码器接收到 IDR 帧时,它会清除之前的解码状态,确保从该帧开始解码,从而避免错误传播。

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

    视频解析中的基础常识(一)名词解释

    H264中第一个NALU是SPS(薛烈璀璨好数据集 Sequence Parameter Set) SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。...PPS H.264码流第二个 NALU是 PPS(图像参数集Picture Parameter Set) 通常情况下,PPS类似于SPS,在H.264的裸码流中单独保存在一个NAL Unit中,只是PPS...NAL Unit的nal_unit_type值为8;而在封装格式中,PPS通常与SPS一起,保存在视频文件的文件头中。...它们都是同一个东西而已,在编码和解码中为了方便,要首个I帧和其他I帧区别开,所以才把第一个首个I帧叫IDR,这样就方便控制编码和解码流程。...对于IDR帧来说,在IDR帧之后的所有帧都不能引用任何IDR帧之前的帧的内容,与此相反,对于普通的I-帧来说,位于其之后的B-和P-帧可以引用位于普通I-帧之前的I-帧。

    2.6K21

    FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧

    各帧的第一个NAL单元以起始码0x00000001开头,表示从这里开始是一个新帧;从第二个NAL单元开始,后继NAL单元以0x000001开头,表示其后数据是前面NAL单元的接续。...起始码往后的一个字节,代表当前帧的类型,常见的帧类型有下列六种:0x67,类型值为7,为SPS帧,表示序列参数集。0x68,类型值为8,为PPS帧,表示图像参数集。...一、SPS帧SPS的全称是Sequence Paramater Set,中文叫作序列参数集。SPS保存着视频内容的规格参数,包括视频高度、视频宽度、帧率等等。...三、IDR帧IDR的全称是Instantaneous Decoding Refresh,中文叫做立即解码刷新。IDR一定是I帧,但I帧不一定是IDR。...在每个H.264流的开头,都会出现这样的序列:SPS帧→PPS帧→IDR帧→其余SLICE,并且SPS、PPS、IDR三种帧必定是搭配出现的,缺一不可,如果少了其中任何一帧,都会导致后续视频流解码异常。

    4K10

    如何根据 NALU 裸流数据来判断其是 H.264 还是 H.265 编码?丨有问有答

    通常我们不是根据 NALU 裸流数据中的信息来选择解码器,而是根据媒体封装层的信息来确定解码器。 媒体封装层是表示媒体数据是什么封装格式的,比如 MP4、FLV。...但是这个问题也不是不能解决,因为 H.264、H.265 码流本身也是遵循一定格式规范的,我们可以按照它的格式规范进行探测,如果能解析出来正确的信息,那也可以确定它的编码格式。...: sps++; break; case HEVC_NAL_PPS: pps++; break; case HEVC_NAL_BLA_N_LP...: case HEVC_NAL_IDR_W_RADL: irap++; break; } } } if (vps && sps &...,比如 H.265 如果解析出了 pps、sps、vps 的各字段信息符合规范,就认为它是 H.265 的编码;如果不是,在你们的码流格式范围中就只剩 H.264 了;接下来将码流数据交给对应的解码器解码即可

    2.9K30

    从0开始做播放器---编解码基础知识

    在闭合式GOP中,每个GOP的第一个帧一定是I帧,且当前GOP的数据不会参考前后GOP的数据。...1是非IDR帧 有可能是I帧,P帧,B帧 5是IDR帧,IDR帧一定是I帧,但I帧不一定是IDR帧。IDR帧前面通常会有SPS和PPS。...IDR帧常用于流媒体,因为存成文件的话,SPS、PPS信息会存在文件头,只存一次就可以,而流媒体,由于是网络流, 1.只发一次SPS我们无法保证服务器一定会接收到; 2.就算第一次发SPS就接收到了...,那也需要一直在服务器缓存; 3.如果直播小姐姐切换了前后摄像头,SPS和PPS就会变化,如果还用第一次接收到的SPS,就会出错 所以就需要IDR帧的存在,隔一段时间,就传一下SPS和PPS。...7是SPS 序列参数集 8是PPS 图像参数集 ?

    1.7K30

    H264解码输出yuv文件

    , //5 IDR图像的编码条带 H264NT_SEI, //6 增强信息 H264NT_SPS, //7 序列参数集 H264NT_PPS...比如上面第一个数据单元: 00 00 00 01 67 64 00 28 ac d3 05 07 e4 说明这个是一段SPS(67&1f = 7)。...首先是读取文件的头部,从SPS/PPS/SEI数据单元开始读,遇到SLICE/SLICE_IDR数据单元时停止,将读到的数据写入到解码器的输入buf中,然后初始化解码器。...之后开始不断读取一段段NALU数据(可以是SPS/PPS/SE连续数据单元+SLICE/SLICE_IDR数据单元,也可以是一个SLICE数据单元,或者是一个SLICE_IDR数据单元)。...可以看到第三部分程序,先是用find_nal_unit()函数读取一个数据单元,接着判断单元类型,是SPS(7),PPS(8),SEI(6)时则继续读,读到SLICE/SLICE_IDR数据单元时停止,

    1.6K20

    音视频面试题集锦 2022.04

    IDR 帧有如下特性: IDR 帧一定是 I 帧,严格来说 I 帧不一定是 IDR 帧(但一般 I 帧就是 IDR 帧); 对于 IDR 帧来说,在 IDR 帧之后的所有帧都不能引用任何 IDR 帧之前的帧的内容...与此相反,对于普通的 I 帧来说,位于其之后的 B 和 P 帧可以引用位于普通 I 帧之前的 I 帧(普通 I 帧有被跨帧参考的可能); 播放器永远可以从一个 IDR 帧播放,因为在它之后没有任何帧引用之前的帧...所以,在直播场景通常每个 I 帧都是 IDR 帧,这样服务端下发流数据的时候总是从一个 I 帧开始,播放器就可以立即开始播放。 4)什么是 SPS 和 PPS?它们有什么区别?...SPS 中的信息至关重要,如果其中的数据丢失,解码过程就可能失败。SPS 和 PPS 通常作为解码器的初始化参数。...一般情况,SPS 和 PPS 所在的 NAL 单元位于整个码流的起始位置,但是在某些场景下,在码率中间也可能出现这两种结构: 解码器要在码流中间开始解码。比如,直播流。

    1.4K20

    Android音视频H264码流结构

    也就是视频编码数据(VCL)在传输或存储(保存到文件)之前,会先被封装进NAL(也就是NALU)单元才可以。 NALU(NAL单元) h264码流是一系列的NALU组成,用起始码分割每个。...,pps,sei,idr等 我们主要看一下nal_unit_type在h264协议中定义如下: nal_unit_type.png nal_unit_type =1-5是VCL(视频编码层)单元。...7-代表当前NALU为序列参数集SPS,包括一个图像序列的所有信息,即两个 IDR 图像间的所有图像信息,如图像尺寸、视频格式等 8-代表当前NALU为图像参数集PPS,包括一个图像的所有分片的所有相关信息..., 包括图像类型、序列号等 一般h264的码流最开始都是SEI,SPS,PPS,IDR(I帧)......,SPS,PPS,IDR(I帧). 一般在IDR(I帧)前有SPS,PPS,也就是每一组图像(GOP序列,图片组)都给予了图像参数集(PPS)和这个序列参数集SPS(SPS)。

    1.1K30

    H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析

    文档中的确包含了一个Annex,特别是描述了一种可能的格式Annex B格式,但是这个并不是一个必须要求的格式。标准文档中指定了视频怎样编码成独立的包,但是这些包是怎样存储和传输的却是开放的。...Abstraction Layer Units: 视频编码成的包叫做Network Abstraction Layer Units, 也简称为NALU、NAL,每个NALU包都可以被单独的解析和处理,每个NALU包的第一个字节包含了...4字节类型的开始码通常只用于标识流中的随机访问点, 如SPS PPS AUD和IDR,然后其他地方都用3字节类型的开始码以减少数据量。...然后可以看到一个开始码后面接着一个PPS(PPS 以0x68开始),然后是一个最后的开始码,后面跟着一个IDR包。...在这些格式中通常会周期性的重复SPS和PPS包,经常是在每一个关键帧之前, 因此据此建立解码器可以一个随机访问的点,这样就可以加入一个正在进行的流,及播放一个已经在传输的流。 二.

    2.5K10

    SkeyePlayer源码解析系列之支持H265

    , // 19 // Current name in the spec: IDR_W_DLP NAL_UNIT_CODED_SLICE_IDR_N_LP, // 20 NAL_UNIT_CODED_SLICE_CRA...和PPS的定义: NAL_UNIT_VPS, // 32 NAL_UNIT_SPS, // 33 NAL_UNIT_PPS...时发现,H265的第一个I帧会经常解码失败,经调试发现其实是FFNPEG的解码函数返回没有解码完成的结果被程序判断为解码失败,而这个时候应该不做任何处理等下一次返回的时候就能获取到正确的返回结果了,SkeyePlayer...四、H265格式视频写MP4 这里接着之前SkeyePlayer系列的写MP4篇讲,将H265封装MP4; 1> 解析H265的头,或者VPS,SPS和PPS 从H265帧中取出NAL头在上文已经作过讲解这里就不做过多赘述...= hevc.sps[idx].height; //Config pps idx = gf_media_hevc_read_pps((char*)pps, ppslen, &hevc); hevc.pps

    1.5K20

    H.264MPEG-4 AVC学习

    从宏观上来说,SPS、PPS、IDR 帧(包含一个或多个I-Slice)、P 帧(包含一个或多个P-Slice )、B 帧(包含一个或多个B-Slice )共同构成典型的H.264码流结构。...SPS/PPS SPS,Sequence Parameter Sets,序列参数集,是H.264码流序列的第一个NALU,PPS,Picture Parameter Set,图像参数集,是H.264码流序列的第二个...SPS语法单元存放一个视频序列共同特征,而PPS语法单元各个图像的典型特征。SPS和PPS都各自对应于一个NALU。...只有视频序列之间才能切换SPS,即只有IDR帧的第一个slice才可以切换SPS;只有图像之间才能切换PPS,即只有每帧图像的第一个slice才能切换PPS。...IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。 在IDR帧之后可能存在I帧、P帧和B帧,这个具体看使用的是哪种Profile。

    1.9K11

    音视频压缩:H264码流层次结构和NALU详解

    6 SEI补充增强信息单元 可以存一些私有数据等; 7 SPS 序列参数集 SPS对如标识符、帧数以及参考帧数目、解码图像尺寸和帧场模式等解码参数进行标识记录 8 PPS 图像参数集 PPS对如熵编码类型...通常情况我们看到的NLAU类型就是SPS、PPS、SEI、IDR的slice、非IDR这几种。...所以从这里面就可以引申以下几个概念: GOP:一段时间内图像变化不大的图像集我们就可以称之为一个序列,这里的图像又在H264里面称为帧,所以就是一组视频帧,其中第一个我们称为是IDR帧。...我们发现视频流数据就是由一系列SPS、PPS、I、P、B帧序列组成,这些数据都是通过NALU进行承载的; 2....我们看到了NALU不仅仅可以承载SPS、PPS、SEI等非VCL数据,也可以传输I、B、P帧的切片VCL数据。 3.

    7.2K30
    领券