打包头文件:

  1. class CH2642Rtp
  2. {
  3. public:
  4. CH2642Rtp(uint32_t ssrc, uint8_t payloadType = 96, uint8_t fps = 25, int32_t rtpsizeMax = RTP_PACK_SIZE_MAX);
  5. ~CH2642Rtp(void);
  6.  
  7. int getOneRtp(uint8_t *buf, uint16_t bufsize, bool_t *eof);
  8.  
  9. int setOneFrame(const uint8_t *nalbuf, uint16_t nalsize);
  10.  
  11. private:
  12. void resetRtpInfo();
  13.  
  14. private:
  15.  
  16. uint8_t m_sps[SPS_SIZE_MAX], m_pps[SPS_SIZE_MAX];
  17. uint32_t m_spslen, m_ppslen;
  18.  
  19. uint8_t m_fps;
  20. uint32_t m_ts;
  21. uint16_t m_vseq;
  22. bool_t m_vfirst;
  23. uint8_t m_payloadType;
  24. uint32_t m_ssrc ;
  25. int32_t m_rtpsizeMax;
  26.  
  27. int32_t m_naltype;
  28. uint8_t *m_nalbuf;
  29. uint16_t m_nalsize;
  30. uint8_t *m_cur;
  31. bool_t m_eof;
  32. };

  

解包头文件:

  1. class CRtp2H264
  2. {
  3. public:
  4. CRtp2H264(uint8_t payloadType = 96);
  5. ~CRtp2H264(void);
  6.  
  7. /**
  8. * @brief 根据传入的rtp数据输出一帧H264
  9. * @param [in] buf
  10. * @param [in] bufsize
  11. * @param [out] pkt h264帧(sps/pps/I/P/B)
  12. * @return >0: normal h264 data, =0: 当前rtp data不足以输出一帧数据, <0: error happen
  13. */
  14. int32_t readFrame(const uint8_t *buf, uint16_t bufsize, AvPacket* pkt);
  15.  
  16. private:
  17. int32_t _parseRtp(struct rtpheader *rh, const uint8_t *buf, uint16_t bufsize, payload_t *payload);
  18.  
  19. int32_t _parseH264(const uint8_t *buf, uint16_t bufsize, AvPacket* pkt);
  20.  
  21. private:
  22. statics_unpack_t m_statics;
  23.  
  24. uint8_t m_sps[SPS_SIZE_MAX], m_pps[SPS_SIZE_MAX];
  25. uint32_t m_spslen, m_ppslen;
  26.  
  27. uint16_t m_vseq;
  28. bool_t m_vfirst;
  29. uint8_t m_payloadType ;
  30. int32_t m_ssrc ;
  31. };  

demo(linux x64环境下运行)及h264裸流测试文件下载地址:

http://www.srcbin.net/index.php/soft/detail.html?id=46

源码下载地址:

http://www.srcbin.net/index.php/file/code.html?id=18

h264_rtp打包解包类及实现demo的更多相关文章

  1. (转)基于RTP的H264视频数据打包解包类

    最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...

  2. 基于RTP的H264视频数据打包解包类

    from:http://blog.csdn.net/dengzikun/article/details/5807694 最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打 ...

  3. 【FFMPEG】基于RTP的H264视频数据打包解包类

    最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...

  4. Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口

    Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器 ...

  5. 【Unity】AssetBundle的使用——打包/解包

    最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结运行时用A ...

  6. 07.进程管理+作业控制+文件查找与压缩+文件压缩与打包+tar打包解包+NFS

    进程管理 程序放在磁盘上叫文件,把它复制到内存,并在cpu运行,就叫进程, 进程多少也反映当前运行程序的多少 进程在系统中会为每个进程生成一个进程号,在所有的进程中有一个特殊进程即init进程, 它是 ...

  7. Mtk Android 打包解包*.img

    打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MT ...

  8. xpack文件打包解包代码库

    Github ###概述 xpack是一个文件资源打包工具及类库,可以对多文件进行打包解包. 其使用文件名的hash作为索引,建立hash索引表以加速文件查找. ###特性 支持hashid自动解冲突 ...

  9. Ruby中星号打包解包操作

    Ruby中可以使用一个星号*和两个星号**完成一些打包.解包操作,它们称为splat操作符: 一个星号:以数组为依据进行打包解包(参考文章) 两个星号:以hash为依据进行打包解包(参考文章) 两个星 ...

随机推荐

  1. BZOJ1823 [JSOI2010]满汉全席 2-sat

    原文链接http://www.cnblogs.com/zhouzhendong/p/8125944.html 题目传送门 - BZOJ1823 题意概括 有n道菜,分别可以做成满式和汉式(每道菜只能做 ...

  2. String.getBytes()和String.tocharArray(),字节数组和字符数组的区别

    String.getBytes()是将字符串转化为一个字节数组.而String.toCharArray()是将一个字符串转化为一个字符数组. [例如] byte bys[] ="国庆60周年 ...

  3. Spring(六)Spring执行流程

    Spring MVC工作流程图 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获: 2. DispatcherS ...

  4. 解决每次调试网页,eclipse总是提示edit source lookup path的问题,我的第一篇小随笔,小激动呢

    如图,很简单,只要把想要debug的项目勾上就行,网页调试时,就会自动去找项目文件位置

  5. dubbo spring bean id冲突

    service-security-provider应用有provider和consumer配置文件 其中secutrity-consumer引用两个服务 <dubbo:reference int ...

  6. 最短路(Floyd)-hdu1317

    题目链接:https://vjudge.net/problem/HDU-1317 题目描述: 题意:玩家起始有100个能量点,刚开始在起始房间中,每个房间外有一条单向的路径通往其他房间(一个房间可能通 ...

  7. RF:RF实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性—Jason niu

    %RF:RF实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 load data.mat a = randperm(569); Train = data(a(1:500),:); ...

  8. Linux常用命令大全(转)

    (转)Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...

  9. hihocoder#1513 : 小Hi的烦恼 bitset

    目录 题目链接 题解 代码 题目链接 hihocoder#1513 : 小Hi的烦恼 题解 cdq 套cdq 套cdq 套cdq就完了呀 对每一科开n个bitset 表示该科目前i个有谁 每次查询都& ...

  10. Android应用程序开发疑问

    为什么android.util.log会提供五种不同级别的打印输出方式?(打印输出在Logcat窗口)比如:Log.v()用于打印比较琐碎的信息:Log.d()用于打印调试信息:Log.i()用于打印 ...