音视频学习-h264的NALU结构分析
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结构分析相关推荐
- 音视频学习-H264帧基础知识
一组图像 GOP 所谓GOP就是1组图像Group of Picture,在这一组图像中有且只有1个I帧,多个P帧或B帧,两个I帧之间的帧数,就是一个GOP. GOP一般设置为编码器每秒输出的帧数,即 ...
- 音视频学习-h264裸流的解析
h264的解析代码,来自雷神的博客 //============================================================================ // ...
- 音视频学习之 - H264解码
解码流程 解析数据 (SPS PPS NALU Unit) 初始化解码器 将解析后的H264 NALU Unit输入到解码器 解码完成后回调,输出解码数据 解码数据显示(OpenGL ES) 解析数据 ...
- 音视频 | 音视频学习-01
音视频 | 音视频学习1 1.说一下播放器的设计过程 这里的话主要分以下几步完成: 开启一个线程进行解封装操作 .读取音频.视频的压缩数据,并进行区分.若视频数据则插入视频队列,音频数据则插入音频队列 ...
- 音视频学习之ffmpeg时间戳相关整理(时间基tbr,tbn,tbc)
1: I帧/P帧/B帧 I帧:I帧(Intra-coded picture, 帧内编码帧,常称为关键帧)包含⼀幅完整的图像信息,属于帧内编码图像,不含运动⽮量,在解码时不需要参考其他帧图像.因此在I帧 ...
- Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
- Android音视频学习系列(九) — Android端实现rtmp推流
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
- Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据
系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...
- android音视频工程师,音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)...
## 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源) ## 视音频编辑器 ## 前言 有时候我们想对音视频进行加工处理,比如视频编辑.添加字幕.裁剪等功能处 ...
最新文章
- 第十二课.统计推断的基本思想
- jar中的类文件更新遇到的问题:请分析下原因呢
- 边缘计算+SDN:为物联网腾飞插上翅膀
- 洛谷P2679 子串
- 零件库管理信息系统设计--part03:管理员登录部分设计
- springboot打包时加入本地jar打包
- 栈溢出脚本_漏洞练习之网络编程与堆栈溢出技术
- eclipse解决国际化乱码问题
- java mysql查询试题_2016年Java认证考试题
- VirtualBox虚拟机共享剪贴板无效之新解决思路
- Loadrunner 接口测试方法
- antd4 TreeSelect树选择关闭虚拟滚动
- 飞信2010分析 – SIPC验证
- 一年中所有节日的排列顺序_我国一年中的传统节日。(按顺序)
- 2022校园春季招聘自带内推码投递链接合集
- 中国水泥工业节能减排行业投资效益及未来发展战略规划报告2021-2027年
- 去中心化隐私社交平台的十大金刚
- 字节跳动梁汝波:管理者过于依靠规则会使组织僵化 |王兴:反垄断无损美团竞争优势...
- SAP ITS Mobile 系统实例(一)
- SDL应用之三种字库
热门文章
- 为什么要分库分表?一个业务场景来理顺它!
- 前端上传预览文件以及下载,node后端存储文件以及返回前端文件流下载
- dedecms 对不起,你输入的参数有误修改
- 2020android主流机型,2020年最强安卓旗舰机皇的称号!这三款手机当之无愧
- “最后的逆袭”----你可能只缺一份人工智能专家综合手册
- java 上转型对象_Java中上转型对象数组
- 计算机课范文,计算机课程论文范文 计算机课程方面论文范文文献2500字
- pstack/gstack
- 行内元素设置margin:0 auto无效的问题
- javaAPI文档中文版(JDK11在线版)无需下载、直接打开