【无标题】

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帧的类型

相关推荐
Allen Bright7 分钟前
使用 Apache Commons IO 实现文件读写
java·开发语言·apache
武子康11 分钟前
Java-16 深入浅出 MyBatis - SqlSession Executor StatementHandler 源码分析
java·开发语言·mysql·mybatis·springboot
小萌新~~~~12 分钟前
在Scala中case class 的运用
开发语言·后端·scala
小萌新~~~~13 分钟前
在Scala中Array不可变的学习
开发语言·学习·scala
睎zyl14 分钟前
scala的模式匹配swtich case++
开发语言·后端·scala
m0_5127446431 分钟前
Rust 图形界面开发——使用 GTK 创建跨平台 GUI
开发语言·后端·rust
琅中之嶹32 分钟前
确定 POST 请求中的数据字段
开发语言·python·数据分析
general_pp1 小时前
【Java笔记】第十六章:多线程
java·开发语言·笔记
Ws_1 小时前
leetcode LCP 开幕式焰火
开发语言·数据结构·python·算法·leetcode
码猩1 小时前
C#高速串口通讯方案winform实例
开发语言·单片机·c#