1 引言
当今社会,仅仅传输文字和图像信息已经不能满足现代社会发展的需要,音频和视频的多媒体信息成为网络上重要的传输内容。同时微软凭借其强大的研发实力和市场推广能力,使得Windows Mobile 操作系统及其开发工具成为了主流的智能手机软件开发平台。
2 系统的功能及总体结构
本文主要阐述基于Mobile 的手机流媒体实时图像浏览客户端的软件设计,此软件是通过软件仿真实现的一个基于Windows Mobile的流媒体系统。流媒体要求能够一边收取网络上的大量音视频数据,将数据解码,一边还要进行显示。因此多媒体系统中的流媒体的功能包括:
(1) 从网络上接收数据包,收集传来的各种数据和指令。
(2) 对其进行分析、处理,将数据进行解码以便交给设备进行输出。
(3) 将从解码模块传过来的处理后的数据通过播放器进行显示。
3 主要模块的设计与实现
本文应用流媒体技术、网络通信技术设计了一个基于智能手机的实时流媒体传输系统框架,并针对组成该系统的重要模块进行探讨和研究。基于RTP/RTCP 协议的流媒体传输组件,实现了图像浏览的网络数据传输、解码和显示等功能,为以后开发出有完善功能的应用系统作了铺垫。
本系统中的实时流媒体图像浏览需要包括如下模块:网络接收模块、解码模块、显示模块、操作控制模块,根据平台的结构和工作原理,系统的工作流程如图1 所示。
3.1 网络接收模块
本系统中设计了智能手机上的RTP 接收,针对智能手机处理速度的限制,在该模块中设计了一个缓冲区用于平滑网络上所接收的数据和智能手机处理速度之间的瓶颈。同时Mobile操作系统支持TCP/IP 协议,因此可以使用TCP/IP 协议进行网络方面的通信和图像数据的传输。RTP 接收数据流程图如图2 所示。
3.2 解码模块
音/ 视频以大量的数据进行传输,可能会造成网络堵塞。为了减少网络传输量,那么在不会影响音视频显示效果的前提下,对数据进行了压缩和编码处理,可以大大的减少数据量。因此,在接收到数据以后,对完整的音/ 视频数据要进行对应的解码,才能使图像正确无误的显示出来。
3.3 显示模块
本系统中采用Direct-Show技术来提供多媒体流高质量的捕捉与回放。下面就本系统中终端播放器的具体功能和实现,设计如下:
3.3.1 建立项目
使用Visual STudio 2008 的开发环境创建一个新项目,利用智能设备应用程序向导创建一个基于对话框的应用程序, 编译环境设置为Windows Mobile 6 ProfessiONalSDK,设备选择CHSWindows Mobile 6 ClassicEmulator 为智能设备的模拟环境。
3.3.2 新建一个CEric-MediaControl 类,用于封闭媒体文件播放等功能
CEricMediaControl 类是一个通用的C++ 类,无基类。
下面就来具体实现CEricMediaControl 类。
a.为CEricMediaControl 类添加私有变量,用于定义播放媒体文件播放所需的DSHOW接口。
b.定义媒体播放事件对应的WINDOWS 消息常量WM_GRAPHNOTIFY,定义如下:#define WM_GRAPHNOTIFYWM_USER + 101。
c.实现CEricMediaControl 类的构造函数和析构函数。在构造函数里,将DSHOW相关的接口初始化为NULL,并初始化COM环境;在析构函数里,释放DSHOW 接口并释放COM环境。
d.为CEricMediaControl 类添加InitDShow和UnInitDShow两个私有方法。
e.为CEricMediaControl 类添加4 个共有方法,供外部调用。这4 个方法分别为OpenFile、VideoRun、VideoPause、VideoStop。f. 为类CEricMediaControl类添加7 个共有的方法,用于设置媒体播放属性以及得到媒体播放器的属性。这7个方法分别为FitVideoWindow、FullScreen、Get-FullScreenStatus、GetMediaEvent、SetPositions、GetDuration。
3.3.3 设计媒体播放器的主窗口
根据媒体播放器上的样式,对话框上的控件及其属性设置如表1 所示。
至此,媒体播放器就编写完成了,编译并部署到模拟器中,即可实现流媒体实时图像的浏览了,同时可以作为本地媒体播放器使用,通过“打开”按钮选择播放本地媒体文件。
4 结语
随着手机市场的不断增长和3G 网络业务的快速发展,针对智能手机音/ 视频图像的传输,本文通过流媒体技术以及网络编程的研究,实现了在Mobile 操作系统下实时图像的传输及浏览。这个实时流媒体传输系统经过进一步完善后,将可以推广到更多场合中,得到更多的应用,例如:视频会议、远程教学等,具有实际应用价值。