h264码流结构:

h264码流也称之为“裸流”,其数据是由一个个NAL单元(NALU)连接起来的,因此要想解析h264就得弄明白NALU的结构。

NALU标准:

forbidden_zero_bit :禁止位,初始为0,当网络发现NAL单元有比特错误时可设置该比特为1,以便接收方纠错或丢掉该单元。

nal_ref_idc:重要级别,取00~11,00重要级别低,11重要级别高

nal_unit_type:NAL单元类型,具体如下表:

h264码流中的NALU

我们知道在一段h264码流中是由一个一个的NALU组成,但是会有一个问题,就是如何在一段码流中,正确的划分各个NALU呢?,就是答案就是下面要说的。

在h265或者h265中,划分各个NALU有两种区分类型:

第一种:Annexb,这种类型就是通过3或4个字节作为NALU之间的分隔符,具体的看一段真实的视频数据

可以看出,每个NALU之间均有分隔符,其中分隔符(起始字节)为00 00 00 01或者00 00 01,3个或者4个字节,因此可以通过查找起始字节的方式来分割各个NALU。

第二种:MP4或者AVCC,这种方式均是通过固定4个字节来进行分割的,其中4个字为当前NALU的长度(不包括其实字节),也就是说,在上面的实码中,第一个NALU如果转成MP4的形式的话,开始的00 00 00 01变为00 00 00 16(22个字节)。

因此,在不同的环境中,两种方式可能需要相互转换。

AnnexB与MP4的转换

音视频学习-h264的NALU结构分析相关推荐

  1. 音视频学习-H264帧基础知识

    一组图像 GOP 所谓GOP就是1组图像Group of Picture,在这一组图像中有且只有1个I帧,多个P帧或B帧,两个I帧之间的帧数,就是一个GOP. GOP一般设置为编码器每秒输出的帧数,即 ...

  2. 音视频学习-h264裸流的解析

    h264的解析代码,来自雷神的博客 //============================================================================ // ...

  3. 音视频学习之 - H264解码

    解码流程 解析数据 (SPS PPS NALU Unit) 初始化解码器 将解析后的H264 NALU Unit输入到解码器 解码完成后回调,输出解码数据 解码数据显示(OpenGL ES) 解析数据 ...

  4. 音视频 | 音视频学习-01

    音视频 | 音视频学习1 1.说一下播放器的设计过程 这里的话主要分以下几步完成: 开启一个线程进行解封装操作 .读取音频.视频的压缩数据,并进行区分.若视频数据则插入视频队列,音频数据则插入音频队列 ...

  5. 音视频学习之ffmpeg时间戳相关整理(时间基tbr,tbn,tbc)

    1: I帧/P帧/B帧 I帧:I帧(Intra-coded picture, 帧内编码帧,常称为关键帧)包含⼀幅完整的图像信息,属于帧内编码图像,不含运动⽮量,在解码时不需要参考其他帧图像.因此在I帧 ...

  6. Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  7. Android音视频学习系列(九) — Android端实现rtmp推流

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  8. Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  9. android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...

    ## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...

最新文章

  1. 第十二课.统计推断的基本思想
  2. jar中的类文件更新遇到的问题:请分析下原因呢
  3. 边缘计算+SDN:为物联网腾飞插上翅膀
  4. 洛谷P2679 子串
  5. 零件库管理信息系统设计--part03:管理员登录部分设计
  6. springboot打包时加入本地jar打包
  7. 栈溢出脚本_漏洞练习之网络编程与堆栈溢出技术
  8. eclipse解决国际化乱码问题
  9. java mysql查询试题_2016年Java认证考试题
  10. VirtualBox虚拟机共享剪贴板无效之新解决思路
  11. Loadrunner 接口测试方法
  12. antd4 TreeSelect树选择关闭虚拟滚动
  13. 飞信2010分析 – SIPC验证
  14. 一年中所有节日的排列顺序_我国一年中的传统节日。(按顺序)
  15. 2022校园春季招聘自带内推码投递链接合集
  16. 中国水泥工业节能减排行业投资效益及未来发展战略规划报告2021-2027年
  17. 去中心化隐私社交平台的十大金刚
  18. 字节跳动梁汝波:管理者过于依靠规则会使组织僵化 |王兴:反垄断无损美团竞争优势...
  19. SAP ITS Mobile 系统实例(一)
  20. SDL应用之三种字库

热门文章

  1. 为什么要分库分表?一个业务场景来理顺它!
  2. 前端上传预览文件以及下载,node后端存储文件以及返回前端文件流下载
  3. dedecms 对不起,你输入的参数有误修改
  4. 2020android主流机型,2020年最强安卓旗舰机皇的称号!这三款手机当之无愧
  5. “最后的逆袭”----你可能只缺一份人工智能专家综合手册
  6. java 上转型对象_Java中上转型对象数组
  7. 计算机课范文,计算机课程论文范文 计算机课程方面论文范文文献2500字
  8. pstack/gstack
  9. 行内元素设置margin:0 auto无效的问题
  10. javaAPI文档中文版(JDK11在线版)无需下载、直接打开