H264裸码流I/P/B帧类型判别

Dreaming-in-Gottingen 2020-10-11 原文


H264裸码流I/P/B帧类型判别

  花了两天时间做了个h264裸流nal类型和frame类型检测的工具,已上传至github,有需要的自行下载。

 

1.NAL类型检测

  nal类型检测非常容易,对照下表即可容易判断类型。

  较常用nal类型包括:SPS(7)、PPS(8)、IDR(5)、SLICE(1)。

  而nal_type嵌在码流数据的nal_header(size=1Byte)中,占据据该字节的后五位bits。

  nal_header结构为:F(1bit) + NRI(2bits) + NAL_Type(5bits)。

  因此,用winhex看裸流的二进制数据时,通常看到start_code后的nal_header为:0x67, 0x68, 0x65, 0x41,其分别对应SPS、PPS、I帧、P帧或B帧。

  如下一段裸流,可以看出:(红色为SPS,绿色为PPS,蓝色为I帧)

 

2.frame类型检测

  从nal_header可以容易找到I帧(0x65),但却无法分辨出P帧和B帧,因为nal_header都是0x41(对应于nal_unit_type的1)。

  如何分辨出来呢?

  需要进入到slice层利用熵编码数据来判断,本工具主要针对该问题而设计的。

  下面是编译后执行结果片段:

 

发表于
2020-10-11 20:19 
OnlyTime_唯有时光 
阅读(0
评论(0
编辑 
收藏

 

版权声明:本文为Dreaming-in-Gottingen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Dreaming-in-Gottingen/p/13799066.html

H264裸码流I/P/B帧类型判别的更多相关文章

  1. jm8.6编解码器概述

    jm8.6编解码器概述   自己在学习h264的路上,欢迎讨论交流。   前段时间研究JM出品的h264编码器 […]...

  2. JPEG解码——(6)IDCT逆离散余弦变换

    JPEG解码——(6)IDCT逆离散余弦变换   本篇是该系列的第六篇,承接上篇IZigZag变换,介绍接下来 […]...

  3. JPEG解码——(4)霍夫曼解码

    JPEG解码——(4)霍夫曼解码 本篇是该系列的第四篇,主要介绍霍夫曼解码相关内容。 承接上篇,文件头解析完毕 […]...

  4. x264编码demo定制修改介绍

    x264编码demo定制修改介绍   x264编码器,提供了两个demo来验证编码功能:一个是大而全的x264 […]...

  5. 缩略图调查——抖音客户端/PC/iphone

    缩略图调查——抖音客户端/PC/iphone 最近对抖音有点上瘾,经常看到这样的视频列表:           […]...

  6. jpeg编解码概述

    jpeg编解码概述 本博文为概览性介绍。后面有空了再分几篇博文分别介绍所用到的技术细节。 1.编解码目标   […]...

随机推荐

  1. 微信小游戏 demo 飞机大战 代码分析 (三)(spirit.js, animation.js)

    微信小游戏 demo 飞机大战 代码分析(三)(spirit.js, animation.js) 微信小游戏 […]...

  2. 运用阿里图标库到自己的项目中—实例

    1 . 登录图标库  在iconfont官网搜索自己需要的图标名称(例如:搜索) 2 . 鼠标放在自己选中的图 […]...

  3. 推出新浪微博粉丝关注统计分析业务

    /////////////////////////////////////////////////////// […]...

  4. python 爬取全本免费小说网的小说

      这几天朋友说想看电子书,但是只能在网上看,不能下载到本地后看,问我有啥办法?我找了好几个小说网址看了下,你 […]...

  5. 计算机网络知识要点总结

    计算机网络知识要点总结 一、现在最主要的三种网络 电信网络(电话网) 有线电视网络 计算机网络 (发展最快,信 […]...

  6. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送。在Spring项目中发送邮件需要封装 […]...

  7. 残差网络ResNet笔记

    发现博客园也可以支持Markdown,就把我之前写的博客搬过来了~ 欢迎转载,请注明出处:http://www […]...

  8. 关于git远程被覆盖的问题

    有同事A和B,git远程版本为A0,两个人的本地项目已经跟远程同步。同事A先向git提交了3次,A1、A2、A […]...

展开目录

目录导航