前言: 随着3G的到来,带宽大了流量费便宜了,手机电视等多媒体应用必将有很大发展, 本人总结以往经验,跟大家讨论一下如何建立一个手机视频点播的方案,最后给出了一个初步的客户端实现效果。欢迎大家讨论。
先说架构,出于便于管理和扩展,带宽限制和多用户并发的考虑,商用方案都会采用流媒体服务器+WEB服务器+中转服务器+手机客户端的方案,其中
流媒体服务器(streaming server)负责采集视频源并压缩编码并随时等待来自客户端的rtsp连接请求;
WEB服务器(web server)便于发布和管理视频信息;
中转服务器(transmission server)是可选的,用于把来自client的RTSP请求转发给server,并把服务器端的实时流转给client,这样的好处是在相同带宽下支持更多的用户同时观看;
手机客户端(client)可以用手机内置的播放器(如nokia上的realplayer)或者自己开发的独立播放器,前者的好处是降低用户使用门槛,便于大规模应用;后者方便扩展和定制,满足更多的功能。
streaming server是整个方案的核心,目前主流的流媒体服务器解决方案如下:
helix server :借助Real公司的强大实力,这是目前最流行的方案, 可以支持所有音视频格式,性能稳定,是唯一可以横跨 Windows Mac 及 Linux, Solaris ,HP/UX 使用者流媒体服务的平台,支持在手机自带播放器播放。helix server免费的版本只支持1M流量,企业版很贵。当然你要破解就是另外一回事了:)
darwin server: 这是apple公司推出的开源的流媒体解决方案,支持格式没helix那么多,但由于是开源的免费的,对于开发者有很大的开发空间。
live555 media server:性能稳定,但支持格式比较少(只有mp3,amr,aac,mpeg4 es等几种流),很少独立使用而一般作为系统的一部分。
Windows Media Server:仅限微软平台,就不考虑了。
手机端框架流程如下:
手机客户端与服务器端的传输协议目前有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平台
分享到:
相关推荐
根据传输方式的不同,视频点播系统大致可以分为两大类:基于有线电视线路传输的点播方式和基于计算机网络传输的点播方式。此外,按照服务模式的不同,视频点播系统又可以分为基于文件共享的服务模式和基于流媒体服务...
基于RTSP协议网络监控系统的研究与实现.pdf
本文主要介绍了基于RTSP协议的实时视频服务器实现方案,该方案通过Linux系统、LIVE库和FFMpeg库实现了实时视频图像的网络传输。下面是相关知识点的详细解释: 1. RTSP协议: RTSP(Real-time Streaming Protocol)...
### 基于RTSP的流媒体视频服务器的设计与实现 #### 一、引言 随着信息技术的迅速发展,视频监控系统已经从传统的模拟信号转向数字化处理方式。数字视频监控相较于传统的模拟监控拥有诸多优势,比如更高的清晰度、...
在互联网上,RTSP常用于点播和直播服务,允许客户端远程控制服务器上的媒体数据流。这个"rtsp.rar"压缩包包含了一个C++和C语言实现的RTSP协议示例,对于理解RTSP协议的工作原理和编程实现具有很好的参考价值。 RTSP...
总结起来,实现"rtsp流视频实现网页播放"需要对RTSP协议、流媒体服务器、前端音视频处理以及WebRTC有一定理解,并结合如Streamedian这样的工具进行适配和转换。这个过程涉及到的技术栈广泛,对于前端开发者来说,是...
总结,通过Qt结合RTSP和FFmpeg,我们可以构建一个功能丰富的视频流播放器。这种技术在远程监控、视频会议、在线教育等领域有着广泛的应用。理解并掌握这些知识点,有助于开发者在实际项目中实现更复杂的多媒体处理...
### RTSP协议的实时视频服务器实现 ...总之,基于RTSP协议的实时视频服务器实现,借助于MPEG-4编码技术和开源库的支持,为实时视频传输提供了一种高效、可靠的解决方案,具有广阔的应用前景和深远的实践意义。
本项目"基于vlc源码实现rtsp播放视频"是基于VLC的源代码,专门为Android设备定制,以支持RTSP流媒体的播放。下面将详细讲解实现这个功能所涉及的关键知识点。 首先,我们需要了解**RTSP(Real Time Streaming ...
在本文中,我们将深入探讨如何在基于Rockchip的RK3399平台上,利用Multi-Processing Packet (MPP) 框架实现RTSP(Real-Time Streaming Protocol)视频流的硬件解码,特别是针对H.264编码格式。MPP是Rockchip公司设计...
JMF提供了对RTSP和RTP的API支持,而Xuggler则是一个强大的音视频处理库,可以方便地进行编码、解码以及流处理。 4. RTP/TCP与RTP/UDP模式 RTP/TCP模式下,RTP数据包被封装在TCP连接中,保证了数据的可靠传输,但...
本篇文章将深入探讨一个基于C/S(Client/Server)架构的视频点播系统,该系统运用了动态皮肤库和MFC(Microsoft Foundation Classes)设计来优化用户界面,实现高效的数据交换。 首先,C/S架构是计算机网络中常见的...
js播放rtsp监控视频 vue也实用 流畅度不错js播放rtsp监控视频 vue也实用 流畅度不错js播放rtsp监控视频 vue也实用 流畅度不错js播放rtsp监控视频 vue也实用 流畅度不错js播放rtsp监控视频 vue也实用 流畅度不错js...
本项目“基于live555实现的rtsp点播客户端,并将实时视频流转存为H264文件”旨在创建一个能够通过RTSP协议向服务器请求点播服务的客户端程序,并将接收到的H264编码的视频流保存到本地文件。 首先,让我们深入理解...
RTSP(Real Time Streaming Protocol),参考标准为RFC2326,实时流传输协议,是TCP/IP协议体系中的一个 应用层协议提供播放、暂停、后退、前进等操作。 主要用来控制具有实时特性的数据的发送,但其本身并不用于...
主线程负责RTSP和编码通道的初始化或关闭工作。流程如下: 1. **RTSP初始化**:绑定RTP端口,申请数据缓冲区。 2. **编码通道初始化**:设置硬件接口的数据输入通道和编码通道的属性,准备获取码流信息。 3. **启动...