一种基于嵌入式终端的在线流媒体服务方法 【技术领域】
本发明涉及一种基于嵌入式终端的在线流媒体服务方法, 属于嵌入式终端技术领域。 背景技术 随着计算机网络的发展, 网络带宽的提高, 所有的软件应用都作为一种服务提供 给用户, 云计算成为互联网时代全新的 IT 服务模式 ; 另一方面, 云计算技术的发展, 降低了 对上网终端设备的要求, 一种新的信息化模式 : “瘦客户端 + 宽带网 + 云计算服务器” 模式 成为未来的发展趋势和必然。 基于这种发展趋势, 上网终端设备越来越简单, 本发明中涉及 的嵌入式终端即属于瘦客户端, 系统移植嵌入式 Linux 操作系统, 通过开发具有针对性的 应用满足用户需求。
嵌入式终端是一种常见的嵌入式智能设备, 目前嵌入式系统已广泛应用于信息家 电、 手机、 工业控制、 医疗卫生、 航空航天等众多领域。 传统的嵌入式应用开发都是基于非常 典型的 C/S(Client/Server, 客户端 / 服务器 ) 架构的应用, 然而随着网络处理能力的提高, 以桌面为核心的任务处理转变为以网络为核心的任务处理, 人们可以利用互联网实现自己 想完成的一切处理任务, 软件应用的业务逻辑完全在服务器端实现, 网络成为传递服务、 计 算和信息的综合媒介, B/S(Browser/Server, 浏览器 / 服务器 ) 模式随着 Internet 技术的 兴起成为主流的服务模式, 是对 C/S 模式的一种改进。在这种模式下, 用户表现完全在 Web 服务器实现, 客户端只需要浏览器即可进行业务处理。
在嵌入式终端设备的应用中, 越来越多丰富的服务都需要与远程服务器进行连 接, 通过交互和服务器通信来实现应用, 比较典型的就是在线流媒体服务。 本发明中的嵌入 式终端硬件平台采用基于 ARM11 内核的 S3C6410 芯片作为处理器, 移植开源的嵌入式 Linux 操作系统固化嵌入式 WebKit 内核浏览器, 本地没有任何应用软件, 所有的应用都固化到浏 览器中, 如视频播放功能, 开机后系统直接进入浏览器界面, 嵌入式终端只能通过 Web 浏览 器与服务器进行交互, 所有的应用服务都通过服务器提供。
虽然在嵌入式 Linux 设备中采用 Web 支持已经解决了很多问题, 但是还有一些和 设备相关的特殊功能是 Web 支持不能提供的, 比如嵌入式设备中的视频播放功能, 并不是 HTML 和浏览器的标准所包含的, 而需要本地应用的支持 ; 而使用 Web 和 B/S 等技术来实现 我们的应用, 这些本地应用功能也要由 Web 来控制。因此, 嵌入式设备的的视频播放, 实际 是由本地应用实现的, 但是何时播放什么视频应该由 Web 来决定, 并且页面内容的编辑也 在网页 HTML 中体现, 不需要另外一套播放控制机制, 即实现 B/S 下的在线服务。
因此, 通过 web 方式提供在线的流媒体服务成为必然。而如 《中国西部科技》 杂志 第 08 卷第 01 期 2009 年 1 月 《嵌入式视频点播系统设计与实现》 文章, 《微计算机应用》 杂 志第 30 卷第 7 期 2009 年 7 月 《MPlayer 和 Qtopia 在嵌入式无线卡拉 OK 点播终端中的应 用》 文章所述, 均是基于 CS 模式的流媒体服务。而用于嵌入式 Linux 系统的 B/S 模式下的 在线流媒体服务少之又少, 本发明不仅实现了在嵌入式 Linux 系统环境下的在线流媒体服
务, 而且使用快捷方便, 直接操作 web 页面即可观看流媒体影片。 发明内容 针对现有嵌入式终端流媒体服务客户端服务器模式的不足, 本发明提出了一种基 于嵌入式终端的在线流媒体服务方法, 以实现由 C/S 模式到 B/S 模式的改进。 其目的在于解 决嵌入式终端观看影片基于 CS 模式的弊端, 基于 web 的在线流媒体服务方法可以解决客户 端 / 服务器模式下占用资源多、 升级维护复杂以及用户操作不方便的问题, 以实现基于 web 形式的在线的流媒体观看。
本发明的技术方案如下 :
一种基于嵌入式终端的在线流媒体服务方法, 由以下系统来实现, 该系统包括嵌 入式终端上的浏览器、 web 服务器、 数据库服务器、 mplayer 播放器、 流媒体服务器、 影片存 储服务器, 用户通过互联网登录到 Web 服务器, 通过浏览器访问 web 服务器上的流媒体服务 系统, web 服务器通过网络连接数据库服务器, 查询影片列表信息, 并将流媒体影片地址参 数传递给 mplayer 播放器, mplayer 播放器启动后通过 RTSP 协议连接流媒体服务器, 由流 媒体服务器提供视频流传输服务, mplayer 播放器在接收到数据后, 及时响应进行播放, 该 方法具体步骤如下 :
[1]web 服务器通过网页形式展现流媒体服务器上的流媒体列表, 接受用户通过表 单提交形式对节目进行点播 ;
[2]web 服务器接收到用户的观看请求后, 查找数据库服务器中的影片信息, 并从 数据库中提取流媒体影片的详细参数, 将详细参数添加到表单提交参数中 ;
[3] 嵌入式终端通过截取浏览器的请求信息, 判断符合特定表单形式的 request 行为, 并启动 mplayer 播放器 ;
[4]mplayer 播放器接收流媒体影片详细信息参数, 通过 RTSP 协议连接流媒体服 务器 ;
[5] 流媒体服务器获取视频文件信息, 返回视频流给 mplayer 播放器, 进行视频播 放。
上述所述的嵌入式浏览器作为 web 服务的客户端, 是进行 web 页面展现和在线视 频点播操作的媒介 ; web 服务器是系统关键服务器, 是用户与在线流媒体服务系统交流的 窗口, 用户访问最为频繁, 主要为用户提供节目浏览、 检索、 查询等服务 ; 数据库服务器 : 用 于存储管理节目信息, 为用户检索查询节目提供服务, 并存储视频节目的信息, 传输视频节 目参数给 mplayer 播放器, 并可以管理用户信息, 提供登录、 认证等常规 web 服务, 存储管理 日志记录, 为查询统计和维护提供服务 ; 嵌入式 mplayer 播放器 : 根据在线流媒体返回的流 媒体信息, 与视频服务器进行连接, 以 RTSP 协议播放视频服务器的视频信息 ; 流媒体服务 器采用 Darwin 流媒体服务器, 支持嵌入式设备的视频播放, 支持 RTSP 协议, 可以为终端用 户提供视频流传输控制服务, 并对流量负载提供完善的处理机制 ; 影片存储服务器 : 由于 视频服务对磁盘的数据输出速度要求比较高, 视频数据非常占用存储资源, 存储设备通常 选用专业的数据存储设备。
上述方法中的步骤 [1] 中的 web 服务器通过网页形式展现流媒体服务器上的流媒 体列表, 并接受用户通过表单提交形式对节目进行点播, 具体内容如下 :
a) 用户注册帐号, 登录在线流媒体服务平台 ;
b) 查看流媒体影片信息列表, 该流媒体影片信息列表包括分类列表、 搜索影片信 息列表 ;
c) 用户选择某一个流媒体影片, 查看影片详细信息 ; 影片详细信息以表单形式设 计, 包括影片名称、 发布时间、 演员信息、 影片简介, 表单提交地址设计为和系统编译表达式 一致的形式 ;
d) 根据个人喜好确定是否进行观看。
上述方法步骤 [2] 中的 web 服务器接收用户观看请求, 数据库服务器返回流媒体 影片的地址参数, 将参数添加到表单提交参数, 步骤如下 :
a.web 服务器在观看影片请求后, 连接数据库服务器, 以 HTTP/TCP 协议交换控制 信息 ;
b. 数据库服务器返回流媒体影片参数, 该参数包括流媒体服务器地址、 端口号、 影 片路径以及传输协议, 把需要传输的实时数据从原始信息中检索出来添加到表单提交参数 中;
c. 影片观看表单提交后, 嵌入式终端浏览器 URL 信息为相应的表单提交地址。
上述方法步骤 [3] 中的嵌入式终端网页中启动 mplayer 播放器的方法, 步骤如 下:
<1> 监听用户请求信息 request ;
<2> 根据请求信息 request 判断是否是表单提交, 是则转入下一步, 否则转入步骤 <1> ;
<3> 判断截获的请求信息 request 与系统编译表达式是否一致, 是则转入下一步, 否则转入步骤 <1> ;
<4> 嵌入式终端获取 URL 信息 ;
<5> 启动 mplayer 播放器 ;
<6> 播放流媒体。
上述启动 mplayer 播放器, 必先 “截获” 用户的请求, 然后使用本地代码来完成整 个启动过程。
上 述 截 获 用 户 HTML request 请 求, 即 表 单 提 交 动 作 的 action 属 性 值 的 URL request 信息, 需要修改 QWebView 的源代码, 而 QWebView 使用 QWebPage 来实现页面。当页 面发出一个 Navigation 的 request 时, QWebPage 会调用 acceptNavigationRequest 函数, 这个函数会在发生 Navigation Request 的时候获取到触发事件的页面元素、 request 内容 和类型。 因此要修改 QWebPage 类, 重写 acceptNavigationRequest, 在发现特定 request 内 容的时候, 做出相应的处理, 并将返回值设为 false, 浏览器忽略 request 请求。
所述的 URL 为统一资源定位符, 是英语 Uniform/Universal Resource Locator 的 缩写, 也被称为网页地址。
上述截获 request 与系统编译表达式进行匹配, 截获 request 后, 页面不进行跳 转, 而是通过系统获取 request 内容, 与系统编译好的表达式进行匹配, 通过判断 request. url().path() 与编译表达式是否一致, 若符合编译表达式, 启动 mplayer。
上述步骤 [3] 完成了嵌入式设备上用户提交网页上 “观看视频” 表单, 嵌入式终端设备启动 mplayer 播放器, 实现了本地代码被正确的调用运行。
上述方法步骤 [4] 中的 mplayer 播放器接受流媒体信息参数, 连接流媒体服务器, 步骤如下 :
1) 通过表单提交路径提取影片地址 ;
2) 系统将流媒体影片信息参数传递给 mplayer 播放器 ;
3)mplayer 播放器通过实时流协议连接流媒体服务器。
上述表单提交路径设计如下 : 即将流媒体影片信息的 form 的 action 属性设置为 特定形式, 系统编译是按照表单设计形式进行相应的源代码修改 ; 流媒体影片的参数传递 是通过在提交地址最后添加? # 参数结束实现的, 其中? # 后面添加流媒体路径信息, 如 rtsp://xxx.xxx.xxx.xxx : port/path/***.mp4。
上述 mplayer 接受影片参数, 相当于嵌入式终端系统执行以下命令 : ./mplayer rtsp://xxx.xxx.xxx.xxx : port/path/ 料 *.mp4, 即完成了 web 浏览器启动 mplayer 播放器 程序并传递流媒体参数信息给 mplayer 播放器的过程, 这些参数包括对 mplayer 播放器程 序进行初始化信息, 包括流媒体目录的信息、 视频数据的编码类型、 与视频音频检索相关的 服务器地址。 上述实时流协议指 RTSP 协议, 流媒体服务器指 Darwin 流媒体服务器, mplayer 播 放器连接流媒体服务器指 mplayer 得到服务器返回的流媒体文件的流媒体路径信息后通 过流媒体协议播放用户所请求的流媒体影片文件。
上述方法中的步骤 [5] 中的流媒体服务器获取视频频文件信息, 返回视频流资源 流给 mplayer 播放器播放, 步骤如下 :
{a} 根据流媒体存储路径挂载存储服务器路径, 连接视频存储文件 ;
{b}mplayer 播放器与流媒体建立双向流传输 ;
{c}mplayer 播放器进行视频流解码, 播放流媒体。
上述 mplayer 播放器与流媒体建立双向流传输采用实时流传输协议, 来交换视频 传输 ; 流媒体服务器采用实时传输协议将流媒体数据传输给 mplayer 播放器程序。
上述流媒体影片存储设备存放大量的视频节目, 当用户点播某一个节目时, 就与 用户端建立一个双向连接, 视频服务器以一定的速率向用户发送视频数据, 用户接收数据 的同时可以在本地实施播放节目。
本发明针对传统嵌入式终端流媒体服务客户端 / 服务器模式的不足而提出, 实现 了流媒体服务 C/S 模式到 B/S 的改进, 解决了客户端 / 服务器模式下系统占用资源多、 系统 维护复杂以及用户操作不方便的问题, 实现了基于 web 形式的在线的流媒体观看, 保证了 为用户提供优质服务。
附图说明
图 1 为本发明方法中所用系统的结构示意图。
其中 : 1 为浏览器, 2 为 web 服务器, 3 为数据库服务器, 4 为 mplayer 播放器, 5为 流媒体服务器, 6 为影片存储服务器。
图 2 为本发明方法的流程方框图, 其中 [1]-[5] 为其中的各个步骤。
图 3 为本发明方法步骤 [1] 的流程方框图, 其中 a)-d) 为其中的各个步骤。图 4 为本发明方法步骤 [2] 的流程方框图, 其中 a-c 为其中的各个步骤。 图 5 为本发明方法步骤 [3] 的流程方框图, 其中 <1>-<6> 为其中的各个步骤。 图 6 为本发明步骤 [4] 的流程方框图, 其中 1)-3) 为其中的各个步骤。 图 7 为本发明步骤 [5] 的流程方框图, 其中 {a}-{c} 为其中的各个步骤。具体实施方式
下面结合附图和实施例对本发明做进一步描述, 但不限于此。
实施例 :
本发明实施例如图 1 所示, 一种基于嵌入式终端的在线流媒体服务方法, 由以下 系统来实现, 该系统包括嵌入式终端上的浏览器 1、 web 服务器 2、 数据库服务器 3、 mplayer 播放器 4、 流媒体服务器 5、 影片存储服务器 6, 用户通过互联网登录到 Web 服务器 2, 通过 浏览器 1 访问 web 服务器 2 上的流媒体服务系统, web 服务器 2 通过网络连接数据库服务 器 3, 查询影片列表信息, 并将流媒体影片地址参数传递给 mplayer 播放器 4, mplayer 播放 器 4 启动后通过 RTSP 协议连接流媒体服务器 5, 由流媒体服务器 5 提供视频流传输服务, mplayer 播放器 4 在接收到数据后, 及时响应进行播放, 该方法如图 2 所示, 具体步骤如下 : [1]web 服务器通过网页形式展现流媒体服务器上的流媒体列表, 接受用户通过表 单提交形式对节目进行点播 ;
[2]web 服务器接收到用户的观看请求后, 查找数据库服务器中的影片信息, 并从 数据库中提取流媒体影片的详细参数, 将详细参数添加到表单提交参数中 ;
[3] 嵌入式终端通过截取浏览器的请求信息, 判断符合特定表单形式的 request 行为, 并启动 mplayer 播放器 ;
[4]mplayer 播放器接收流媒体影片详细信息参数, 通过 RTSP 协议连接流媒体服 务器 ;
[5] 流媒体服务器获取视频文件信息, 返回视频流给 mplayer 播放器, 进行视频播 放。
上述方法中的步骤 [1] 中的 web 服务器通过网页形式展现流媒体服务器上的流媒 体列表, 并接受用户通过表单提交形式对节目进行点播, 如图 3 所示, 具体内容如下 :
a) 用户注册帐号, 登录在线流媒体服务平台 ;
b) 查看流媒体影片信息列表, 该流媒体影片信息列表包括分类列表、 搜索影片信 息列表 ;
c) 用户选择某一个流媒体影片, 查看影片详细信息 ; 影片详细信息以表单形式设 计, 包括影片名称、 发布时间、 演员信息、 影片简介, 表单提交地址设计为和系统编译表达式 一致的形式 ;
d) 根据个人喜好确定是否进行观看。
上述方法步骤 [2] 中的 web 服务器接收用户观看请求, 数据库服务器返回流媒体 影片的地址参数, 将参数添加到表单提交参数, 如图 4 所示, 步骤如下 :
a.web 服务器在观看影片请求后, 连接数据库服务器, 以 HTTP/TCP 协议交换控制 信息 ;
b. 数据库服务器返回流媒体影片参数, 该参数包括流媒体服务器地址、 端口号、 影
片路径以及传输协议, 把需要传输的实时数据从原始信息中检索出来添加到表单提交参数 中;
c. 影片观看表单提交后, 嵌入式终端浏览器 URL 信息为相应的表单提交地址。
上述方法步骤 [3] 中的嵌入式终端网页中启动 mplayer 播放器的方法, 如图 5 所 示, 步骤如下 :
<1> 监听用户请求信息 request ;
<2> 根据请求信息 request 判断是否是表单提交, 是则转入下一步, 否则转入步骤 <1> ;
<3> 判断截获的请求信息 request 与系统编译表达式是否一致, 是则转入下一步, 否则转入步骤 <1> ;
<4> 嵌入式终端获取 URL 信息 ;
<5> 启动 mplayer 播放器 ;
<6> 播放流媒体。
上述方法步骤 [4] 中的 mplayer 播放器接受流媒体信息参数, 连接流媒体服务器, 如图 6 所示, 步骤如下 : 1) 通过表单提交路径提取影片地址 ;
2) 系统将流媒体影片信息参数传递给 mplayer 播放器 ;
3)mplayer 播放器通过实时流协议连接流媒体服务器。
上述方法中的步骤 [5] 中的流媒体服务器获取视频频文件信息, 返回视频流资源 流给 mplayer 播放器播放, 如图 7 所示, 步骤如下 :
{a} 根据流媒体存储路径挂载存储服务器路径, 连接视频存储文件 ;
{b}mplayer 播放器与流媒体建立双向流传输 ;
{c}mplayer 播放器进行视频流解码, 播放流媒体。