[Rtsp]基于rtsp的手机视频点播实现和研究(扩展支持android, ios(2)
手机客户端与服务器端的传输协议目前有HTTP,RTSP两种,早期的手机电视多用的HTTP,HTTP的优点有不用特殊的服务器软件,有IIS即可,不 用考虑防火墙NAT,但HTTP不支持实时流,也会浪费带宽; RTSP则是当前流媒体传输的主流标准,连微软都抛弃了MMS而转而支持RTSP, RTSP可以支持客户端暂停回放停止等操作,基本不用考虑音视频同步问题(因为音频视频分别从不同RTP PORT读入缓冲)。值得说明的是,RTSP成功后,就开始RTP传输,分为RTP OVER TCP和RTP OVER UDP,前者保证每个数据包都能收到,如果没收到就重传,而且不用考虑防火墙NAT;后者只保证尽最大努力的传输,不会重传丢帧,实时性好,要解决防火墙 NAT问题。如果对帧率要求比较高的手机电视,推荐采用UDP传输,因为延迟较大的重传数据对用户是没有意义的,宁可丢弃。
我在网络部分采用强大的开源库live555实现RTSP/RTP协议,其性能稳定而且支持大多数音视频格式的传输。(当然ffmpeg也实现了网络传输 部分,经过改动后也能用)对live555经过裁剪后移植到symbian和windows mobile,这部分工作在symbian真机调试比较费时。
视频解码部分当然还是采用ffmpeg,移植了mpeg4 sp/h.264解码器,在没有任何优化的情况下可支持32K,CIF,5-10fps的效果,对于一般的流媒体应用足够了。以后还要经过算法和汇编优 化。解码后还需要经过yuv2rgb和scale,需要注意的是ffmpeg的解码有消隐区的说法,即qcif的图像其linesize不是176而是 192,如果你发现解码后图像呈绿色,需用img_convert()转一下(目的格式也是PIX_FMT_YUV420P)。symbian上用DSA 直接写屏就行。windows mobile上可以用sdl.
音频解码主要包括AAC,AMRNB,AMRWB。AAC和AMRNB是gprs和edge带宽支持的音频(aac效果比amrnb 好),AMRWB是3G后的音频格式。在ffmpeg 0.5 release中已经支持amrnb/wb的fixed point解码,很强大。
在symbian和windows mobile真机均测试通过,6122c真机和Windows mobile5.0模拟器上效果如下:
演示视频地址为rtsp://v.starv.tv/later.3gp,视频为mpeg4 sp,音频为amrwb。目前只能看到图像,音频还没加。
注意做流媒体应用接入点一般是cmnet,cmwap只用来浏览网页之类的低数据量应用。
程序还在进一步完善中,有兴趣的可以跟我一起交流, lius1984@gmail.com
2010.05.15: 程序还在进一步完善, 目前在S60 3rd/5th上已支持手机浏览器+播放器,支持h264/mpeg4, aac/amrnb。
目前支持WM, SYMBIAN, MTK。
最新支持android平台, IOS平台。 详见http://blog.csdn.net/lius1984/article/details/7669631
热门文章推荐
- [rtsp]设置海康配置DDNS远程访问的用户手册(组图说明)
- [FFmpeg]FFmpeg实现监控摄像头的RTSP协议转RTMP协议直播
- [海康]海康网络摄像机激活功能图文教程
- [Rtsp]RTSP对实时摄像头视频流进行转换(FFmpeg+FFserver)
- [RTSP]海康家用摄像头wifi设置指南(组图说明)
- [Rtsp]海康网络摄像头基于RTSP协议的windows平台监控
- 海康客户端软件安装与使用教程ivms 4200(ivms 4200 客户端)图文
- [rtsp]IPC网络摄像头常见传输协议(rtsp协议,udp协议)介绍