【无标题】

H264原始码流是一个接一个的NALU(网络抽象层单元)租成的,每个单元之间是由 0x00 0x00 0x00 0x01 或者 0x00 0x00 0x01分割而成的,紧接着就是NALU的单元头和数据体:

forbidden_bit(1bit):禁止位

nal_reference_bit:优先级

nal_unit_type:NALU的类型:

可以使用这个算法直接得出 type = nalubuf[4] & ((1 << 5) - 1);

和NALU相关的知识点总结:

SPS type = 7

PPS type = 8

(1)SPS和PPS是连续对出现的,后面可能紧跟着IDR片,也有可能是SEI(补偿增强信息单元),网上说使用ffmpeg编码yuv成h264时 SPS和PPS后面紧跟着的IDR

(2)H264码流封装成视频文件时比如FLV,SEI单元和SEI单元后面的第一帧一同处理。

(3)AVC编码中的IPB帧概念相对应的是nalutype的1~5,单纯靠nalutype判断不出来IPB帧的类型

相关推荐
wanghowie8 分钟前
02.04.01 Java Stream API 进阶指南:从底层实现到性能优化
java·开发语言·性能优化
superman超哥17 分钟前
仓颉元编程进阶:编译期计算能力的原理与深度实践
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉元编程·编译器计算能力
这周也會开心30 分钟前
Map集合的比较
java·开发语言·jvm
挖矿大亨33 分钟前
C++中的赋值运算符重载
开发语言·c++·算法
superman超哥36 分钟前
Rust 基本数据类型:类型安全的底层探索
开发语言·rust·rust基本数据类型·rust底层探索·类型安全
Liu-Eleven36 分钟前
Qt/C++开发嵌入式项目日志库选型
开发语言·c++·qt
A242073493043 分钟前
深入浅出JS事件:从基础原理到实战进阶全解析
开发语言·前端·javascript
烧冻鸡翅QAQ1 小时前
从0开始的游戏编程——开发前的编程语言准备(JAVAScript)
开发语言·javascript·游戏
saber_andlibert1 小时前
【C++转GO】文件操作+协程和管道
开发语言·c++·golang
Halo_tjn1 小时前
Java IO流实现文件操作知识点
java·开发语言·windows·算法