Opencv + OpenNI + H.263 + RTP 视频截取、压缩和发送实验

 由于工作需要,做了下Camera或Kinect视频采集后经过H263压缩并通过RTP向外发送的实验,期间查了不少网上的资料,看了不少文章,但最终主要参考了这两个帖子:

http://blog.csdn.net/ljbsdu/article/details/6663730

http://blog.163.com/gz_ricky/blog/static/182049118201122311118325/

       其实大部分的工作在这两个帖子中已经做了,他们做的都不错,经过实验能够正常运行。我所做的基本就是上两个帖子的集合,我也就不具体介绍我怎么实现的了。但通过实验,发现有几点需要说明:

       1、在第一帖子中,虽然使用了RTP的库,但并没有按照rfc2190及类似标准对视频帧进行组包,而是简单将视频帧放在了RTP包的payload中,这样做虽然也能够传输视频,但并不通用,而且若是数据大于一个RTP包的最大规定大小,也没有实现分包的机制。所以实质上只是把RTP当做了UDP来使用。

       2、在第一帖子中的H263压缩部分,作者一直进行的是 I帧 的压缩,而没有发送P帧,这样就失去了H263的优点,正确的应该是发一个 I帧后中连续发几个P帧,至于两者的比例是多少,我还没有查到相关的资料。另外就是,帖子中用到的H263压缩程序对于I帧的压缩存在问题,压缩的速度随时间的推移越来越慢,这点还需要以后详细调查一下原因。

       3、若是要进行H263的压缩,最后将采集来的视频数据放在Opencv的Mat变量中,而不要放在IplImage类型变量中。经过实验,直接对IplImage中的数据进行压缩,速度会极其慢。

       4、对第一个帖子中提供的VC2005工程进行编译后,在Debug模式下会运行错误,我估计是所使用的Jrtplib库的问题,但我对其源代码进行重新设置后编译(也就是在“代码输出”中进行设置),虽然能够运行,运行后却接收不到数据,可能还是我编译上的问题,这个还需要以后有时间的话做下试验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值