/*NUAL HEAD
 +---------------+
 |0|1|2|3|4|5|6|7|
 +-+-+-+-+-+-+-+-+
 |F|NRI|  Type   |
 +---------------+
 */

F  = Forbidden_zero_bit =0;

NRI = Nal_ref_idc:表示NAL的优先级。0~3,取值越大,表示当前NAL越重要,需要优先受到保护。如果当前NAL是属于参考帧的片,或是序列参数集,或是图像参数集这些重要的单位时,本句法元素必需大于0。
Type = Nal_unit_type:当前NAL 单元的类型

#define TYPE_SPS_FRAME     0x67  //byte: 01100111     F:0   NRI:11   TYPE:00111  =  NALU_TYPE_SPS
#define TYPE_PPS_FRAME     0x68  //byte: 01101000     F:0   NRI:11   TYPE:01000  =  NALU_TYPE_PPS
#define TYPE_IDR_FRAME     0x65  //byte: 01100101     F:0   NRI:11   TYPE:00101  =  NALU_TYPE_IDR
#define TYPE_SLICE_FRAME   0x41  //byte: 01000001     F:0   NRI:10   TYPE:00001  =  NALU_TYPE_SLICE
#define TYPE_SEI_FRAME     0x06  //byte: 00000110     F:0   NRI:00   TYPE:00110  =  NALU_TYPE_SEI
#define TYPE_S_FRAME       0x61  //byte: 01100001     F:0   NRI:11   TYPE:00001  =  NALU_TYPE_SLICE

/*
 /H264定义的类型 values for nal_unit_type
 typedef enum {
 NALU_TYPE_SLICE    = 1,     byte: 00001   //非IDR图像的编码条带
 NALU_TYPE_DPA      = 2,     byte: 00010   //编码条带数据分割块A 
 NALU_TYPE_DPB      = 3,     byte: 00011   //编码条带数据分割块B
 NALU_TYPE_DPC      = 4,     byte: 00100   //编码条带数据分割块C
 NALU_TYPE_IDR      = 5,     byte: 00101   //IDR图像的编码条带 
 NALU_TYPE_SEI      = 6,     byte: 00110   //增强信息(SEI)
 NALU_TYPE_SPS      = 7,     byte: 00111   //序列参数集(SPS)
 NALU_TYPE_PPS      = 8,     byte: 01000   //图像参数集(PPS)
 NALU_TYPE_AUD      = 9,     byte: 01001
 NALU_TYPE_EOSEQ    = 10,    byte: 01010
 NALU_TYPE_EOSTREAM = 11,    byte: 01011
 NALU_TYPE_FILL     = 12,    byte: 01100
 #if (MVC_EXTENSION_ENABLE)
 NALU_TYPE_PREFIX   = 14,    byte: 01110
 NALU_TYPE_SUB_SPS  = 15,    byte: 01111
 NALU_TYPE_SLC_EXT  = 20,    byte: 10100
 NALU_TYPE_VDRD     = 24     byte: 11000   // View and Dependency Representation Delimiter NAL Unit
 #endif
 } NaluType;
 */

-(BOOL)h264Parse:(NSData *)frameData{
    char firstChar;
    BOOL isOK = NO;
    [frameData getBytes:&firstChar length:1];
    if (firstChar == TYPE_SPS_FRAME) {
        NSLog(@"TYPE_SPS_FRAME");
        isOK = YES;
    }else if (firstChar == TYPE_PPS_FRAME){
        NSLog(@"TYPE_PPS_FRAME");
                isOK = YES;
    }else if (firstChar == TYPE_IDR_FRAME){
        NSLog(@"TYPE_IDR_FRAME");
                isOK = YES;
    }else if (firstChar == TYPE_SLICE_FRAME){
        NSLog(@"TYPE_SLICE_FRAME");
    }else if (firstChar == TYPE_SEI_FRAME){
        NSLog(@"TYPE_SEI_FRAME");
    }else if (firstChar == TYPE_S_FRAME){
        NSLog(@"TYPE_S_FRAME");
                isOK = YES;
    }
    
    char lastChar;
    [frameData getBytes:&lastChar length:1];
    if ((lastChar & 0x80) == 0X80) {
        NSLog(@"Start Frame......");
    }
    
    
    return isOK;
}

264 nal type相关推荐

  1. H.264——NAL Unit结构分析

    目录 NAL Unit格式 NAL Header nal_unit_type NAL Body Extended Byte String Payload RBSP和SODB **问:RBSP是不是等同 ...

  2. H.264 NAL层解析(0x00000001,编码,打包,NALU)

    文章参考自:https://blog.csdn.net/wudebao5220150/article/details/13810671 1.引言 H.264的主要目标: 1.高的视频压缩比 2.良好的 ...

  3. nalu模式多slice_H.264中NAL、Slice与frame意思及相互关系

    H.264中NAL.Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带).2(编码条带数据分割块A).3(编码条带数据分割块B).4(编码条带数据分 ...

  4. H.264中帧、片、宏块和NAL的关系

    怎么区分H.264视频流的I frame 和 P frame? 我是新手,前些天自己看那H.264规范文档及其他资料寻找答案时, 还有几个概念的关系还没能理解清楚,望达人指点一二: NAL.Slice ...

  5. 264编码基本概念 FFMpeg的解码流程

    下面转自http://topic.csdn.net/u/20081020/16/7156e0b2-dbfb-4b4f-af59-2be04cf9a420.html 的8楼 1.NAL.Slice与fr ...

  6. H264—帧,片,参数集,NALU等概念

    h264是一个编码压缩的格式,可以使用x264库进行编码,源码开放,可下载编译使用. --------------------------------------------------------- ...

  7. 视频编码,各种参数~sps ,pps ,nalu ,frame ,silce ect....

    H.264中NAL.Slice与frame意思及相互关系 NAL nal_unit_type中的1(非IDR图像的编码条带).2(编码条带数据分割块A).3(编码条带数据分割块B).4(编码条带数据分 ...

  8. h.264语法结构分析

    NAL Unit Stream Network Abstraction Layer,简称NAL. h.264把原始的yuv文件编码成码流文件,生成的码流文件就是NAL单元流(NAL unit Stre ...

  9. (转载)H.264码流的RTP封包说明

    H.264的NALU,RTP封包说明(转自牛人) 2010-06-30 16:28 H.264 RTP payload 格式 H.264 视频 RTP 负载格式 1. 网络抽象层单元类型 (NALU) ...

最新文章

  1. redhat7企业版linuxlinux基本操作
  2. .NET 调用JS:WebBrowser.Document.InvokeScript 方法抛出“指定的转换无效”异常的原因
  3. Oracle 入面既一d函数
  4. 什么是 APT 攻击
  5. 一定是h的方式不对阅读_德国留学 ▏德国高速真要限速350km/h了?!
  6. 【指南】远程抄表系统(AMR/AMI)中无线模块选型
  7. 小米登录协议分析_性能测试篇之Loadrunner与ida工具结合完成java vuser协议的脚本...
  8. silverlight 跨域socket
  9. 关于SAP的视图类型
  10. 罗永浩关联直播交易案遭“问停”;中国量子计算原型机“九章”问世;pip 20.3 发布 | 极客头条...
  11. 2016年linux认证,2016年Linux认证考试要点
  12. 百度网盘也能BT下载ED2K
  13. matlab6序列号plp,matlab6.5PLP是什么
  14. Mac安装PyQt4
  15. 使用canvas标签绘制圆形、三角形
  16. 解除隐藏文件cmd命令_用DOS命令怎么取消隐藏文件夹
  17. [预推免]——中科院计算所
  18. 【ArcGIS微课1000例】0026:ArcGIS10如何自定义工具条?
  19. Android 开发技术周报
  20. 《勋伯格和声学》读书笔记(八):转调

热门文章

  1. 错题本-----高速公路超速处罚
  2. clickhouse分析:clickhouse jdbc返回failed to respond问题排查
  3. c语言实现演唱会歌迷排队买票问题
  4. loadrunner Lr_类函数之 lr_rendezvous_ex()
  5. 帮你自动填账号密码的黑科技,安卓用户的专属福利
  6. 四 web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
  7. RH358管理DNS和DNS服务器--使用Unbound配置缓存名称服务器
  8. 《2021上半年全球DDoS威胁报告》发布,DDoS攻击次数连续四年高速增长
  9. Java项目:springBoot+Vue汽车销售管理系统
  10. 如何给二维码动态插入图片