打包头文件:

class CH2642Rtp
{
public:
CH2642Rtp(uint32_t ssrc, uint8_t payloadType = 96, uint8_t fps = 25, int32_t rtpsizeMax = RTP_PACK_SIZE_MAX);
~CH2642Rtp(void); int getOneRtp(uint8_t *buf, uint16_t bufsize, bool_t *eof); int setOneFrame(const uint8_t *nalbuf, uint16_t nalsize); private:
void resetRtpInfo(); private: uint8_t m_sps[SPS_SIZE_MAX], m_pps[SPS_SIZE_MAX];
uint32_t m_spslen, m_ppslen; uint8_t m_fps;
uint32_t m_ts;
uint16_t m_vseq;
bool_t m_vfirst;
uint8_t m_payloadType;
uint32_t m_ssrc ;
int32_t m_rtpsizeMax; int32_t m_naltype;
uint8_t *m_nalbuf;
uint16_t m_nalsize;
uint8_t *m_cur;
bool_t m_eof;
};

  

解包头文件:

class CRtp2H264
{
public:
CRtp2H264(uint8_t payloadType = 96);
~CRtp2H264(void); /**
* @brief 根据传入的rtp数据输出一帧H264
* @param [in] buf
* @param [in] bufsize
* @param [out] pkt h264帧(sps/pps/I/P/B)
* @return >0: normal h264 data, =0: 当前rtp data不足以输出一帧数据, <0: error happen
*/
int32_t readFrame(const uint8_t *buf, uint16_t bufsize, AvPacket* pkt); private:
int32_t _parseRtp(struct rtpheader *rh, const uint8_t *buf, uint16_t bufsize, payload_t *payload); int32_t _parseH264(const uint8_t *buf, uint16_t bufsize, AvPacket* pkt); private:
statics_unpack_t m_statics; uint8_t m_sps[SPS_SIZE_MAX], m_pps[SPS_SIZE_MAX];
uint32_t m_spslen, m_ppslen; uint16_t m_vseq;
bool_t m_vfirst;
uint8_t m_payloadType ;
int32_t m_ssrc ;
};  

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. ConcurrentModificationException(并发修改异常)的解决

    [异常解释] ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常.[产生的原因] 迭代器是依赖于集合而存在的,在判断成功后,集合 ...

  2. day 51 js-2 函数,对象,正则 (定时器示例)

    本文转载自cnblogs.liwenzhou-----哪吒博客 先来一个定时器让我们看看函数的效果: <script src="/js/jquery-3.2.1.min.js" ...

  3. ZooKeeper用途

    ZooKeeper还可以用作其他用途,例如: 数据发布与订阅(配置中心) 负载均衡 命名服务(Naming Service) 分布式通知/协调 集群管理与Master选举 分布式锁 分布式队列 一些在 ...

  4. sqlmap 1.3.2.16 帮助信息

    Usage: sqlmap.py [options] 选项: -h, --help 显示基本帮助信息并退出 -hh 显示高级帮助消息并退出 --version 显示程序的版本号并退出 -v VERBO ...

  5. 【LeetCode算法-14】Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. If there is n ...

  6. Team Queue POJ - 2259 (队列)

    Queues and Priority Queues are data structures which are known to most computer scientists. The Team ...

  7. String、StringBuffer、StringBuilder的比较

    看String类的定义:public final class String...{private final char value[];} 看AbstractStringBuilder类的定义:abs ...

  8. Django 学习第四天——Django 模板标签

    一.模板标签: 作用:标签在渲染的过程中提供任意的逻辑:例如 if for...in... 等 标签语法:由 {% %} 来定义的:例如:{% tag %}xxx{% endtag %} 常用标签: ...

  9. python & MySQLdb(two)

    实现python封装 # encoding=utf8 import MySQLdb #定义类 class MysqlHelper(): def __init__(self,host,port,db,u ...

  10. visual studio 加入zen-codding

    大家都知道zen codding的强大之处大家都知道了,那如何让visual studio也支持呢,直接下载插件安装即可: 插件下载地址:zen-codding for visual studio下载 ...