音视频入门基础:H.264专题(9)——SPS简介

=================================================================

音视频入门基础:H.264专题系列文章:

音视频入门基础:H.264专题(1)——H.264官方文档下载

音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件

音视频入门基础:H.264专题(3)——EBSP, RBSP和SODB

音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

音视频入门基础:H.264专题(5)——FFmpeg源码中 解析NALU Header的函数分析

音视频入门基础:H.264专题(6)——FFmpeg源码:从H.264码流中提取NALU Header、EBSP、RBSP和SODB

音视频入门基础:H.264专题(7)——FFmpeg源码中 指数哥伦布编码的解码实现

音视频入门基础:H.264专题(8)——H.264官方文档的描述符

音视频入门基础:H.264专题(9)——SPS简介

音视频入门基础:H.264专题(10)——FFmpeg源码中,存放SPS属性的结构体和解码SPS的函数分析

音视频入门基础:H.264专题(11)——计算视频分辨率的公式

音视频入门基础:H.264专题(12)——FFmpeg源码中通过SPS属性计算视频分辨率的实现

音视频入门基础:H.264专题(13)——FFmpeg源码中通过SPS属性获取视频色彩格式的实现

音视频入门基础:H.264专题(14)——计算视频帧率的公式

音视频入门基础:H.264专题(15)——FFmpeg源码中通过SPS属性获取视频帧率的实现

音视频入门基础:H.264专题(16)——FFmpeg源码中,判断某文件是否为H.264裸流文件的实现

音视频入门基础:H.264专题(17)——FFmpeg源码中,获取H.264视频的profile的实现

音视频入门基础:H.264专题(18)——FFmpeg源码获取H.264裸流文件信息(视频压缩编码格式、色彩格式、视频分辨率、帧率)的总流程

音视频入门基础:H.264专题(19)——AVCDecoderConfigurationRecord简介

音视频入门基础:H.264专题(20)——FFmpeg源码中,获取avcC封装的H.264码流中每个NALU的长度的实现

音视频入门基础:H.264专题(21)——FFmpeg源码中,解码AVCDecoderConfigurationRecord的实现

音视频入门基础:H.264专题(22)——通过FFprobe显示H.264裸流每个packet的信息

=================================================================

一、SPS简介

nal_unit_type为7的NALU是SPS(Sequence parameter set,序列参数集):

H.264官方文档《T-REC-H.264-202108-I!!PDF-E.pdf》第44页到45页对SPS的数据语法进行了说明:

SPS和PPS中存放了解码过程中所需要的各种参数。一般情况下SPS和PPS位于整个码流的起始位置,解码器在解码一路码流的时候,首先要读入SPS和PPS,没有它们,视频将会无法解码。通过解析SPS中的特定参数,可以获取到视频的帧率、分辨率、这路码流的编码档次、像素格式(是YUV 4:2:0、YUV 4:2:2还是YUV 4:4:4)等关键信息。播放器(比如vlc)播放媒体文件,就是从SPS拿到大部分的媒体信息的:

用H.264编码的实时流,比如传输流,通常用Annex B包装。由于实时流中解码器需要在码流中间开始解码,并且编码器在编码的过程中可能会改变码流的参数(如图像分辨率等),所以这些格式中通常会周期性的重复SPS和PPS包(在IDR SLICE之前)。从而让解码器可以加入一个正在进行的流,及播放一个已经在传输的流。

关于SPS中的属性可以参考:《如何在H264码流的SPS中获取宽和高信息?》、《解析H.264码流中的SPS帧和PPS帧》、《编解码技术:H264 - SPS

二、删除SPS测试

由《音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件》中得到的H.264裸流文件output.h264用码流分析工具Elecard StreamAnalyzer打开如下:

可以看到0x271 到 0x28B的地址存放的是SPS。我们尝试把该SPS删掉,用notepad++打开output.h264,删掉SPS:

重新用Elecard StreamAnalyzer打开output.h264,发现SPS确实被删掉了:

用vlc播放该output.h264,发现播放器黑屏,无法播放,证明“没有SPS,视频将会无法解码”:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值