用于在web浏览器上播放媒体流的方法和设备与流程

文档序号:11779018阅读:464来源:国知局
用于在web浏览器上播放媒体流的方法和设备与流程

本申请要求于2016年4月5日提交到韩国知识产权局的第10-2016-0041426号韩国专利申请以及于2016年6月3日提交到韩国知识产权局的第10-2016-0069468号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部合并于此。

与示例性实施例一致的设备和方法涉及一种用于在web浏览器上播放媒体流的方法和设备,更具体地讲,涉及一种用于在没有插件的情况下直接在web浏览器中对由相机捕获的视频和音频进行流传输的技术。



背景技术:

可通过经由互联网连接到各种类型的视频资源的多个用户装置来访问媒体内容。为此,在用户装置中安装web浏览器以通过使用超文本传输协议(http)来与服务器应用进行通信。然而,因为由于通过http请求和响应消息的重复的信息交换而发生开销,所以使用半双工方案的web浏览器不适于对媒体进行流传输。

根据图1所示的传统的http连接方法,在web浏览器15将连接请求消息(长期请求)发送到web服务器25之后,请求被web服务器25切换到请求挂起状态并且在web浏览器15与web服务器25之间建立连接。在这种状态下,web浏览器15将用于执行特定动作的命令(客户端动作)发送到web服务器25,web服务器25响应于客户端动作将响应消息发送到web浏览器15。例如,如果命令(客户端动作)是对于特定的视频进行流传输的请求,则响应消息将是视频包数据。当web服务器25将完成命令(长期请求完成)发送到web浏览器15时,此连接可断开。此后,如果web浏览器15意于另外请求流传输,则可重复上面的处理。

即,在使用传统的http连接方法的web服务器与web浏览器之间的通信方案中,每一个特定的事件均需要web服务器与web浏览器之间的连接,并且在特定的事件结束时该连接终止。因此,所述方案适合处理非连续事件(诸如连接到网页),但是不适合需要web服务器与web浏览器之间的连续连接的应用(诸如,视频流传输和音频流传输)。

因此,在web浏览器中安装各种类型的插件(例如,activex、netscape插件应用编程接口(npapi)、pepper插件应用编程接口(ppapi))以实现执行web浏览器与web服务器之间的网络连接的功能、对接收的视频进行解码的功能以及输出解码的视频的功能。具体地,网络相机通常具有能够接收并输出视频和音频的称为“web查看器”的特征。在用户没有安装软件(诸如,中央监控系统(cms)或者视频管理系统(vms))的情况下通过输入相机的网络地址而在远程位置处连接到网络相机时,该称为“web查看器”的特征允许自动安装插件,以使用户能够通过插件接收视频和音频。为了提供该特征,网络相机装备有能够提供web服务的web服务器。因此,在传统的web服务方法中,当装备有web浏览器的用户终端通过特定的统一资源定位符(url)连接到web服务器时,插件被自动安装并且可通过插件实现发送和接收视频和音频的功能。

然而,这种在web浏览器中安装插件的方法往往很少使用,因为它引起很多问题(诸如,安全漏洞、web浏览器的有限功能和过多的资源消耗)。另外,作为用于发送视频流的标准的其他示例,html5支持通过视频标签接收存储在远程源中的视频文件的功能,web实时通信(webrtc)、openwebrtc、http动态自适应流传输(mpeg-dash)等提供用于实时发送和接收视频的标准。

因此,由于近期排除插件技术的趋势,接收、播放和显示视频的功能可以根据由诸如html5、webrtc、openwebrtc和mpeg-dash的标准支持的方案来实现。然而,为了使用已经被广泛用作发送和接收视频的标准的实时传输协议(rtp)和实时流传输协议(rtsp)在web浏览器上处理视频,需要使用插件并且不可能在没有插件的web浏览器上根据rtp/rtsp来处理视频。然而,在由诸如网络相机或存储装置的系统资源限制的嵌入式系统中,实际上难以另外安装除rtp/rtsp之外的重协议(heavyprotocol)。

因此,在诸如网络相机、nvr/dvr、编码器/解码器和视频管理软件的技术领域中,需要设计一种能够在没有单独的插件的情况下使用rtp/rtsp通信方案在web浏览器上对媒体(视频和音频)进行流传输的技术。



技术实现要素:

示例性实施例至少解决上面的问题和/或缺点以及上面未描述的其他缺点。此外,示例性实施例不需要克服上面描述的缺点,并且示例性实施例可以不克服上面描述的任何问题。

一个或多个示例性实施例提供一种用于在web浏览器上对视频和音频进行流传输的技术,其能够在没有安装插件的情况下仅使用最小系统规格实现无延迟的流传输。

根据示例性实施例的一方面,提供一种用于接收从媒体服务单元发送的媒体流并在web浏览器上播放媒体流的媒体流播放设备,包括:传输模块,被配置为在传输层级与媒体服务单元建立通信连接;websocket模块,被配置为基于通信连接经由握手过程与媒体服务单元建立websocket连接,并在保持websocket连接的同时将websocket包发送到媒体服务单元或者从媒体服务单元接收websocket包;流传输模块,被配置为接收由websocket包携带的实时传输协议(rtp)包;媒体解码器,被配置为对从rtp包获得的媒体流进行解码以重构视频;输出装置,被配置为通过将重构的视频嵌入web浏览器中来将重构的视频显示在屏幕上。

根据另一示例性实施例的一方面,提供一种将由相机捕获的视频实时发送到媒体流播放设备的媒体服务单元,所述媒体服务单元包括:捕获装置,被配置为从视频拾取区域捕获视频;媒体编码器,被配置为对捕获的视频进行编码;媒体服务器,被配置为将编码的视频转换成rtp包;web服务器,被配置为在传输层级与媒体流播放设备建立通信连接,并且根据websocket协议将媒体流发送到媒体流播放设备。

根据另一示例性实施例的一方面,提供一种用于接收从媒体服务单元发送的媒体流并在web显示器上显示所述媒体流的方法,所述方法包括:在传输层级与媒体服务单元建立通信连接;基于通信连接经由握手过程与媒体服务单元建立websocket连接,并在保持websocket连接的同时将websocket包发送到媒体服务单元或者从媒体服务单元接收websocket包;接收由websocket包携带的rtp包;对从rtp包获得的媒体流进行解码以重构视频;通过将重构的视频嵌入web浏览器中来将重构的视频显示在屏幕上。

附图说明

通过下面的结合附图对示例性实施例的详细描述,上述和/或其他方面和特征将变得更加清楚,其中:

图1示出使用传统的http连接方法的web服务器与web浏览器之间的通信方案;

图2示出根据示例性实施例的整体系统;

图3示出定义用于装置之间的通信的分级架构的开放系统互连(osi)7层模型和传输控制协议/互联网协议(tcp/ip)4层模型;

图4是示出根据示例性实施例的媒体流播放设备的配置的框图;

图5是示出通过webcocket连接发送和接收数据的示例的序列图;

图6示出在媒体流播放设备与媒体服务单元之间发送和接收的websocket包的详细结构图;

图7是rtp协议的详细结构图;

图8是示出图4的流传输模块的详细配置的框图;

图9示出用于经由网络接口与媒体服务单元进行通信的通信包的结构;

图10是示出与图3的媒体流播放设备进行通信的媒体服务单元的配置的框图;

图11示出实现媒体流播放设备或者媒体服务单元的计算装置;

图12是示出媒体流播放设备中的流传输模块与媒体服务单元之间的rtsp设置过程的序列图;

图13是示出在图12的设置过程之后流传输模块从媒体服务单元接收rtp数据的处理的序列图;

图14是示出当不再需要流传输模块与媒体服务单元之间的连接时的断开过程的序列图。

具体实施方式

在下文中,将参照附图详细描述各种示例性实施例。提供描述中定义的事物(诸如,详细的结构和元件)以帮助全面理解示例性实施例。因此,显然,可以在没有那些具体定义的事物的情况下执行示例性实施例。贯穿说明书,相同的参考标号表示相同的元件。

图2示出根据示例性实施例的整个系统。

参照图2,根据示例性实施例的系统10包括能使各种客户端用户装置106至114与媒体服务单元202、204和206之间通信的网络50。网络50可包括直接或间接物理通信连接、移动连接网络、互联网、内联网、局域网(lan)、广域网(wan)、存储区域网络(san)以及用于连接两个或更多个其他系统的其他形式。媒体服务单元202、媒体服务单元204和媒体服务单元206中的每一个媒体服务单元包括适于向一个或多个客户端用户装置提供计算服务的计算或处理装置以及媒体流播放设备。例如,媒体服务单元202、媒体服务单元204和媒体服务单元206可包括可创建或存储媒体流并将媒体流发送到客户端用户装置的装置(诸如,网络相机、网络视频录像机(nvr)和数字视频录像机(dvr))。客户端用户装置106至114中的每一个客户端用户装置包括适于经由网络50与媒体服务单元202、媒体服务单元204和媒体服务单元206或其他计算用户装置交互的计算或处理装置。例如,客户端用户装置106至114可包括台式计算机106、移动电话或智能电话108、个人数字助理(pda)110、膝上型计算机112和平板计算机114。然而,系统10中还可包括另外的客户端用户装置。媒体服务单元202、媒体服务单元204和媒体服务单元206或者客户端用户装置106至114可包括:例如,用于处理命令的至少一个控制器、用于存储命令和数据的至少一个存储器以及能够经由网络50进行通信的至少一个网络接口。

这里,一些客户端用户装置108至114与网络50间接通信。例如,客户端用户装置108和客户端用户装置110基于小区网络与至少一个基站116进行通信。此外,客户端用户装置112和客户端用户装置114经由至少一个无线接入点118(诸如ieee802.11无线路由器)执行通信。上面的描述是示例性的并且每一个客户端用户装置可经由适当的中间客户端用户装置或网络直接或间接地与网络50进行通信。网络50实现高效的媒体流传输。一个或多个媒体服务单元202、204和206可支持通过websocket的媒体流传输。一个或多个客户端用户装置106至114可检测媒体服务单元202、204和206何时支持通过websocket的媒体流传输。当媒体服务单元202、204和206支持通过websocket的媒体流传输时,一个或多个客户端用户装置106至114可在媒体服务单元202、204和206中建立websocket连接,并且发送指示选择的媒体目标和流中的位置的初始请求。客户端用户装置106至114中的每一个客户端用户装置顺序地接收从媒体服务单元202、204和206提供的媒体流的段。

对于如图2中所示的客户端用户装置106至114与媒体服务单元202、204和206之间的通信,需要提供每一个网络接口和用于与其他网络接口交换数据的附加模块。图3示出定义用于装置之间的通信的分级架构的开放系统互联(osi)7层模型和传输控制协议/互联网协议(tcp/ip)4层模型。

tcp/ip模型是比用于解释网络中的连接处理的经典的osi模型(7层)更简化的模型,并且将连接处理分类为四个层。所述四个层是网络接口层61、互联网层62、传输层63和应用层64。tcp/ip模型的每一个层根据相似的功能和作用与osi模型相关联。例如,网络接口层61对应于osi模块的物理层41和数据链路层42。互联网层62对应于osi模型的网络层43,传输层63对应于osi模型的传输层44。此外,应用层64对应于包括osi模型的会话层45、表示层46和应用层47的组。tcp/ip模型在请求评议(requestforcomments,rfc)1122文档中具体地定义。

在tcp/ip模型中,网络接口层61与物理连接介质连接以实现长期演进(lte)、802.11(wlan)、802.3(以太网)或者任意其他适当的协议。互联网层62为用户装置提供连接lan或wan中的互联网层的服务。互联网层62可实现ipv4、ipv6或任意其他适当的协议。

传输层63用于建立用户装置之间的端对端连接。可以提及tcp和udp(用户数据报协议)作为传输协议的典型示例。此外,应用层64通常实现诸如http、rtp和ftp(文件传输协议)的通信协议。http用于可靠地发布诸如vod的内容,rtp用于实时内容流传输,ftp用于异步传输大容量存储数据。如在此使用的,术语“实时”是指在最小化媒体服务单元与媒体流播放设备之间的时间差的同时播放媒体流播放设备中的媒体。

图4是示出根据示例性实施例的媒体流播放设备100的配置的框图。可通过图2中的客户端用户装置中的任意一个来实现媒体流播放设备100,媒体流播放设备100接收从媒体服务单元发送的媒体流,并且在web浏览器上播放媒体流。媒体流播放设备100可被配置为包括网络接口120、传输模块130、websocket模块135、流传输模块140、媒体解码器150、视频渲染器160、web浏览器170和输出装置180。web浏览器170可以是具有与嵌入在媒体流播放设备100中的开放系统(os)(未示出)相似的级别的应用。此外,流传输模块140、媒体解码器150和视频渲染器160是例如由javascript实现并由web浏览器170和操作系统托管的java应用。此外,网路接口120、传输模块130和websocket模块135属于用于网络通信的通信模块,并且根据装置实现对应于操作系统(os)内核。

参照图4,网络接口120与物理连接介质进行接口连接,以在媒体流播放设备100与媒体服务单元200之间进行数据传输和接收。网路接口120对应于图3的tcp/ip模块中的网络接口层61。网络接口120中使用的物理连接介质可包括无线介质(诸如,长期演进(lte)、802.11(wlan)和902.15.3(wpan))和有线介质(诸如,802.3(以太网))。

传输模块130执行用于发在媒体流播放设备100与媒体服务单元200之间送和接收数据的传输控制,并且对应于图3的tcp/ip模型中的传输层63。传输模块130在媒体流播放设备100与媒体服务单元200之间建立传输层级的通信连接,以顺序地发送数据包并恢复传输错误以进行稳定的数据传输和接收。传输模块130支持tcp或udp协议以确保在媒体流播放设备100与媒体服务单元200之间的传输层级的websocket连接。tcp是用于在面向连接的模式下可靠地发布内容的协议,udp是用于连续地发布具有低开销的内容的协议。例如,作为websocket协议,tcp可被用于稳定地传输,而udp可被用于低开销传输。

websocket模块135基于传输层级的连接经由与媒体服务单元200的握手过程来建立websocket连接,并且在连续维持建立的websocket连接的同时,将websocket包发送到媒体服务单元200或者从媒体服务单元200接收websocket包。websocket模块135可在传输模块130中实现,并且可在与传输模块130分开的比传输模块130更高的级别来实现。

websocket是通过改进传统的半双工http通信经过tcp连接提供双向全双工通信信道的协议。websocket协议已经由互联网工程任务组(ietf)标准组织标准化为rfc6455。然而,标准化的websocket协议已经旨在作为通用协议,而缺乏用户期望的扩展功能。为了支持新的功能,允许在web浏览器中通过javascript等来扩展协议。

因为websocket连接位于比两个装置之间的现有输出层(tcp或udp)连接更高的级,为了使用websocket连接,应该首先在两个装置之间建立tcp传输连接。当经由例如三次握手过程在媒体流播放设备100与媒体服务单元200之间建立websocket连接时,通过发送websocket包来执行websocket通信。

图5示出通过websocket连接发送和接收数据的示例。根据作为html5标准的websocket协议来执行websocket连接。具体地,因为websocket连接持续支持双向通信,所以在网络相机的web服务器与用户终端装置的web浏览器之间没有断开连接的情况下连续发送和接收数据是可能的。

参照图5,媒体流播放设备100将tcp/ip连接请求消息发送到媒体服务单元200。当媒体服务单元200接收连接请求并将tcp响应消息(syn-ack)发送到媒体流播放设备100时,tcp/ip连接被建立。可通过一对本地tcp套接字和远程tcp套接字来形成tcp传输连接,并且每一个tcp套接字可至少通过诸如端口号和ip地址的标识符来定义。可选地,可在媒体流播放设备100与媒体服务单元200之间建立基于udp/ip的连接。

此后,当经由握手过程在媒体流播放设备100与媒体服务单元200之间建立websocket连接时,可以连续执行它们之间的数据传输和接收。即,媒体流播放设备100以传输websocket包(socket.send)的形式将媒体流传输请求发送到媒体服务单元200,媒体服务单元200以响应websocket包(socket.onmessage)的形式将媒体流发送到媒体流播放设备100。该处理可在媒体流播放设备100与媒体服务单元200之间连续地执行,直到媒体流传输停止或者完成为止。

图6示出在媒体流播放设备100与媒体服务单元200之间发送和接收的websocket包的详细结构。websocket包的开始部分可包括关于websocket包中包含的数据配置的元数据信息,websocket包的结束部分可包括实际净荷数据(应用级数据)。websocket包中的净荷数据的位置根据净荷数据的大小和是否使用掩码密钥(maskingkey)而变化。websocket包是websocket通信中将成帧的通信数据的基本单元。默认地,websocket协议可使用固定的端口80,但不局限于此。例如,端口443可被用于将websocket连接通过传输级安全(tls)进行通道传输。

在图3的tcp/ip模型中,websocket协议位于应用层64与传输层63之间。即,websocket协议位于属于传输层63的tcp或udp与属于应用层64的rtp/rtsp之间。默认地,图4的传输模块具有这样的结构:在其中,websocket协议被堆叠在诸如tcp或者udp的常规传输层协议上。

websocket通信至少向更高级的应用提供全双工通信,并通过在保持更低级的tcp或者udp传输的连接的同时减少开支来改进web浏览器与web服务器之间的通信。与在客户端装置与服务器装置之间选择地执行发送和接收的使用http的半双工通信不同,websocket通信是全双工通信并且同时执行发送和接收。此外,当通过websocket执行通信时,每单位消息发送较少的报头信息以减少传输期间的开销。此外,在不必交换用于从第一装置轮询第二装置的http请求和响应消息的情况下,保持第一装置与第二装置之间的更低tcp层连接是可能的。

再次参照图4,当在传输模块130中建立tcp/ip(或者udp/ip)和websocket连接时,可在媒体流播放设备100与媒体服务单元200之间连续发送和接收websocket包。传输模块130接收从媒体服务单元200发送的以websocket包的形式封包的媒体流并且将其发送到流传输模块140,或者将从流传输模块140发送的命令以websocket包的形式封包并且将其发送到媒体服务单元200。

流传输模块140响应于web浏览器170的请求而请求媒体服务单元200经由实时传输协议发送媒体流。流传输模块140在从媒体服务单元200接收包括媒体流的实时传输协议包的同时,根据实时传输协议控制媒体流的重放。

流传输模块140可使用例如实时传输协议(rtp)和实时流传输协议(rtsp)。rtp是诸如作为用于实时发送或者存储视频的标准的mjpeg、mpeg-4、h.264和h.265的协议。

图7示出rtp协议的详细数据结构。rtp协议被划分为报头和净荷。报头包括:指示rtp数据包的传输顺序的序列号、用于媒体的表示时间的同步的时间戳、指示用于数据流的同步源的同步源标识符(ssrc标识符)等。因为基于rtp的媒体流的包的大小是有限的,所以可在被划分为预定大小(例如,1.5kb)(分包(packetization))时发送媒体流。划分和发送的包在被流传输模块140接收之后被组合成单个视频帧(组包(depacketization))。此外,可类似地划分和发送一个音频帧,但是因为音频帧的数据量小于视频帧的数据量,所以可每个包发送一个音频帧。

rtsp是用于为了实时接收或存储视频而设置媒体服务单元200(例如,网络相机)与媒体流播放设备100之间的网络端口并且控制与重放相关联的命令(例如,播放、暂停、拆除、设置、选项、描述等)的协议。其中,“播放”是用于开始媒体流的命令,“暂停”是用于暂时停止开始的媒体流的命令,“拆除”是用于拆除或者销毁具体的媒体会话的命令。另外,“设置”是用于设置媒体会话参数的命令,“选项”是用于获得选项方法功能并允许以后的其他版本的命令,“描述”是用于获得使用指定的配置文件的媒体参数的命令。

如上所述,rtp协议是用于通过对媒体流进行分包的实际传输的协议,而rtsp协议是用于开始/结束传输或者控制已被发送的媒体流的重放的协议。

如图8所示,流传输模块140可被配置为包括:流传输会话模块142、流传输客户端144、客户端管理器146和组包模块148。因为构成流传输模块140的组件142、组件144、组件146和组件148中的每一个组件由html5标准支持的javascript编程,所以不需要用于在web浏览器170上实现流传输模块140的功能的单独的插件。

流传输会话模块142与媒体服务单元200形成会话,以经由实时传输协议可靠地接收正被发送的媒体流。因此,传输模块130可作为用于接收发送的媒体流或者发送从媒体流播放设备100发送的重放控制命令的端口。

流传输客户端144响应于客户端管理器146的请求而创建用于控制流传输的新的客户端模块,或者结束创建的客户端模块。此外,流传输客户端144接收从web浏览器170请求的与媒体服务单元200的连接命令或者从web浏览器170接收媒体流的重放命令,对命令进行分包,允许传输模块130将分包的命令发送到媒体服务单元200,并且经由传输模块130接收从媒体服务单元200发送的响应(媒体流)。当流传输客户端144从传输模块130中的websocket模块135接收并处理rtp包时,接收的rtp包被发送到组包模块148用于缓存,以创建数据帧(例如,视频帧或者音频帧)。

客户端管理器146响应于web浏览器170的请求在流传输客户端144中创建客户端模块,或者移除或销毁创建的客户端模块。即,客户端管理器146用于针对流传输客户端144的操作而创建并终止客户端模块。

如果媒体流作为划分的包从流传输客户端144被发送,则组包模块148将划分的包顺序地存储在缓冲器(未示出)中并将划分的包组合成一个完整的帧(组包)。如果在没有被划分成包的情况下发送媒体流,则该处理可被省略。因为形成视频流的视频帧由于其大小而很难以单个包的形式发送,所以通常被划分并发送。然而,因为音频帧具有相对小的大小,所以可以以单个包的形式来发送音频帧。

由流传输模块140创建的视频帧和音频帧被提供给媒体解码器150。媒体解码器150至少包括用于对根据视频编码标准(诸如,mjpeg、mpeg-4、h.264和h.265)编码的媒体流(特别地,视频帧)进行解码的视频解码器。媒体解码器150还可包括用于对根据音频编码标准(诸如,mp3(mpeg层-3)、g.711、g726、ac3(音频编解码器编码3)、dts(数字影院系统)、flac(自由无损音频编解码器)和aac(高级音频编码))编码的媒体流(特别地,音频帧)进行解码的音频解码器。媒体解码器150可包括ffmpeg功能,并且通过html5标准支持的javascript进行编程。因此,对于媒体解码器150的功能,不需要单独的插件。ffmpeg是一种用于提供能够转换视频和音频并设置各种选项的灵活性的完整的跨平台解决方案。例如,ffmpeg对关于输入视频帧的诸如比特率、帧率、显示视频的分辨率、纵横比和剪辑执行各种转换和处理。因为ffmpeg是视频/音频解码器的示例,所以可使用也能够通过javascript实现的另一视频/音频解码器。

如上所述,媒体解码器150默认具有用于对从媒体流播放设备100发送的编码的视频和音频进行解码的功能。媒体解码器150还可包括用于对媒体流播放设备100与媒体服务单元200之间的双向音频通信的媒体流播放设备100捕获的音频进行编码的音频编码器(未示出)。因此,由媒体流播放设备100编码的音频可被发送到媒体服务单元200并作为由媒体服务单元200中的捕获装置270将要监视的区域的警报输出到外部。

在媒体解码器150中处理并重构的视频数据被输入到视频渲染器160,以被转换成能够在显示器上显示的视频信号,并且视频信号被输入到web浏览器170。视频渲染器160可以是将视频的2d或3d表示定义为标准的应用程序接口(api),并且包括诸如作为每个操作系统(os)的独立功能的透明度、抗锯齿、纹理映射和像素操纵的视频处理功能。作为视频渲染器160,directdraw、d2d、d3d、opengl、gdi+等是公知的,但是这些需要单独的插件来实现。因此,优选地使用没有单独插件的在html5中支持的web图像库(webgl)。webgl是能够通过javascript编程语言实现的基于web的图形库,并且提供webgl使得交互式3d图形可被用于具有兼容性的web浏览器中。

因此,由视频渲染器160处理的视频信号被嵌入在web浏览器170中,并且嵌入的视频被发送到输出装置180并在屏幕上输出为用户能够视觉识别的视频。web浏览器170可通过公知的internetexplorer、chrome、firfox、safari、、edgebrowser等来实现,并且可以是不支持插件的浏览器。输出装置180包括能够表示视频的显示装置(诸如,lcd、led和oled)。

同时,作为能够在web浏览器170中显示的音频信号,从视频解码器150输出的音频信号通过例如html5标准的ioapi被提供给web浏览器170。因此,与视频同步嵌入web浏览器170中的音频最终通过输出装置180输出,使得用户可以通过听来识别。输出装置180可包括音频输出装置(诸如,音频接收器、放大器和扬声器)。

图9示出用于经由网络接口120与媒体服务单元200进行通信的通信包的结构。当rtp报头94被添加到与媒体流95对应的rtp净荷时,它变为rtp包。rtp包与websocket净荷相同,并且websocket报头93被添加到websocket净荷以产生websocket包。websocket包与tcp净荷相同,并且tcp报头92被添加到tcp净荷以产生tcp包。最终,tcp包与ip净荷相同,并且ip报头91被添加到ip净荷以最终产生通信包,即,ip包。因此,在媒体流播放设备100和媒体服务单元200中执行完成ip包的处理和删除每一个报头的处理。

当经由网络接口120接收到ip包时,在传输模块130中处理ip报头91和tcp报头92,并且将tcp净荷或websocket包发送到websocket模块135。websocket模块135将通过处理websocket报头93生成的rtp包从websocket包发送到流传输模块140。流传输模块140通过处理rtp包中的rtp报头94来恢复媒体流。如在此使用的,已经示出了作为用于发送websocket包的较低的协议的tcp,但是可以使用udp或http通道代替tcp。此外,已经描述了rtp包变为websocket净荷,但是rtsp包可变为websocket净荷。

在图4示出的媒体流播放设备100中,因为经由基于html5的websocket协议来执行媒体流播放设备100与媒体服务单元200之间的通信,所以可通过html5中支持的javascript代码来实现负责rtp/rtsp传输和接收控制的流传输模块140、负责解码视频/音频的媒体解码器150以及负责解码的视频的显示处理的视频渲染器160。因此,可在没有如传统情况那样单独安装插件(诸如,npapi或activex)的情况下,在web浏览器中实现媒体的实时流传输和播放。

根据示例性实施例,当通过javascript实现用于rtsp控制的websocket程序时,例如,可以表示以下伪代码。

图10是示出与图3的媒体流播放设备100进行通信的媒体服务单元200的配置的框图。媒体服务单元200可包括网络接口220、web服务器230、媒体服务器240和媒体存储器250。媒体服务单元200还可包括媒体编码器260和捕获装置270。

捕获装置270将输入的视频和音频转换为电信号(模拟或数字信号)以生成视频信号和音频信号,并将生成的视频信号和音频信号发送到媒体编码器260。用作与媒体解码器150对应的元件的媒体编码器260至少包括用于根据视频编码标准(诸如,mjpeg、mpeg-4、h.264和h.265)对输入的视频信号进行编码的视频编码器。媒体编码器260还可包括用于根据音频编码标准(诸如,mp3、g.711、g.726、ac3、dts、flac和aac)对输入的音频信号进行编码的音频编码器。

通过该处理,在媒体编码器260中生成的编码的媒体或媒体流被存储在媒体存储器250中。媒体存储器250可存储易失性媒体和非易失性媒体二者以及各种物理类型的媒体(诸如,磁性存储介质、光学存储介质、硬盘驱动(hdd)、固态驱动(ssd)和闪存)。媒体存储器250可存储由媒体编码器260生成的用于长期存储的媒体流,或者临时存储用于支持媒体服务器240的流传输的媒体流。

媒体服务器240将从媒体存储器250提供的媒体流转换为可通过网络发送的媒体流的形式。媒体服务器240支持rtp/rtsp协议。例如,基于从媒体流播放设备100发送的rtsp包,媒体服务器240生成rtp包并控制rtp包向媒体流播放设备100的传输。rtp包可被配置为如图6中所示。

web服务器230托管由媒体流播放设备100获取的web内容。在这种情况下,可由web服务器230提供任何种类的数据和服务。因此,媒体流播放设备100的web浏览器170可访问至少部分地由web服务器230提供的服务或内容。web服务器230可通过使用websocket协议来处理媒体流播放设备100的连接和请求。

web服务器230基于websocket将媒体流(由媒体服务器240生成的rtp包)发送到媒体流播放设备100。为此,web服务器230支持作为基于html5的双向通信技术标准的websocket协议以及作为用于根据websocket协议发送websocket包(如图7所示)的较低协议的tcp/ip(或udp/ip)。web服务器230默认可以是任何类型,但是考虑到很难具有高规格的诸如网络相机的环境,优选使用需要较少资源并且具有小容量的类型(诸如,lighttpd)。

同时,代理套接字235可被另外设置在媒体服务器240与web服务器230之间。当在web服务器230与媒体流播放设备100的web浏览器170之间建立websocket连接时,web服务器230将websocket连接发送到代理套接字235。在这种情况下,代理套接字235不管它的连接方法,通过预定的套接字来中继媒体服务器240与web服务器230之间的数据传输和接收。因此,通过使用代理套接字235,媒体服务器240可不管连接是由udp、tcp、ws/tcp(基于tcp的websocket)或者ws/udp(基于udp的websocket)还是连接端口的类型建立的,通过固定的套接字模块发送和接收数据。

默认情况下,因为websocket基于tcp连接的http,所以代理套接字235可基于tcp套接字。为此,代理套接字235具有将由媒体服务单元200发送的通信数据编码成将要发送到媒体流播放设备100的websocket包,并且以媒体服务单元200期望的数据格式对从媒体流播放设备100接收的websocket包进行解码的功能。

网络接口220对应于媒体流播放设备100的网络接口120,并且与用于向/从媒体流播放装置100发送/接收数据的物理连接介质连接。网络接口220对应于图3的tcp/ip模型中的网络接口层61。在网络接口220中使用的物理连接介质包括无线介质(诸如,长期演进(lte)、802.11(wlan)和802.15.3(wpan))和有线介质(诸如,802.3(以太网))。

上面参考图4、图8和图10描述的每个组件可被实现为软件组件(诸如,在存储器的预定区域中执行的任务、类、子例程、进程、对象、执行线程或程序)或者硬件组件(诸如,现场可编程门阵列(fpga)或专用集成电路(asic))。另外,组件可以由软件组件和硬件组件的组合构成。组件可驻留在计算机可读存储介质上或者可分布在多个计算机上。

媒体流播放设备100或媒体服务单元200可在图11中描述的计算装置300中实现。计算装置300可具有任何合适的物理形式,包括但不限于一个或多个集成电路(ic)、印刷电路板(pcb)、移动手持装置(诸如,智能电话和平板计算机)、膝上型或笔记本计算机、分布式计算机系统、计算网格或者服务器。计算装置300可具有处理器301、内存303和存储器308。总线340可连接到显示器332、至少一个输入装置333和至少一个输出装置334。

组件可直接连接到总线340或者经由至少一个接口和适配器连接到总线340。总线340连接各种各样的子系统。总线340可具有存储器总线,存储器控制器,外围总线,局域总线以及它们的组合。

处理器或cpu301可选地包含用于指令、数据或计算机地址的临时本地存储的高速缓存存储器单元302。处理器301执行可由计算机读取的存储介质中的指令(或软件模块)。计算机可读存储介质可存储实现特定示例性实施例的一些软件模块(例如,图4的130、135、140、150、160和170以及图10的230、235、240、260),并且处理器301可执行存储的软件模块。

内存303可包括,但不限于,随机存取存储器304、只读存储器305以及它们的任意组合。内存303还可包括具有启动计算装置300所需的基本例程的基本输入/输出系统(bios)。

存储器308可被用于存储操作系统(os)309、exec310(可执行文件)、数据311、api应用312(应用程序)等。存储器308可包括硬盘驱动、光盘驱动、固态存储器装置或者上述的任意组合。

计算装置300可包括输入装置333。在一个示例中,计算装置300的用户可经由输入装置333将命令和/或其他信息输入到计算装置300中。输入装置333的示例包括,但不限于,字母-数字输入装置(例如,键盘)、点击装置(例如,鼠标或触摸板)、触摸板、操纵杆、游戏手柄、音频输入装置(例如,麦克风、语音响应系统等)、光学扫描器、视频或静止相机(例如,相机)以及它们的任意组合。输入装置333可经由各种输入接口323中的任意接口与总线340进行接口连接,其中,输入接口323包括但不限于串行、并行、游戏端口、usb或者上述的任意组合。

当计算装置300连接到网络330时,计算装置300可与其他装置(例如,移动装置和企业系统)通信。可通过网络接口320发送去往计算装置300的通信和来自计算装置300的通信。例如,网络接口320可以以一个或多个包(例如,ip包)的形式从网络330接收传入的通信(诸如,来自其他装置的请求或响应),计算装置300可将传入的通信存储在内存303中以备处理。计算装置300可以以一个或多个包的形式将传出的通信(诸如,对其他装置的请求或响应)存储在内存303中,并且可将传出的通信发送到网络330。

网络接口320的示例可包括,但不限于,网络接口卡、调制解调器以及它们的任意组合。网络330或网段330的示例可包括,但不限于,广域网(wan)、局域网(lan)、电话网络、两个计算装置之间的直接连接以及它们的任意组合。网络(诸如,网络330)可采用有线通信模式和/或无线通信模式。

由处理器301执行的软件模块的结果可通过显示器332显示。显示器332的示例可包括,但不限于,液晶显示器(lcd)、有机液晶显示器(oled)、阴极射线管(crt)、等离子体显示器以及它们的任意组合。显示器332经由视频接口322链接到总线340,并且图形控制器321可控制显示器332与总线340之间的数据的传输。

计算装置300还可包括一个或多个其他外围输出装置334,其他外围输出装置334包括,但不限于,音频扬声器、打印机以及它们的任意组合。这样的外围输出装置可经由输出接口324连接到总线340。输出接口324的示例可包括,但不限于,串行端口、并行连接、usb端口以及它们的任意组合。

图12至图14是根据示例性实施例的由流传输模块140和websocket模块135实现媒体服务单元200、rtsp控制和rtp传送的序列图。流传输客户端144可生成rtsp客户端实例和rtsp配置文件信息,并管理认证信息。websocket模块135可执行与websocket相关的功能,并且可用于通过流传输客户端144传送rtsp命令并接收其响应。流传输客户端144中的连接序列按顺序包括:1)传送模块的初始化,2)rtsp响应和rtp响应回调的注册,3)描述命令的传送(描述涉及终端装置的功能、属性和规范的信息),以及4)rtp会话和设置命令的初始化。实线指示的箭头表示特定命令,虚线指示的箭头表示对特定命令的响应和确认。

图12示出流传输模块140与媒体服务单元200之间的rtsp设置过程。当web浏览器170请求客户端管理器创建rtsp客户端(操作s1:创建rtspclient)时,客户端管理器146使流传输客户端144创建新的rtsp客户端(操作s2:新的rtspclient)。在创建新的rtsp客户端之后,web浏览器170为流传输模块140设置rtspurl并执行认证(操作s5:设置rtspurl,认证)。因此,web浏览器170处于可以向/从媒体服务单元200发送/接收数据的默认状态。

当web浏览器170请求流传输客户端144连接到媒体服务单元200(操作s7:连接)时,流传输客户端144请求websocket模块135发送新的传输(操作s9:新的传输),并设置回调(操作s11:设置回调)。此外,当流传输客户端144将rtsp命令发送到websocket模块135(操作s13:发送rtspcommand)时,websocket模块135将描述命令发送到媒体服务单元200(操作s14:描述命令)。然后,当流传输客户端144将后续rtsp命令发送到websocket模块135(操作s18:发送rtspcommand)时,websocket模块135将设置命令发送到媒体服务单元200(操作s19:设置命令)。因此,当websocket模块135从媒体服务单元200接收到设置响应(操作s21:设置响应)时,websocket模块135将rtsp响应发送到流传输客户端144(操作s22:rtspresponse)。

然后,流传输客户端144将rtsp会话的创建命令发送到流传输会话模块142(操作s24:创建rtspsession),并设置回调(操作s26:设置回调)。当向web浏览器170通知回调连接完成(操作s28:onconnectedcallback)时,完成流传输模块140与媒体服务单元200之间的rtsp设置过程,从而通过websocket在它们之间发送和接收rtp数据。

图13示出在图12的设置过程之后,流传输模块140从媒体服务单元200接收rtp数据的处理。当web浏览器170将媒体访问命令发送到流传输客户端144(操作s30:openmedia)时,流传输客户端144将rtsp命令发送到websocket模块135(操作s32:sendrtspcommand)。然后,websocket模块135将媒体播放命令发送到媒体服务单元200(操作s33:播放命令)。此后,当流传输客户端144从websocket模块135接收rtsp响应(操作s35:rtsprespond)时,流传输客户端144通知web浏览器170可以打开媒体(操作s37:onopenmedia)。

同时,媒体服务单元200根据操作s33的播放命令执行rtp数据到websocket模块135的传输(操作s39:rtp数据→onreceive)。在这种情况下,websocket模块135将rtp数据发送到流传输会话模块142(操作s40:sendrtpdata),并且流传输会话模块142将包含在rtp数据中的媒体流(媒体帧)发送到web浏览器170(操作s41:onframerecv)。在图13的处理中,即使在特定rtp数据的流传输期间,流传输客户端144可将rtsp命令发送到媒体服务单元200,从而执行rtp数据的控制(播放,暂停等)。

如果完成如图13所示的rtp数据的流传输,并且不再需要流传输模块140与媒体服务单元200之间的连接,则可如图14所示执行断开连接过程。当web浏览器170将rtsp关闭命令发送到流传输客户端144(操作s44:closertsp)时,流传输客户端144将rtsp命令发送到websocket模块135(操作s46:sendrtspcommand)。因此,websocket模块135将拆除命令发送到媒体服务单元200(操作s47:sendteardown),并且从媒体服务单元200接收ack(操作s48)。

当websocket模块135将rtsp响应消息发送到流传输客户端144(操作s49:rtspresponse)时,流传输客户端144将关闭媒体流传输的命令发送到web浏览器170(操作s50:onclose)。然后,当web浏览器170将去除已经创建的rtsp客户端的命令发送到客户端管理器146(操作s53:removertspclient)时,客户端管理器146将销毁rtsp客户端的命令发送到流传输客户端144(操作s54:销毁),并终止流传输模块140与媒体服务单元200之间的连接。

根据示例性实施例,由如图4、图8、图10和图11所示的块表示的组件、元件、模块或单元中的至少一个可被实现为执行上述各个功能的各种数量的硬件、软件和/或固件结构。例如,这些组件、元件、模块或单元中的至少一个可以使用可通过控制一个或多个微处理器或其他控制设备执行各个功能的直接电路结构(诸如,存储器、处理设备、逻辑单元、查找表等)。此外,可通过包含用于执行指定的逻辑功能的一个或多个可执行指令的模块、程序或一部分代码来具体地实现这些组件、元件、模块或单元中的至少一个。此外,这些组件、元件、模块或单元中的至少一个还可包括诸如执行各个功能的诸如中央处理单元(cpu)、微处理器等的处理器。

根据示例性实施例,可在web浏览器170中没有安装插件的情况下,从媒体服务单元200(诸如,网络相机)实时地对媒体进行流传输。然而,实现使用在没有安装插件的情况下对媒体进行流传输的方法和根据用户的选择通过安装插件经由专用web查看器对媒体进行流传输的方法二者的混合方法是可能的。根据上述示例性实施例,当用户从媒体流播放设备100访问媒体服务单元200时,媒体服务单元200可通过web服务器230确认用户环境信息(例如,web浏览器的版本、用户装置的分辨率等),并检查是否能够在用户环境中安装插件。如果能够在用户环境中安装插件,则web服务器230可向web浏览器170提供网页来检查是否安装插件并接收用户的选择。当用户选择插件安装时,用户可从web服务器230下载web查看器来安装在web浏览器170上,并且如传统方法那样使用安装的web查看器。另一方面,如果用户不希望安装插件,则在根据示例性实施例的媒体流播放方法控制没有插件的媒体流传输时播放视频/音频是可能的。

虽然为了说明的目的已经描述了示例性实施例,但是本领域的技术人员将理解,在不脱离如权利要求公开的本发明构思的范围和精神的情况下,可以进行各种修改、添加和替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1