基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15-10-30
基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
DoubleLi
博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅
:: 管理 ::
2090 随笔 :: 2 文章 :: 142 评论 :: 0 引用
<
2015年10月
>
基 于 RTP的 H264视 频 数 据 打 包 解 包 类
www.cnblogs.com/lidabo/p/4483333.html
基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
5. 6. 7. 8. 9. 10. 11. 12.
13.
14. 15. 16. 17. 18. 19. 20.
21.
22.
23.
24.
25.
26. 27.
文 章 分 类 (2)
Silve rLig ht(1) sql server(1)
参考博客 che nyujing 1234 com Dean Chen的专栏 boost 等 linux驱动 mo re w indo w s Nginx模块开发与原理剖析 Nginx模块开发与原理剖析 o p e ncv教程 Sloan 大坡3D软件开发 个人开发历程知识库 关注Dire ctX 关注Dire ctX 回忆未来-向东 http://jus tw init.cn/inde x.php 音视频FFmp e g 等 音视频FFmp e g 等
*/
/* CSRC count /* header extension /* padding flag /* packet type /* payload type /* marker bit
unsigned short */
unsigned long */
unsigned long source */
日一 二三四 五 六
27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 12 345 6 7
公告
昵称: Do ub le Li 园龄: 5年9个月 粉丝: 491 关注: 22 +加关注
搜索
找找看 谷歌搜索
常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签
随 笔 分 类 (2779)
ASP.NET(30) ASP.NET MVC(11) Boost(83) c#(8) C++/C(586) cma ke (15) co m/ATL/Active x(75) Css(16) C xIma g e (2) Dire ctX(16) Extjs(13) ffmp e g 、ffp la y(36) gcc/gdb(5) h264/h265/mp e g (1) http(4) ICE(4) java(13) javascript(66) jp e g lib (3) Jq ue ry(9) json(6) libcurl(20) Linux(242) linux驱动(2) live 555(18) Matlab(3) mfc control(2)
1. /////////////////////////////////////////////////////// ///////////////////////////////////
2. // class CH264_RTP_PACK start 3. 4. class CH264_RTP_PACK
DWORD H264SSRC ; CH264_RTP_PACK pack ( H264SSRC ) ; BYTE *pVideoData ; DWORD Size, ts ; bool IsEndOfFrame ; WORD wLen ; pack.Set ( pVideoData, Size, ts, IsEndOfFrame ) ; BYTE *pPacket ; while ( pPacket = pack.Get ( &wLen ) ) { // rtp packet process // ... }
--ke a i4le 3. Re:linux下c++开发环境安装 (e clip s e +cd t) 我安装你的教程,配置好了,还是 没有Hadoop Map/Reducec/c++ eclipse + hadoop2.6.02.重启 e clip s e ,配置ha d o o p installation direc......
--w hxlo ve yrh
www.cnblogs.com/lidabo/p/4483333.html
基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
41. 42.
unsigned int s_bit; // bit in the FU header
43.
unsigned int e_bit; // bit in the FU header
} rtp_hdr_t;
seq; ts; ssrc;
/* sequence number /* timestamp /* synchronization
typedef struct tagRTP_INFO
{
NAL_MSG_t nal;
// NAL information
rtp_hdr_t rtp_hdr; // RTP header is assemb
www.cnblogs.com/lidabo/p/4483333.html
from:ht t p://blog.c sdn.net /dengzikun/art ic le/det ails/5807694
最近考虑使用RT P替换原有的高清视频传输协议,遂上网查找有关H264视频 RT P打包、解包的文档和代码。功夫不负有心人,找到不少有价值的文档和代 码。参考这些资料,写了H264 RTP打包类、解包类,实现了单个NAL单元包 和FU_A分片单元包。对于丢包处理,采用简单的策略:丢弃随后的所有数据 包,直到收到关键帧。测试效果还不错,代码贴上来,若能为同道中人借鉴一 二,足矣。两个类的使用说明如下(省略了错误处理过程):
HRESULT hr ; CH264_RTP_UNPACK unpack ( hr ) ; BYTE *pRtpData ; WORD inSize; int outSize ; BYTE *pFrame = unpack.Parse_RTP_Packet ( pRtpData, inSize, &outSize ) ; if ( pFrame != NULL ) { // frame process // ... }
Biblioteka Baidu
typedef struct
{
//LITTLE_ENDIAN
unsigned short cc:4;
*/
unsigned short x:1;
flag
*/
unsigned short p:1;
*/
unsigned short v:2;
*/
unsigned short pt:7;
*/
unsigned short m:1;
最新评论 1. Re:基于Oracle OCI的数据访问 C语言接口ORADBI . #pragma comment(lib, " ../o ra d b i/d e b ug /o ra d b id .lib " )
oradbid.lib加载失败,为什么? --My_W o rld
2. Re:线程池原理及创建(C++实 现) 谢谢分享!
// pointer to where RTP // pointer to start of // pointer to end of pa
2/20
15-10-30
2013年8月 (69) 2013年7月 (9) 2013年6月 (11) 2013年5月 (55) 2013年4月 (34) 2013年3月 (42) 2013年2月 (12) 2013年1月 (44) 2012年12月 (90) 2012年11月 (60) 2012年10月 (25) 2012年9月 (15) 2012年8月 (46) 2012年7月 (63) 2012年6月 (22) 2012年5月 (12) 2012年4月 (15) 2012年3月 (20) 2012年1月 (10) 2011年12月 (12) 2011年11月 (6) 2011年10月 (14) 2011年9月 (5) 2011年8月 (1) 2011年5月 (1)
r H264PAYLOADTYPE=96, unsigned short MAXRTPPACKSIZE=147 2)
28.
29.
30. 31. 32. 33. 34. 35.
36.
{ #define RTP_VERSION 2
typedef struct NAL_msg_s {
bool eoFrame ; unsigned char type; // NAL type unsigned char *start; // pointer to first loc ation in the send buffer unsigned char *end; // pointer to last location in send buffer unsigned long size ; } NAL_MSG_t;
1/20
15-10-30
mingw (4) mysql(2) nginx(57) Nhibernate / Hibernate(3) O p e nC V(23) O p e nGL(1) O ra cle (29) ProtoBuf(1) Qt(1) RTSP/RTP(19) SDL(8) s he ll Silve rLig ht(1) sql server(3) s q lite (2) SVN/git(15) UML(2) VC/MFC(578) w e b(13) w e bs e rve r/C GI(2) w ifi(5) Windows 编程(30) W indo w s 控件开发/自绘(17) W P F(1) W TL(1) 编解码(10) 操作系统(6) 多线程编程(31) 工程拓扑、视频设备(1) 工具/插件 开发与使用(130) 管理&投资(3) 计算机视觉(10) 架构设计(3) 开源库(36) 其它(3) 嵌入式(30) 图像/ISP(1) 图形界面编程(105) 图形学(18) 网络编程(76) 无线网络(9) 异常诊断与调试(70) 音视频、流媒体(130)
44.
bool FU_flag;
// fragmented NAL Unit flag
45. 46. 47. 48.
49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
} RTP_INFO;
public: CH264_RTP_PACK(unsigned long H264SSRC, unsigned cha
随 笔 档 案 (2090)
2015年10月 (22) 2015年9月 (7) 2015年8月 (32) 2015年7月 (45) 2015年6月 (89) 2015年5月 (74) 2015年4月 (14) 2015年3月 (41) 2015年2月 (3) 2015年1月 (45) 2014年12月 (78) 2014年11月 (20) 2014年10月 (19) 2014年9月 (85) 2014年8月 (52) 2014年7月 (12) 2014年6月 (94) 2014年5月 (105) 2014年4月 (112) 2014年3月 (39) 2014年2月 (40) 2014年1月 (41) 2013年12月 (114) 2013年11月 (141) 2013年10月 (18) 2013年9月 (55)
led here
int hdr_len;
// length of RTP header
37. 38.
39.
40.
unsigned char *pRTP; packet has beem assembled
unsigned char *start; payload
unsigned char *end; yload
基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
DoubleLi
博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅
:: 管理 ::
2090 随笔 :: 2 文章 :: 142 评论 :: 0 引用
<
2015年10月
>
基 于 RTP的 H264视 频 数 据 打 包 解 包 类
www.cnblogs.com/lidabo/p/4483333.html
基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
5. 6. 7. 8. 9. 10. 11. 12.
13.
14. 15. 16. 17. 18. 19. 20.
21.
22.
23.
24.
25.
26. 27.
文 章 分 类 (2)
Silve rLig ht(1) sql server(1)
参考博客 che nyujing 1234 com Dean Chen的专栏 boost 等 linux驱动 mo re w indo w s Nginx模块开发与原理剖析 Nginx模块开发与原理剖析 o p e ncv教程 Sloan 大坡3D软件开发 个人开发历程知识库 关注Dire ctX 关注Dire ctX 回忆未来-向东 http://jus tw init.cn/inde x.php 音视频FFmp e g 等 音视频FFmp e g 等
*/
/* CSRC count /* header extension /* padding flag /* packet type /* payload type /* marker bit
unsigned short */
unsigned long */
unsigned long source */
日一 二三四 五 六
27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 12 345 6 7
公告
昵称: Do ub le Li 园龄: 5年9个月 粉丝: 491 关注: 22 +加关注
搜索
找找看 谷歌搜索
常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签
随 笔 分 类 (2779)
ASP.NET(30) ASP.NET MVC(11) Boost(83) c#(8) C++/C(586) cma ke (15) co m/ATL/Active x(75) Css(16) C xIma g e (2) Dire ctX(16) Extjs(13) ffmp e g 、ffp la y(36) gcc/gdb(5) h264/h265/mp e g (1) http(4) ICE(4) java(13) javascript(66) jp e g lib (3) Jq ue ry(9) json(6) libcurl(20) Linux(242) linux驱动(2) live 555(18) Matlab(3) mfc control(2)
1. /////////////////////////////////////////////////////// ///////////////////////////////////
2. // class CH264_RTP_PACK start 3. 4. class CH264_RTP_PACK
DWORD H264SSRC ; CH264_RTP_PACK pack ( H264SSRC ) ; BYTE *pVideoData ; DWORD Size, ts ; bool IsEndOfFrame ; WORD wLen ; pack.Set ( pVideoData, Size, ts, IsEndOfFrame ) ; BYTE *pPacket ; while ( pPacket = pack.Get ( &wLen ) ) { // rtp packet process // ... }
--ke a i4le 3. Re:linux下c++开发环境安装 (e clip s e +cd t) 我安装你的教程,配置好了,还是 没有Hadoop Map/Reducec/c++ eclipse + hadoop2.6.02.重启 e clip s e ,配置ha d o o p installation direc......
--w hxlo ve yrh
www.cnblogs.com/lidabo/p/4483333.html
基于RTP的H264视频数据打包解包类 - DoubleLi - 博客园
41. 42.
unsigned int s_bit; // bit in the FU header
43.
unsigned int e_bit; // bit in the FU header
} rtp_hdr_t;
seq; ts; ssrc;
/* sequence number /* timestamp /* synchronization
typedef struct tagRTP_INFO
{
NAL_MSG_t nal;
// NAL information
rtp_hdr_t rtp_hdr; // RTP header is assemb
www.cnblogs.com/lidabo/p/4483333.html
from:ht t p://blog.c sdn.net /dengzikun/art ic le/det ails/5807694
最近考虑使用RT P替换原有的高清视频传输协议,遂上网查找有关H264视频 RT P打包、解包的文档和代码。功夫不负有心人,找到不少有价值的文档和代 码。参考这些资料,写了H264 RTP打包类、解包类,实现了单个NAL单元包 和FU_A分片单元包。对于丢包处理,采用简单的策略:丢弃随后的所有数据 包,直到收到关键帧。测试效果还不错,代码贴上来,若能为同道中人借鉴一 二,足矣。两个类的使用说明如下(省略了错误处理过程):
HRESULT hr ; CH264_RTP_UNPACK unpack ( hr ) ; BYTE *pRtpData ; WORD inSize; int outSize ; BYTE *pFrame = unpack.Parse_RTP_Packet ( pRtpData, inSize, &outSize ) ; if ( pFrame != NULL ) { // frame process // ... }
Biblioteka Baidu
typedef struct
{
//LITTLE_ENDIAN
unsigned short cc:4;
*/
unsigned short x:1;
flag
*/
unsigned short p:1;
*/
unsigned short v:2;
*/
unsigned short pt:7;
*/
unsigned short m:1;
最新评论 1. Re:基于Oracle OCI的数据访问 C语言接口ORADBI . #pragma comment(lib, " ../o ra d b i/d e b ug /o ra d b id .lib " )
oradbid.lib加载失败,为什么? --My_W o rld
2. Re:线程池原理及创建(C++实 现) 谢谢分享!
// pointer to where RTP // pointer to start of // pointer to end of pa
2/20
15-10-30
2013年8月 (69) 2013年7月 (9) 2013年6月 (11) 2013年5月 (55) 2013年4月 (34) 2013年3月 (42) 2013年2月 (12) 2013年1月 (44) 2012年12月 (90) 2012年11月 (60) 2012年10月 (25) 2012年9月 (15) 2012年8月 (46) 2012年7月 (63) 2012年6月 (22) 2012年5月 (12) 2012年4月 (15) 2012年3月 (20) 2012年1月 (10) 2011年12月 (12) 2011年11月 (6) 2011年10月 (14) 2011年9月 (5) 2011年8月 (1) 2011年5月 (1)
r H264PAYLOADTYPE=96, unsigned short MAXRTPPACKSIZE=147 2)
28.
29.
30. 31. 32. 33. 34. 35.
36.
{ #define RTP_VERSION 2
typedef struct NAL_msg_s {
bool eoFrame ; unsigned char type; // NAL type unsigned char *start; // pointer to first loc ation in the send buffer unsigned char *end; // pointer to last location in send buffer unsigned long size ; } NAL_MSG_t;
1/20
15-10-30
mingw (4) mysql(2) nginx(57) Nhibernate / Hibernate(3) O p e nC V(23) O p e nGL(1) O ra cle (29) ProtoBuf(1) Qt(1) RTSP/RTP(19) SDL(8) s he ll Silve rLig ht(1) sql server(3) s q lite (2) SVN/git(15) UML(2) VC/MFC(578) w e b(13) w e bs e rve r/C GI(2) w ifi(5) Windows 编程(30) W indo w s 控件开发/自绘(17) W P F(1) W TL(1) 编解码(10) 操作系统(6) 多线程编程(31) 工程拓扑、视频设备(1) 工具/插件 开发与使用(130) 管理&投资(3) 计算机视觉(10) 架构设计(3) 开源库(36) 其它(3) 嵌入式(30) 图像/ISP(1) 图形界面编程(105) 图形学(18) 网络编程(76) 无线网络(9) 异常诊断与调试(70) 音视频、流媒体(130)
44.
bool FU_flag;
// fragmented NAL Unit flag
45. 46. 47. 48.
49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.
} RTP_INFO;
public: CH264_RTP_PACK(unsigned long H264SSRC, unsigned cha
随 笔 档 案 (2090)
2015年10月 (22) 2015年9月 (7) 2015年8月 (32) 2015年7月 (45) 2015年6月 (89) 2015年5月 (74) 2015年4月 (14) 2015年3月 (41) 2015年2月 (3) 2015年1月 (45) 2014年12月 (78) 2014年11月 (20) 2014年10月 (19) 2014年9月 (85) 2014年8月 (52) 2014年7月 (12) 2014年6月 (94) 2014年5月 (105) 2014年4月 (112) 2014年3月 (39) 2014年2月 (40) 2014年1月 (41) 2013年12月 (114) 2013年11月 (141) 2013年10月 (18) 2013年9月 (55)
led here
int hdr_len;
// length of RTP header
37. 38.
39.
40.
unsigned char *pRTP; packet has beem assembled
unsigned char *start; payload
unsigned char *end; yload