h264_rtp打包解包类及实现demo
打包头文件:
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的更多相关文章
- (转)基于RTP的H264视频数据打包解包类
最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...
- 基于RTP的H264视频数据打包解包类
from:http://blog.csdn.net/dengzikun/article/details/5807694 最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打 ...
- 【FFMPEG】基于RTP的H264视频数据打包解包类
最近考虑使用RTP替换原有的高清视频传输协议,遂上网查找有关H264视频RTP打包.解包的文档和代码.功夫不负有心人,找到不少有价值的文档和代码.参考这些资料,写了H264 RTP打包类.解包类,实现 ...
- Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口
Iterator(迭代器) 所有实现了Collection接口的容器都有一个iterator方法, 用来返回一个实现了Iterator接口的对象 Iterator对象称作迭代器, 用来方便的实现对容器 ...
- 【Unity】AssetBundle的使用——打包/解包
最近参考了各位大神的资源,初步学习了Unity的资源管理模式,包括在编辑器管理(使用AssetDatabase)和在运行时管理(使用Resources和AssetBundle).在此简单总结运行时用A ...
- 07.进程管理+作业控制+文件查找与压缩+文件压缩与打包+tar打包解包+NFS
进程管理 程序放在磁盘上叫文件,把它复制到内存,并在cpu运行,就叫进程, 进程多少也反映当前运行程序的多少 进程在系统中会为每个进程生成一个进程号,在所有的进程中有一个特殊进程即init进程, 它是 ...
- Mtk Android 打包解包*.img
打包/解包 boot.img, system.img, userdata.img, or recovery.img [DESCRIPTION] MTK codebase编译出来的image必须使用MT ...
- xpack文件打包解包代码库
Github ###概述 xpack是一个文件资源打包工具及类库,可以对多文件进行打包解包. 其使用文件名的hash作为索引,建立hash索引表以加速文件查找. ###特性 支持hashid自动解冲突 ...
- Ruby中星号打包解包操作
Ruby中可以使用一个星号*和两个星号**完成一些打包.解包操作,它们称为splat操作符: 一个星号:以数组为依据进行打包解包(参考文章) 两个星号:以hash为依据进行打包解包(参考文章) 两个星 ...
随机推荐
- 事件(Event)(onclick,onchange,onload,onunload,onfocus,onblur,onselect,onmuse)【转载】
ylbtech-Event:事件(Event)对象 事件(Event) HTML 4.0 事件属性 onclick onchange onload onunload onselect onmouse ...
- 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
从第0行开始,输出第k行,传的参数为第几行,所以在方法中先将所传参数加1,然后将最后一行加入集合中返回. 代码如下: public static List<Integer> generat ...
- LoadRunner之IP欺骗
一.启动IP欺骗,弹出提示窗口: 二.将本机改为静态IP: 1.查看当前的IP相关信息: 2.更改IP: 三.正式设置模拟IP号段: 1.重复步骤一,会弹出如下弹窗,选择第二项并下一步: ...
- linux文件打包并发送到其他服务器
scp /data/backup/mongodump/mongodb.$DATE.tar root@192.168.1.70:/home/iscsi/mongodb/
- 牛客练习赛28B (经典)【线段树】
<题目链接> qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的元 ...
- mysql数据库操作语句整合
查看版本:select version();显示当前时间:select now(); 注意:在语句结尾要使用分号; 远程连接 一般在公司开发中,可能会将数据库统一搭建在一台服务器上,所有开发人员共用一 ...
- OI常用重载运算符
用STL时经常用到 PS:这里有个巨坑,把重载写在STL里常数会爆炸,分分钟大数据TLE 所以就把重载放在结构体里啦 //以priority_queue的重载为例 //priority_queue默认 ...
- 纯js上传文件 很好用
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- [CC-MCO16306]Fluffy and Alternating Subsequence
[CC-MCO16306]Fluffy and Alternating Subsequence 题目大意: 给定一个\(1\sim n(n\le3\times10^5)\)的排列\(a\). 对于一个 ...
- Django 自定义模板语法
from django import template from django.utils.safestring import mark_safe register = template.Librar ...