在Symbian平台上实现H264的RTSP流的播放

随着目前手机监控市场的快速发展,手机监控因其可以实现真正的“AnyTimeAnyWhereAnyDevice”(任何时间、任何地点)而收到越来越多安防企业的重视。目前的智能手机操作系统主要被SymbianWinceLinux占有。要真正实现手机监控的”AnyDevice”( 任何设备),最少要支持上述三种的手机操作系统。由于Wince Window开发平台的相似性,目前Wince平台上的H264的解码库有很多开源的代码可以参考, 网上可以参考的代码主要有ffmpegJMT264x264等。我在网上搜索了Symbian上的H264的解码库,发现根本没有开源的项目可以参考,所以本文主要关注在Symbian平台下实现上述功能。

系统的结构如下图所示:

 

090212103793931.jpg

视频服务器实现了双码流,这样即可以保证普通监控的要求,又可以保证满足手机监控等特殊需求。考虑到实际网络的带宽,解码能力等因素,手机上推荐使用CIF或者QCIF的分辨率,帧率最好控制在15帧以下。

 

软件的框架如下图所示:

 

Net Engine模块主要负责向视频服务器获取数据, 实现了一个RTSP协议, 将控制信息和音视频的数据分别从RTSP包和RTP包中取出,送往视频流队列当中。具体的RTSP协议的协商可以参考RFC的文档。

 

Stream Data Queue模块主要用于负责存储音视频的数据, 没有什么需要详细说明的。

 

H264 video decoder模块主要负责视频数据的解码。解码库采用的是移植过的ffmpeg, 这是这个程序当中花费时间最长的部分, 对ffmpeg的移植最主要要主要内存对齐,并且有些在PC上可以用的参数在Symbian平台下需要进行断点调试修改后才可以使用。

 

AMR audio decoderAAC audio decoder可以在网上寻找纯C的代码,稍加移植即可使用。建议可以先在Window平台下面调试通过在移植到symbian平台上面。

 

Symbain中,RGB颜色的实际存储方式实际上是BRG顺序。如红色实际上保存为0x0000FF而非0x00FF0000。所以如果有其他平台用到Symbian中的颜色的话,请注意转换。Ffmpeg解码输出鱼yuv420,在PC上可以转换成RGB565显示, Symbian上需要转换成BGR565

转换的部分可以参考MobiFLV项目的YUVToRGB.hYUVToRGB.cpp两个文件, 作者对转换的过程采用了查表优化,效率很不错,另外该类支持按比例对视频进行缩放,效果不错。

 

视频显示可以使用CFbsBitmap进行贴图显示,但这样的效率不是最高。使用CDirectScreenAccess类直接写屏,可以得到更高是效率。音频直接调用系统的CMdaAudioOutputStream 类进行播放即可。

 

播放的效果如下图所示,

                                                           竖屏

                                                              横屏

以上的程序连接的rtsp地址为rtsp://88.107.126.1:3838/live.3gp,图像质量为CIF 5FP/S,32KB。该视频服务器位于英国,有兴趣的朋友可以试试看。该程序还实现了对远端的云台控制,控制镜头的移动和缩放,丰富了手机监控的功能。

 

程序在E71N81N95上面测试通过。

 

缺点  当接入点选择cmwap时,无法连接视频流, 因为服务器端没有做RTSP流代理功能,客户端需要做移动网关的穿透。考虑到cmwap的速度很慢和未来网络的发展,实现的意义并不是很大,所以放弃了该部分的工作。

 

有兴趣的朋友可以联系我,一起交流学习。 ppnext@163.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值