专利名称:一种在互联网发布和直播流媒体的系统的制作方法
技术领域:
本实用新型涉及网络技术领域,尤其涉及一种互联网流媒体的发布和直播技术。
背景技术:
互联网流媒体技术是采用流式传输的方式在互联网上传输多媒体文件,把连续的音视频等多媒体信息经过压缩处理后存储于网络媒体服务器,供互联网客户端在下载的同时回放,而无需等待全部多媒体文件下载完成。实时流媒体直播是在采集音视频信息的同时,使用流媒体技术发布和传输正在采集的媒体信息,使客户端能够通过互联网低延时地回放正在采集的媒体信息。现有技术的互联网流媒体实时直播的实现主要包括如下环节采集和编码(Encode):采集音视频信息,采用具体编码算法,对音频和视频信息进行压缩;多路合并(Muxing):采用具体容器格式,将编码后的音视频信息合并于具体的流媒体文件容器;发布(Publish):采用具体传输和控制协议,将文件流式传输于网络媒体服务器;交付(Delivery):采用具体传输和控制协议,客户端下载网络媒体服务器的流媒体;回放(Playback):客户端根据流媒体的文件容器格式和音视频信息的编码算法进行解码(Demuxing和Decode)并还原呈现所采集的音视频信息。现有技术在互联网,尤其是移动互联网,流媒体实时直播的各个环节所广泛采用的技术、标准和方案如下音频编码方式有AMR、AAC、MP3、Vorbis等;视频编码方式有MPEG-2、MPEG-4、H. 263、H. 264、VP6/8 等;文件容器包括MP4、3GPP、FLV、ASF、WebM、MPEG_TS等;流媒体发布所采用的方式完全依赖于流媒体服务器的实现,依据不同的流媒体服务器实现,可能采用的协议有RTP、RTMP、或私有协议;流媒体交付所广泛采用的协议有RTP/RTSP, RTMP、MMS等;客户端回放采用各类媒体播放器实现,如Flash Player, HTML5所支持的浏览器内置播放器、iPhone/iPad和Android等移动平台内置播放器及其他播放器应用程序。现有技术中RTP协议采用UDP传输,涉及防火墙穿越等复杂性;RTMP协议是Adobe公司实用新型的基于TCP传输的低延时协议,默认端口为1935,而且其协议实现细节并没有公开,因此完全依赖于其服务器和客户端实现;同样,MMS依赖于微软的媒体服务器和客户端实现,采用M)P/TCP传输,默认端口为1755,同样涉及防火墙穿越的复杂性。以上这些交付协议在保证QoS (服务质量)时,均需采用较为复杂的控制协议,需要专有的流媒体服务器实现,以提供服务。因此,针对现有技术的不足,苹果等公司又提出了一些基于HTTP协议的流媒体交付协议如,Http Live Streaming (请参照图 l)、Http Dynamic Streaming 等。基于 HTTP协议的流媒体交付协议在交付媒体内容时,只依赖于普通的HTTP服务器,使用80端口,不涉及防火墙穿越的复杂性,同时可以采用HTTP协议族所支持的加密或证书等安全措施。其中相比采用了更多私有实现方式的Http Dynamic Streaming, Http Live Streaming的方案更为简洁,目前在iPhone/iPad和Android 4.0以上的移动客户端都有内置播放器的支持,并且有越来越多的播放器开始支持这一协议。Http Live Streaming提供了最为简洁和优雅的,基于HTTP的流媒体交付方案。Http Live Streaming是由苹果公司提出并实现的基于HTTP的流媒体通信协议。该协议将整个媒体流分成一组连续的可供HTTP下载的小文件分段,分段以MPEG-TS容器格式承载,满足播放器流式回放的要求;同时提供以m3u8为标准格式的索引,作为这一组分段的索引。客户端通过HTTP服务器请求m3u8播放列表,根据列表中的索引,依次下载分段。在下载完一个分段后,客户端即可边下载后续分段,边进行播放。通常每个分段定位为承载10秒的音视频媒体,可以保证在客户端播放的连续性及合理的资源开销,并能够保持延时在30秒左右。另外,服务器可以根据不同的网络速率提供可选的不同速率的分段组,以适应不同网络速率的要求。播放列表可以在提供访问的同时不断进行更新,以实现实时直播。由于Http Live Streaming仅使用标准Http协议,因此与RTP不同,具备穿越防火墙和代理服务器的能力;同时能够满足⑶N (Content Delivery Network)部署的需求。Http Live Streaming系统由服务器端的分段程序、HTTP服务器和客户端组成(参见附图1)。服务器分段程序负责将已录制好的流媒体文件或实时媒体流进行分段,并生成播放列表;HTTP服务器为播放列表和分段文件提供HTTP请求服务;客户端通过HTTP请求获取播放列表和流媒体分段文件进行回放。但是,Http Live Streaming并没有定义和提供由媒体采集端向服务器实时发布流媒体的方法和系统。因此各种Http Live Streaming的发布仍然依赖于流媒体服务的具体实现,采用基于RTP、RTMP或私有协议的方式支持从采集端向媒体服务器实时发布流媒体。由此可见,Http Live Streaming还存在以下两个缺陷1.完全依赖于特定流媒体服务器的实现,及其所提供的客户端发布接口。对特定流媒体服务的引入破坏了 Http Live Streaming方案本身的简洁和优雅;依赖于具体客户端发布接口,造成采集端的实现和集成的复杂性;
2.在采用依赖于RTP/RTSP流媒体通信协议的发布方案时,其控制协议实现复杂,造成采集端和服务器端的实现和集成均具有复杂性,容错能力有限,系统不稳定。
实用新型内容针对上述现有技术的不足,本实用新型提供一种延时、健壮性、容错性好且能够简单地与采集端和客户端集成的完全基于HTTP协议体系的在互联网发布和直播流媒体的方法及系统。本实用新型解决其技术问题所采用的技术方案是一种在互联网发布和直播流媒体的系统,包括服务器端和播放客户端,其特征在于还包括发布客户端,用于实时读取和解析正在输出的多媒体文件,重新以设定的格式进行媒体流的合并,并按预设的流媒体数据分块时间生成流媒体数据分块,然后以HTTP方法上传至所述服务器;所述服务器端用于处理来自发布客户端的流媒体数据分块,储存流媒体数据分块并根据预设的流媒体数据分段时间构建流媒体数据分段文件;同时,服务器端生成对应流媒体数据分段文件顺序和储存位置的索引;[0017]所述播放客户端使用HTTP方法从服务器端获取所述索引,然后根据所述索引下载流媒体分段并同时对流媒体分段进行播放。优选的,所述的在互联网发布和直播流媒体的系统还包括媒体采集端,用于采集并生成媒体数据并把媒体数据传递至所述发布客户端。优选的,所述发布客户端包括媒体输入模块、发布客户端音频编码模块、发布客户端视频编码模块、发布客户端流媒体处理模块和发布模块;所述媒体输入模块读取音频流和/或视频流数据并把该音频流和/或视频流数据传输至所述发布客户端流媒体处理模块;所述发布客户端流媒体处理模块调用发布客户端音频编码模块和/或发布客户端视频编码模块对音频流和/或视频流数据重新编码并根据设定的格式进行媒体流的合并,并按预设的流媒体数据分块时间生成流媒体数据分块。优选的,所述服务器端包括网页服务模块、服务器流媒体处理模块和服务器储存模块,发布客户端使用HTTP方法与网页服务模块交互并上传所述流媒体分块;服务器流媒体处理模块根据设定的流媒体分段时间合并所述流媒体分块为流媒体分段并生成对应流媒体数据分段文件顺序和储存位置的索引,分别储存至服务器储存模块。优选的,所述播放客户端包括交付模块、播放客户端流媒体处理模块、播放客户端音频编码模块、播放客户端视频编码模块和播放模块;所述交付模块使用HTTP方法与所述服务器端交互并根据索引从服务器端下载流媒体分段文件,播放客户端流媒体处理模块对流媒体进行分解获取音频流和/或视频流,播放客户端流媒体处理模块调用播放客户端音频编码模块和/或播放客户端视频编码模块对音频流和/或视频流所述进行解码并通过播放模块进行播放。优选的,所述媒体采集端包括媒体采集模块、媒体处理模块、采集端音频编码模块和/或采集端视频编码模块,所述的媒体处理模块调用所述的采集端音频编码模块和/或采集端视频编码模块生成特定格式的媒体文件。
`[0023]优选的,所述的采集端集成于所述的发布客户端中。优选的,所述的服务器储存模块为分布式存储系统。与现有技术相比较,本实用新型的在互联网发布和直播流媒体的方法及系统具有如下有益技术效果完全基于HTTP协议体系,不依赖于专有的流媒体服务器实现,服务器端只需要HTTP服务器作为发布的目标和直播服务的提供方;能够低耦合、非侵入、简单的与采集端应用集成;易于在各种终端平台上实现,如iPhone/iPad、Android、Windows、Linux等终端平台;满足流媒体在线实时直播的延时低、健壮性好、容错性好等需求;能够支持在互联网大规模部署、支持CDN部署方式、具备可伸缩性;具备穿越防火墙和代理服务器的能力。
图1为现有互联网流媒体实时直播系统的结构图;图2为本实用新型在互联网发布和直播流媒体的方法的流程图;图3为本实用新型在互联网发布和直播流媒体的系统结构图;图4为本实用新型的发布客户端与服务器通信的时序图;图5为本实用新型的发布客户端与服务器端交互的软件流程图。
具体实施方式
下面将结合附图和具体实施方式
对本实用新型做进一步说明。请参照图3,本实用新型在互联网发布和直播流媒体的系统,包括发布客户端1、服务器端2和播放客户端3 ;发布客户端1,用于实时读取和解析正在输出的多媒体文件,重新以设定的格式进行媒体流的合并,并按预设的流媒体数据分块时间生成流媒体数据分块,然后以HTTP方法上传至所述服务器2 ;发布客户端I包括媒体输入模块11、发布客户端音频编码模块12、发布客户端视频编码模块13、发布客户端流媒体处理模块14和发布模块15 ;所述媒体输入模块11读取音频流和/或视频流数据并把该音频流和/或视频流数据传输至所述发布客户端流媒体处理模块14 ;所述发布客户端流媒体处理模块14调用发布客户端音频编码模块12和/或发布客户端视频编码模块13对音频流和/或视频流数据重新编码并根据设定的格式进行媒体流的合并,并按预设的流媒体数据分块时间生成流媒体数据分块。所述媒体输入模块11的音频流数据输出端与所述发布客户端流媒体处理模块14的音频流数据输入端连接,所述媒体输入模块11的视频流数据输出端与所述发布客户端流媒体处理模块14的视频流数据输入端连接,所述发布客户端流媒体处理模块14的流媒体分块输出端与所述发布模块15的流媒体分块输入端连接。所述服务器端2用于处理来自发布客户端I的流媒体数据分块,储存流媒体数据分块并根据预设的流媒体数据分段时间构建流媒体数据分段文件;同时,服务器端生成对应流媒体数据分段文件顺序和储存位置的索引;服务器端2包括网页服务模块21、服务器流媒体处理模块22和服务器储存模块23,发布客户端I使用HTTP方法与网页服务模块21交互并上传所述流媒体分块;服务器流媒体处理模块22根据设定的流媒体分段时间合并所述流媒体分块为流媒体分段并生成对应流媒体数据分段文件顺序和储存位置的索引,分别储存至服务器储存模块23。所述网页服务模块21的流媒体分块输出端与所述服务器流媒体处理模块22的流媒体分块输入端连接,所述服务器流媒体处理模块22的流媒体分段输出端与所述服务器储存模 块23的输入端连接,所述服务器储存模块23的流媒体分段输出端与所述网页服务模块21的流媒体分段输入端连接。所述播放客户端3使用HTTP方法从服务器端2获取所述索引,然后根据所述索引下载流媒体分段并同时对流媒体分段进行播放;播放客户端3包括交付模块31、播放客户端流媒体处理模块32、播放客户端音频编码模块33、播放客户端视频编码模块34和播放模块35 ;所述交付模块31使用HTTP方法与所述服务器端2交互并根据索引从服务器端2下载流媒体分段文件,播放客户端流媒体处理模块32对流媒体进行分解获取音频流和/或视频流,播放客户端流媒体处理模块32调用播放客户端音频编码模块33和/或播放客户端视频编码模块34对音频流和/或视频流所述进行解码并通过播放模块35进行播放。所述交付模块31的流媒体分段输出端与所述播放客户端流媒体处理模块32的流媒体分段输入端连接,所述播放客户端流媒体处理模块32的音频流数据输出端与所述播放模块35的音频流数据输入端连接,所述播放客户端流媒体处理模块32的视频流数据输出端与所述播放模块35的视频流数据输入端连接。上述系统中,媒体输入模块11、发布客户端音频编码模块12、发布客户端视频编码模块13、发布客户端流媒体处理模块14和发布模块15、网页服务模块21、服务器流媒体处理模块22、服务器储存模块23、交付模块31、播放客户端流媒体处理模块32、播放客户端音频编码模块33、播放客户端视频编码模块34和播放模块35均可以是硬件模块或软件模块。上述系统还可以灵活跟采集设备整合所述的系统还包括还包括媒体采集端4,用于采集并生成媒体数据并把媒体数据传递至所述发布客户端1,所述媒体采集端4包括媒体采集模块41、媒体处理模块42 ;媒体采集端4还包括相应的采集端音频编码模块43和/或采集端视频编码模块44,所述的媒体处理模块42调用上述采集端音频编码模块43和/或采集端视频编码模块44生成特定格式的媒体文件,如3gpp、mp4、mov等;媒体处理模块42在输出媒体文件时可以是在生成完整的媒体文件之后直接输出整个媒体文件,也可以将完整的媒体文件按照特定的时间分段后进行传输;更优的,所述媒体处理模块42在生成部分媒体文件分段之后实时输出媒体文件分段。采集端4可以是单独的硬件模块,也可以是直接集成在发布客户端I内部的软件或硬件模块。采集端4输出的媒体文件写入采集客户端I本地Socket或写入管道或写入共享内 存或调用媒体输入模块11接入端口函数后,由所述的媒体输入模块11读取。在实际实施过程中发布客户端I的发布客户端流媒体处理模块14会重新以MPEG-TS容器格式进行媒体流的合并,并按Is的时间窗口生成流媒体分块。发布客户端I的发布模块15可以根据预定义规则生成或者请求网页服务器获取上传URL地址;发布模块通过附加URL参数或HTTP请求头部信息,声明所发布流媒体分段的开始和结束,以及上传流媒体分块的序号等附加描述信息;URL代表一个流媒体资源的位置,包括所发布流媒体在指定存储位置的路径和名字。网页服务模块21根据发布模块15的请求的处理状态,返回HTTP响应,响应以HTTP状态码表示处理状态,例如成功(200 )、拒绝访问(403/405 )、服务器错误(500 )等。服务器流媒体处理模块22会按照IOs的时间窗口生成流媒体分段,并依据HttpLive Streaming协议产生索引。服务器储存模块23除文件系统外,也可以其他采用分布式存储系统,如MongoDB\Redis等,从而满足提供直播的服务器端分布式部署需求;同时,可以将存储的流媒体分段文件和索引同步至DCN,采用DCN方案提供系统的伸缩性和扩展性。发布客户端和播放客户端对于HTTP服务器的访问,可以采用HTTP协议标准的安全措施进行写入保护,例如基本访问认证(Basic Access Authentication)、摘要访问认证(Digest Access Authentication)和 HTTPS 等。请参照图3,以下描述本实用新型系统的具体硬件实施方式发布客户端I为具体的计算机终端或移动终端平台,使用的操作系统可以是ios>Android>Windows或Linux ;该发布客户端I包括媒体采集模块41、媒体处理模块42、采集端音频编码模块43、采集端视频编码模块44、媒体输入模块11、发布客户端音频编码模块12、发布客户端视频编码模块13、发布客户端流媒体处理模块14和发布模块15。所述采集模块41为摄像头、麦克风以及两者相应的控制程序;所述媒体处理模块42、采集端音频编码模块43和采集端视频编码模块44集成为一个摄像应用程序;所述媒体输入模块11、发布客户端音频编码模块12、发布客户端视频编码模块13、发布客户端流媒体处理模块14和发布模块15集成为一个发布客户端程序。服务器端2为服务器电脑,包括网页服务模块21、服务器流媒体处理模块22和服务器储存模块23 ;所述网页服务模块21为提供HTTP服务的HTTP服务器软件,如Apache、Lighttpd, Nginx等软件;所述服务器流媒体处理模块22为根据具体网页服务模块21的HTTP实现方法编写的流媒体处理插件;所述的服务器储存模块23为分布式存储系统。播放客户端3为体的计算机终端或移动终端平台,使用的操作系统可以是ios、Android、Windows或Linux ;所述播放客户端3包括交付模块31、播放客户端流媒体处理模块32、播放客户端音频编码模块33、播放客户端视频编码模块34和播放模块35 ;所述交付模块31为网页浏览器;所述播放客户端流媒体处理模块32、播放客户端音频编码模块33、播放客户端视频编码模块34和播放模块35集成为播放器软件,包括HTML5浏览器内置播放器、iPad/iPhone和Android等移动终端平台内置播放器、Flash Player及其他基于Windows或Linux个人终端平台的流媒体播放器应用。基于本实用新型的上述软硬件系统,本实用新型在互联网发布和直播流媒体的方法(如图2和图5所示)包括如下过程1.摄像应用程序生成并输出多媒体文件(或写入本地Socket、管道、共享内存等,或调用流媒体发布客户端接口函数);i1.发布客户端程序读取多媒体文件(或读取本地Socket、管道、共享内存等);ii1.发布客户端程序解析多媒体文件,分别获取音频流和视频流数据;iv.发布客户端程序根据MPEG-TS容器格式重新进行合并成为流媒体数据;V.发布客户端程序依据传输时间窗口设置,对合并的流媒体数据进行分块,产生流媒体数据分块;v1.发布客户端程序使用HTTP方法请求服务器电脑储存流媒体数据分块,以HTTP服务器软件指定的URL将流媒体数据分块上传至服务器电脑;vi1. HTTP服务器软件收到流媒体发布客户端的HTTP请求后,调用流媒体处理插件对该HTTP请求进行处理;vii1.流媒体处理插件根据服务器配置信息,如存储位置、流媒体数据分段时长等,合并流媒体数据分块为流媒体数据分段,并在分布式存储系统中指定的存储位置写入流媒体数据分段,同时生成对应流媒体数据分段文件顺序和储存位置的索引;ix. HTTP服务器软件对发布客户端程序请求的处理状态,返回HTTP响应,响应以HTTP状态码表示处理状态,例如成功(200)、拒绝访问(403/405)、服务器错误(500)等;X.播放客户端网页浏览器访问HTTP服务器软件,并根据指定URL请求索引,播放器根据索引下载流媒体数据分段,并在下载的同时播放流媒体数据分段文件所包含的音视频媒体流。图4是本实用新型的发布客户端与服务器通信的时序图,其过程描述如下发布客户端配置流媒体分段时长为10秒,流媒体分块时长为I秒;URL编写方案设计为http://{domain_name}/path/name ;HTTP请求URL参数部分或头部可以附加如下描述信息[0063]开始流 URL http: // {domain_name} /path/name command=start 结束流 URL http: // {domain_name} /path/name command=stop&segment=n&chunk=m,表示最后上传的流媒体分块是第η个流媒体分段的第m秒分块;传输流 URL http://{domain_name}/path/name command=trans&segment=n&chunk=m,表示当前上传的流媒体分块是第η个流媒体分段的第m秒分块;当η等于O是,表示上传第一个流媒体分段;当m等于O时,表示上传该流媒体分段的第一个分块,当m等于9时,表不上传该流媒体分段的最后一个分块;服务器端流媒体处理模块读取配置文件,获取服务器储存模块存储位置的根目录,例如/{root_dir};流媒体处理模块解析请求URL获取URL中的path和name ;流媒体处理模块解析请求URL获取URL参数并读取请求当command=start时,在/{root_dir}/path创建name. m3u8索引文件,并写入文件头;当command=trans&segment=n&chunk=m 时,在 / {root_dir} /path 将请求体数据写入文件name-n. ts,如果m=9时,在name. m3u8中加入第η个流媒体分段文件的索引;当command=stop&segment=n&chunk=m时,在name. m3u8写入文件结束标记,如果m不等于9时,在写文件结束标记前写入最后一个流媒体分段文件的索引。在写入成功时,通过网页服务模块返回HTTP 200响应;写入失败时,通过网页服务模块返回HTTP 500响应;授权失败时,通过网页服务模块返回HTTP 403响应;非PUT方法时,通过网页服务模块返回HTTP 405响应。与现有技术相比较,本实用新型的在互联网发布和直播流媒体的方法及系统具有如下有益技术效果完全基于HTTP协议体系,不依赖于专有的流媒体服务器实现,服务器端只需要HTTP服务器作为发布的目标和直播服务的提供方;能够低耦合、非侵入、简单的与采集端应用集成;易于在各种终端平台上实现,如iPhone/iPad、Android、Windows、Linux等终端平台;满足流媒体在线实时直播的延时低、健壮性好、容错性好等需求;能够支持在互联网大规模部署、支持CDN部署方式、具备可伸缩性;具备穿越防火墙和代理服务器的能力。上述实施例为本实用新型优选实施方式,凡其原理和基本结构与本实施例相同或近似的,均在本实用新型保护范围之内。
权利要求1.一种在互联网发布和直播流媒体的系统,包括服务器端(2)和播放客户端(3),其特征在于 还包括发布客户端(1)包括媒体输入模块(11)、发布客户端音频编码模块(12)、发布客户端视频编码模块(13)、发布客户端流媒体处理模块(14)和发布模块(15);所述媒体输入模块(11)读取音频流和/或视频流数据并把该音频流和/或视频流数据传输至所述发布客户端流媒体处理模块(14);所述发布客户端流媒体处理模块(14)调用发布客户端音频编码模块(12)和/或发布客户端视频编码模块(13)对音频流和/或视频流数据重新编码并根据设定的格式进行媒体流的合并,并按预设的流媒体数据分块时间生成流媒体数据分块; 所述服务器端(2 )包括网页服务模块(21)、服务器流媒体处理模块(22 )和服务器储存模块(23);发布客户端(1)发布模块(15)与网页服务模块(21)交互并上传所述流媒体分块,服务器流媒体处理模块(22)根据设定的流媒体分段时间合并所述流媒体分块为流媒体分段并生成对应流媒体数据分段文件顺序和储存位置的索引,分别储存至服务器储存模块(23); 所述播放客户端(3)包括交付模块(31)、播放客户端流媒体处理模块(32)、播放客户端音频编码模块(33 )、播放客户端视频编码模块(34 )和播放模块(35 );所述交付模块(31)与所述服务器端(2)交互并根据索引从服务器端(2)下载流媒体分段文件,播放客户端流媒体处理模块(32)对流媒体进行分解获取音频流和/或视频流,播放客户端流媒体处理模块(32 )调用播放客户端音频编码模块(33 )和/或播放客户端视频编码模块(34 )对音频流和/或视频流所述进行解码并通过播放模块(35)进行播放。
2.根据权利要求1所述的在互联网发布和直播流媒体的系统,其特征在于还包括媒体采集端(4),所述媒体采集端(4)包括媒体采集模块(41)、媒体处理模块(42)、采集端音频编码模块(43)和/或采集端视频编码模块(44),所述的媒体处理模块(42)调用所述的采集端音频编码模块(43)和/或采集端视频编码模块(44)生成特定格式的媒体文件。
3.根据权利要求2所述的在互联网发布和直播流媒体的系统,其特征在于所述的采集端(4)集成于所述的发布客户端(1)中。
4.根据权利要求1至3任意一项所述的在互联网发布和直播流媒体的系统,其特征在于所述的服务器储存模块(23)为分布式存储系统。
专利摘要本实用新型公开一种在互联网发布和直播流媒体的系统,包括发布客户端、服务器端和播放客户端;所述发布客户端用于读取和解析正在输出的多媒体文件,合并并生成流媒体数据分块,然后以HTTP方法上传至所述服务器;所述服务器端储存流媒体数据分块并构建流媒体数据分段文件;同时,服务器端生成对应流媒体数据分段文件的索引;所述播放客户端使用HTTP方法从服务器端获取索引,然后根据索引下载流媒体分段并同时对流媒体分段进行播放。本实用新型的系统基于HTTP协议体系;能够低耦合、非侵入、简单的与采集端应用集成;易于在各种终端平台上实现;实时直播的延时低、健壮性好、容错性好;支持在互联网大规模部署、支持CDN部署方式。
文档编号H04L29/08GK202872837SQ20122006300
公开日2013年4月10日 申请日期2012年2月24日 优先权日2012年2月24日
发明者樊志岩, 李洋 申请人:北京对角巷科技发展有限公司