CN111343511A - 一种通过组播实现的hls直播系统及方法 - Google Patents
一种通过组播实现的hls直播系统及方法 Download PDFInfo
- Publication number
- CN111343511A CN111343511A CN202010209367.XA CN202010209367A CN111343511A CN 111343511 A CN111343511 A CN 111343511A CN 202010209367 A CN202010209367 A CN 202010209367A CN 111343511 A CN111343511 A CN 111343511A
- Authority
- CN
- China
- Prior art keywords
- media
- rtp
- hls
- index file
- rtp packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/64—Addressing
- H04N21/6405—Multicasting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
- H04N21/6437—Real-time Transport Protocol [RTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
Abstract
本发明公开了一种通过组播实现的HLS直播系统及方法,涉及互联网多媒体技术领域。该HLS直播系统的系统端设备设有切片服务器,终端设备设有HLS生成器和播放器。切片服务器从直播源接收直播流,进行虚拟HLS切片,将媒体分片和M3U8索引文件信息封装成RTP包以组播方式发出;当播放器播放时,向HLS生成器请求M3U8索引文件;HLS生成器接收切片服务器的RTP直播组播流,从其中提取媒体分片缓存于内存,并生成完整的M3U8索引文件响应播放器;播放器根据该M3U8索引文件向HLS生成器请求下载媒体分片进行播放。本发明不但能有效结合组播和HLS的优点,而且为不支持RTSP流的终端设备提供了HLS直播功能,降低了终端要求。
Description
技术领域
本发明涉及互联网多媒体技术领域,具体来讲是一种通过组播实现的HLS(HTTPLive Streaming,苹果公司实现的基于HTTP的流媒体网络传输协议)直播系统及方法。
背景技术
在IPTV建设实践中,通过组播分发直播频道,相比单播方式减小了30%~50%投资。但随着技术的发展,HLS流媒体技术由于具有对流服务器与终端要求低、可通过多码率保证在不同网络下播放的流畅性等优点,所以近年来在互联网视频业务的应用中占有主流位置,并且电信运营商使用HLS方式的直播日渐增加。
但是HLS基于HTTP(Hypertext Transfer Protocol,超文本传输协议),传统上只能使用TCP(Transmission Control Protocol,传输控制协议)来传输,属于单播模式,在大用户量情况下,需占用巨大的网络带宽资源。
因此,针对现有状况,如何有效利用运营商IPTV的组播资源,在不增加网络带宽的情况下,以组播传输方式实现一种低时延的HLS直播,使得组播和HLS的优点皆保留并充分利用,是本领域技术人员亟待解决的问题。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种通过组播实现的HLS直播系统及方法,不但能有效结合组播和HLS的优点,而且为不支持RTSP(Real TimeStreaming Protocol,实时流传输协议)流的终端设备提供了HLS直播功能,降低终端要求,满足了实际应用需求。
为达到以上目的,本发明提供一种通过组播实现的HLS直播系统,包括直播源、系统端设备和终端设备,系统端设备设有切片服务器,终端设备设有HLS生成器和播放器;
所述切片服务器,用于:从直播源接收一个或多个直播频道的直播流,分别进行:虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去;
所述播放器,用于:当请求播放某个直播频道时,向HLS生成器请求M3U8索引文件;并根据HLS生成器响应的M3U8索引文件中的分片列表,向HLS生成器请求下载媒体分片进行播放;
所述HLS生成器,用于:收到播放器请求播放直播频道后,接收所述切片服务器发送的该直播频道的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件;再以该M3U8索引文件响应播放器。
在上述技术方案的基础上,所述切片服务器进行虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去,具体包括以下操作:
所述切片服务器对接收的直播流进行解析,将每个媒体分片封装在多个RTP包,并立即以组播方式发送出去,形成媒体RTP包流;
同时,每当切片服务器封装成的一个RTP包中包含的是一个媒体分片的最后一部分媒体内容时,生成对应的M3U8索引文件数据信息;并将生成的M3U8索引文件数据信息封装在另一个RTP包中,该包以和媒体RTP包流同一路组播地址、不同端口号发送;多个封装有M3U8索引文件数据信息的RTP包,形成M3U8索引文件数据RTP包流,所述媒体RTP包流与所述M3U8索引文件数据RTP包流组成RTP直播组播流。
在上述技术方案的基础上,所述切片服务器封装的媒体RTP包,包括RTP头、RTP扩展头和媒体分片数据;所述切片服务器封装的M3U8索引文件数据RTP包,包括RTP头和M3U8索引文件数据;所述M3U8索引文件数据包含对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号;
所述HLS生成器收到播放器请求播放直播频道后,接收切片服务器的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件,具体包括以下操作:
所述HLS生成器收到播放器请求播放直播频道后,接收切片服务器的RTP直播组播流;每当收到M3U8索引文件数据RTP包时,根据其包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包;去除各媒体RTP包的RTP头和RTP扩展头后,将媒体分片数据组成一个完整的媒体分片缓存于内存;待收到的M3U8索引文件数据RTP包的个数达到HLS生成器预设的配置时,根据当前收到的M3U8索引文件数据RTP包,组成一个完整的M3U8索引文件。
在上述技术方案的基础上,所述媒体RTP包的RTP扩展头包含:帧类型FT参数、帧位置指示FP参数、当前RTP包中的视频帧的展示时间Frame_pts参数;
所述HLS生成器根据M3U8索引文件数据RTP包中,包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包时,若在没有重传请求机制下出现未收到部分媒体RTP包的情况,所述HLS生成器根据已收到的媒体RTP包,组成一个只包含已收到媒体RTP包的媒体分片,同时根据RTP扩展头中的Frame_pts参数计算已收到的媒体RTP包构成的媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值;或者,所述HLS生成器根据媒体RTP包序号及RTP扩展头中的FT参数、FP参数、Frame_pts参数,先舍弃不能组成完整视频帧的媒体RTP包,用剩余包组成媒体分片,并根据Frame_pts参数重新计算媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值。
在上述技术方案的基础上,所述终端设备预置有RTP直播组播流的组播地址组与直播频道的对应关系,该对应关系通过终端设备管理平台下发给终端设备;所述HLS生成器根据该对应关系加入相应的组播地址组,接收切片服务器发送的对应直播频道的RTP直播组播流。
在上述技术方案的基础上,所述媒体分片的最小时长等于一个画面组GOP的时长。
本发明还提供一种基于上述系统的通过组播实现的HLS直播方法,该方法包括以下步骤:
S1、切片服务器从直播源接收一个或多个直播频道的直播流,分别进行:虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发出;
S2、当终端设备中的播放器请求播放某个直播频道时,向HLS生成器请求M3U8索引文件;
S3、HLS生成器接收切片服务器发送的该直播频道的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件;
S4、HLS生成器以生成的M3U8索引文件响应播放器;并持续收流并提取媒体分片和M3U8索引文件数据信息,以更新媒体分片缓存和M3U8索引文件;
S5、播放器根据M3U8索引文件中的分片列表,向HLS生成器请求下载媒体分片进行播放;并定期向HLS生成器请求新的M3U8索引文件,以下载新媒体分片进行播放。
在上述技术方案的基础上,步骤S1具体包括以下操作:
所述切片服务器从直播源接收一个或多个直播频道的直播流;分别进行媒体流的解析,将每个媒体分片封装在多个RTP包,并立即以组播方式发送出去,形成媒体RTP包流;
同时,每当切片服务器封装成的一个RTP包中包含的是一个媒体分片的最后一部分媒体内容时,生成对应的M3U8索引文件数据信息;并将生成的M3U8索引文件数据信息封装在另一个RTP包中,该包以和媒体RTP包流同一路组播地址、不同端口号发送;多个封装有M3U8索引文件数据信息的RTP包,形成M3U8索引文件数据RTP包流,所述媒体RTP包流与所述M3U8索引文件数据RTP包流组成RTP直播组播流。
在上述技术方案的基础上,所述切片服务器封装的媒体RTP包,包括RTP头、RTP扩展头和媒体分片数据;所述切片服务器封装的M3U8索引文件数据RTP包,包括RTP头和M3U8索引文件数据;所述M3U8索引文件数据包含对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号;步骤S3具体包括以下操作:
S31、所述HLS生成器收到播放器请求播放直播频道后,接收切片服务器发送的该直播频道的RTP直播组播流;
S32、每当收到M3U8索引文件数据RTP包时,根据其包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包;去除各媒体RTP包的RTP头和RTP扩展头后,将其中的媒体分片数据组成一个完整的媒体分片缓存于内存;
S33、待收到的M3U8索引文件数据RTP包的个数达到HLS生成器预设的配置时,根据当前收到的M3U8索引文件数据RTP包,组成一个完整的M3U8索引文件。
在上述技术方案的基础上,所述媒体RTP包的RTP扩展头包含:帧类型FT参数、帧位置指示FP参数、当前RTP包中的视频帧的展示时间Frame_pts参数;
步骤S32中,所述HLS生成器根据M3U8索引文件数据RTP包中,包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包时,若在没有重传请求机制下出现未收到部分媒体RTP包的情况,所述HLS生成器根据已收到的媒体RTP包,组成一个只包含已收到媒体RTP包的媒体分片,同时根据RTP扩展头中的Frame_pts参数计算已收到的媒体RTP包构成的媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值;或者,所述HLS生成器根据媒体RTP包序号及RTP扩展头中的FT参数、FP参数、Frame_pts参数,先舍弃不能组成完整视频帧的媒体RTP包,用剩余包组成媒体分片,并根据Frame_pts参数重新计算媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值。
在上述技术方案的基础上,所述终端设备预置有RTP直播组播流的组播地址组与直播频道的对应关系,该对应关系通过终端设备管理平台下发给终端设备;所述步骤S3中,HLS生成器根据该对应关系加入相应的组播地址组,接收切片服务器发送的对应直播频道的RTP直播组播流。
在上述技术方案的基础上,所述媒体分片的最小时长等于一个画面组GOP的时长。
本发明的有益效果在于:
(1)本发明中,只在终端设备接收组播流后合成HLS,从系统端至终端的传输完全是组播方式,无需单播资源,使得组播和HLS的优点皆保留并充分利用;并且,该方案中HLS生成器能在终端上为播放器提供HLS流,使得终端设备的播放器不需要定制开发,只要支持HLS即可,不要求支持RTSP,降低了终端要求,满足实际应用需求。
(2)本发明中,切片服务器采用虚拟HLS切片方式,这种虚拟HLS切片的方式,使得系统端设备不生成也不缓存实际的HLS分片,只在RTP(Real-time Transport Protocol,实时传输协议)中保留M3U8索引文件数据信息,可有效降低内存和磁盘消耗,提升处理效率,HLS切片效率高,并有利于降低直播流的延时,进而实现了一种低时延迟的HLS直播。
(3)本发明中,切片服务器传输RTP直播组播流时,是将一路频道的媒体流和M3U8索引文件数据信息都以同一路组播流传输,最大程度节省了带宽。
附图说明
图1为本发明实施例中通过组播实现的HLS直播系统的结构框图;
图2为一种示例中RTP包生成并发送的示意图;
图3为本发明实施例中媒体RTP包的格式示意图;
图4为本发明实施例中媒体RTP包的RTP扩展头的格式示意图;
图5为本发明实施例中M3U8索引文件数据RTP包的格式示意图;
图6为一种示例中HLS生成器处理RTP直播组播流的示意图;
图7为本发明实施例中通过组播实现的HLS直播方法的流程图。
具体实施方式
针对现有技术中,由于HLS基于HTTP,传统上只能使用TCP来传输,属于单播模式,在大用户量情况下,需占用巨大的网络带宽资源;而通过组播分发直播频道,虽相比单播方式减小了30%~50%投资,但由于组播只能使用UDP(User Datagram Protocol,用户数据报协议)技术,因此,HLS难以直接使用组播来传输。本发明旨在提供一种通过组播实现的HLS直播系统及方法,不但能有效利用运营商IPTV的组播资源,在不增加网络带宽的情况下,实现一种低时延迟的HLS直播,使得组播和HLS的优点皆保留并充分利用,而且使不支持RTSP流的终端设备(如Android机顶盒)能够以HLS方式向用户提供直播服务,降低终端要求,满足了实际应用需求。
其主要的设计思路为:在系统端设备内设置切片服务器,在终端设备设置HLS生成器和播放器。其中,切片服务器能从直播源接收直播流,进行虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装成RTP包,以组播方式发送出去。播放器当播放一个直播频道时,会向HLS生成器请求该频道的M3U8索引文件,并根据HLS生成器响应的M3U8索引文件中的媒体分片列表,向HLS生成器请求下载媒体分片进行播放。HLS生成器则在收到播放器请求后,接收切片服务器发送的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件;再以该M3U8索引文件响应播放器。
由于该方案中,只在终端设备接收组播流后合成HLS,从系统端至终端完全是组播,无需单播资源,使得组播和HLS的优点皆保留并充分利用;并且,该方案中HLS生成器能在终端上为播放器提供HLS流,使得终端设备的播放器只要支持HLS即可,不要求支持RTSP,降低了终端要求,满足实际应用需求。播放器不需要定制开发,支持HLS功能即可。
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施例对本发明的技术方案进行详细的说明。
但需说明的是:接下来要介绍的示例仅是一些具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
实施例一
参见图1所示,本实施例提供了一种通过组播实现的HLS直播系统,包括直播源、系统端设备和终端设备。其中,系统端设备设有切片服务器;终端设备设有HLS生成器和播放器。
切片服务器,用于:从直播源接收一个或多个直播频道的直播流,分别进行:虚拟HLS切片,将生成的媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去。可以理解的是,进行虚拟HLS切片是指:进行HLS切片时,并不生成实际的媒体分片缓存在切片服务器的内存或磁盘中,只是将媒体分片索引及元信息用RTP包封装并以组播发送。这种虚拟HLS切片的方式,使得系统端设备的切片服务器不生成也不缓存实际的HLS分片,只在RTP包中保留M3U8索引文件数据信息,可有效降低内存和磁盘消耗,提升处理效率,HLS切片效率高,并有利于降低直播流的延时。
播放器,用于:当请求播放某个直播频道时,向HLS生成器请求该直播频道的M3U8索引文件;并根据HLS生成器响应的M3U8索引文件中的分片列表,向HLS生成器请求下载媒体分片进行播放。可以理解的是,实际操作中,播放器还会定期向HLS生成器请求新的M3U8索引文件,以下载新的媒体分片进行播放。具体来说,播放器在播放完M3U8索引文件中的最后一个媒体分片前,会再次向HLS生成器请求M3U8索引文件,获得新的媒体分片列表进行媒体分片下载和播放,由此不断循环刷新媒体分片列表,依次下载媒体分片实现直播播放。
HLS生成器,用于:收到播放器请求播放直播频道后,接收切片服务器发送的该直播频道的RTP直播组播流,根据流中的M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件;再以该M3U8索引文件响应播放器。实际操作中,HLS生成器会持续收流并从中提取媒体分片和M3U8索引文件数据信息,以更新媒体分片缓存和M3U8索引文件。另外,HLS生成器可监听于127.0.0.1的某个端口,以实现对播放器请求的实时监听;并且,播放器与HLS生成器间的HLS接口采用标准协议接口。HLS生成器在终端设备上通过127.0.0.1Loopback方式与播放器交互和传输流,可使得传输效率高,资源消耗小。
可以理解的是,实际应用中,终端设备包括但不限于:机顶盒、手机、平板电脑。另外,为了有效地降低HLS直播的延时,本实施例中,媒体分片的最小时长可等于一个GOP(Group of Pictures,画面组)的时长。
进一步地,作为一种可选的实施方式,所述终端设备预置有RTP直播组播流的组播地址组与直播频道的对应关系,该对应关系通过终端设备管理平台下发给终端设备。所述HLS生成器根据该对应关系加入相应的组播地址组,接收切片服务器发送的对应直播频道的RTP直播组播流。
实施例二
本实施例提供的一种通过组播实现的HLS直播系统,其基本结构与实施例一相同,不同之处在于,作为一种优选的实施方式,所述切片服务器进行虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去,具体包括以下操作:
所述切片服务器对接收到的直播流进行解析,将每个媒体分片封装在多个RTP包中,并以不延时的方式,立即将封装好的RTP包以组播方式发送出去,形成媒体RTP包流;
同时,每当切片服务器封装成的一个RTP包中包含的是一个媒体分片的最后一部分媒体内容时,生成对应的M3U8索引文件数据信息,该信息只包含此媒体分片的信息(为增加处理效率,M3U8索引文件数据信息可只保留在内存中);并将生成的M3U8索引文件数据信息封装在另一个RTP包中,该包以和媒体RTP包流同一路组播地址、不同端口号发送;多个封装有M3U8索引文件数据信息的RTP包,形成M3U8索引文件数据RTP包流,所述媒体RTP包流与所述M3U8索引文件数据RTP包流组成RTP直播组播流。实际应用中,M3U8索引文件数据RTP包流可采用带外承载方式,与媒体RTP包流同一个IP地址,并以UDP端口区分二者,如采用默认端口为媒体RTP包流端口减1。
举例来说,如图2所示,切片服务器接收直播源的直播流并进行媒体流分析,得到一个媒体分片(即,一个TS分片),并将该媒体分片封装在从序号100到序号1000的多个RTP包中,以不延时的组播方式发送(即,一旦RTP包生成后,立即将RTP包以组播方式发出)。与此同时,当序号1000的RTP包封装完成后,切片服务器将生成该媒体分片对应的M3U8索引文件要求的相关信息(如分片时长、分片展示时间、分片序列号等),并将生成的M3U8索引文件数据信息封装在图中所示的M3U8 1的RTP包中;在序号1000的RTP包发出后,以相同组播地址、不同端口号发出M3U8 1的RTP包。类似地,分析得到下一个媒体分片(下一个TS分片),将其封装在序号1001到序号3005的多个RTP包中发送;同时,当序号3005的RTP包封装完成后,为该媒体分片生成对应的M3U8索引文件数据信息并封装在M3U8 2的RTP包发出。
进一步地,在实际应用中,切片服务器可以单播或组播方式接收直播源的直播流,并且接收的直播流可为UDP直播流或承载在UDP上的RTP直播流。如果是UDP直播流,则解析媒体流,直接封装成指定RTP格式的RTP包;如果是RTP直播流,则解析媒体流,转封装成指定RTP格式的RTP包。其中,指定RTP格式的具体内容详见下文描述,此处不赘述。
通过上述内容可知,本实施例中的切片服务器在传输媒体流和M3U8索引文件数据信息时,都是通过组播方式,无需单播资源,充分利用了组播的优点;且一路直播频道的媒体流和M3U8索引文件数据信息都以同一路组播流传输,最大程度节省带宽。
实施例三
本实施例提供的一种通过组播实现的HLS直播系统,其基本结构与实施例二相同,不同之处在于,作为一种优选的实施方式,所述切片服务器封装的媒体RTP包的格式如图3所示,包括RTP头、RTP扩展头和媒体分片数据(TS数据)。其中,RTP扩展头格式如图4所示,包括:
V:位数2bits,为扩展头版本号,实施中确定具体值。
FT:位数2bits,为帧类型,指明当前RTP包中的视频数据是属于I帧还是P帧或者B帧;如,1表示I帧,2表示P帧,3表示B帧。
FP:位数2bits,为帧位置指示,表明当前RTP包中的视频数据处于当前帧的位置,是开始、中间或者结尾;如,0-开始,1-中间,2-结尾,3-开始和结尾(一个RTP包包含完整的一个帧)。可以理解的是,一个RTP包只能包含一个帧的数据,但是一个帧可能会分为多个RTP包,因此这里用FP来表示当前的RTP包中的数据是当前帧的开始、结束或是中间,又或者是头尾都包含的完整帧。
SP:位数2bits,为切片方法,本实施例未使用,填值0。
rev:位数2bits,为保留字段。
Length:位数16bits,为该RTP包扩展头部分的长度,以32bit为单位,不包括前面16个bits和length本身。
Frame_pts:位数64bits,为当前RTP包中的视频帧的展示时间。表示时间:从公元1970年1月1日的UTC时间从0时0分0秒算起到该帧展示时所经过的纳秒数。
reserve_field:位数64bits,为保留字段。
进一步地,所述切片服务器封装的M3U8索引文件数据RTP包的格式如图5所示,包括RTP头和M3U8索引文件数据。其中,M3U8索引文件数据信息以文本格式编码,且包含对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号。本实施例的M3U8索引文件数据中所包含的M3U8标签:EXTM3U、EXT-X-VERSION、EXT-X-TARGETDURATION、EXT-X-MEDIA-SEQUENCE、EXTINF都是HLS规范所定义的标签,切片服务器按标准方式生成。其中,EXT-X-MEDIA-SEQUENCE是媒体分片的序号,由切片服务器生成,同一路流的不同媒体分片序号按序每次递增1。举例来说,一个M3U8索引文件数据的实例可如下:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:11
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/11.ts?rtp_begin_seq=100&rtp_end_seq=150
当这个M3U8索引文件数据信息用RTP包封装发出后,切片服务器会继续分析直播流、切片和封装,经过若干媒体流处理后,又发现一个新生成的媒体RTP包中包含的是一个媒体分片的最后一部分媒体内容时,则又形成新的M3U8索引文件数据信息,再次用组播发出,其格式的实例可如下:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:12
#EXTINF:9,
http://127.0.0.1/LIVE/cctv1/12.ts?rtp_begin_seq=151&rtp_end_seq=250
上述两个M3U8索引文件数据实例中,媒体分片文件URL带两个参数:
rtp_begin_seq,表示封装此媒体分片的起始媒体RTP包的序号;
rtp_end_seq,表示封装此媒体分片的结束媒体RTP包的序号。
并且,两个M3U8索引文件数据中都包含了相同的头部分:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
其中,EXTM3U是标准M3U8文件必须包含的标签,并且必须在文件的第一行;EXT-X-VERSION是标准M3U8文件版本号,对同一路直播流,切片服务器设置同一版本,以保证系统运行时流的一致性;EXT-X-TARGETDURATION,指定同一路直播流最大的媒体分片的播放时长(秒),由切片服务器设定后,每个索引文件都使用设定的值。据上述理由,对同一路直播流,切片服务器生成的M3U8索引文件数据的头部是相同的。
实施例四
本实施例提供的一种通过组播实现的HLS直播系统,其基本结构与实施例三相同,不同之处在于,作为一种可选的实施方式,所述HLS生成器收到播放器请求后,接收切片服务器的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件,具体包括以下操作:
所述HLS生成器收到播放器请求后,接收切片服务器的RTP直播组播流,缓存媒体RTP包;每当收到M3U8索引文件数据RTP包时,根据其包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,从缓存中找到两序号之间对应媒体分片的所有RTP包;去除各媒体RTP包的RTP头和RTP扩展头后,将媒体分片数据组成一个完整的媒体分片缓存于内存;待收到的M3U8索引文件数据RTP包的个数达到HLS生成器预设的配置时,根据当前收到的M3U8索引文件数据RTP包,组成一个完整的M3U8索引文件。可以理解的是,由几个M3U8索引文件数据RTP包组成一个完整的M3U8索引文件,也就是一个索引文件中包含几个媒体分片索引项目,可根据HLS生成器的预设配置决定。本实例是配置M3U8索引文件包含3个分片索引项,但本实施例不做具体限定,可根据实际情况进行调整。
举例来说,如图6所示,HLS生成器接收序号为100至1000之前的媒体RTP包并缓存,当收到M3U8索引文件数据RTP包M3U81后,根据其中的rtp_begin_seq和rtp_end_seq,可在缓存中找到对应的序号100到序号1000之间的所有媒体RTP包;将序号100到序号1000的媒体RTP包去除RTP头和RTP扩展头后,组成一个完整的媒体分片1,缓存于内存。类似地,HLS生成器继续收RTP直播组播流进行分析,用上述相同的方式组成媒体分片2和媒体分片3,并缓存于内存。HLS生成器再根据收到的M3U8索引文件数据RTP包M3U81、M3U8 2、M3U8 3中的数据,组成一个完整的M3U8索引文件。
如下是一个由M3U8 1、M3U8 2、M3U8 3包合成的M3U8索引文件的示意:
假设M3U8 1包中的M3U8索引文件数据是:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:10
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/10.ts?rtp_begin_seq=100&rtp_end_seq=1000
假设M3U8 2包中的M3U8索引文件数据是:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:10
#EXT-X-MEDIA-SEQUENCE:11
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/11.ts?rtp_begin_seq=1001&rtp_end_seq=2000
假设M3U8 3包中的M3U8索引文件数据是:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:10
#EXT-X-MEDIA-SEQUENCE:12
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/12.ts?rtp_begin_seq=2001&rtp_end_seq=3000
那么,由M3U8 1、M3U8 2、M3U8 3包合成的M3U8索引文件,示意如下:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:10
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/10.ts?rtp_begin_seq=100&rtp_end_seq=1000
#EXT-X-MEDIA-SEQUENCE:11
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/11.ts??rtp_begin_seq=1001&rtp_end_seq=2000
#EXT-X-MEDIA-SEQUENCE:12
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/12.ts?rtp_begin_seq=2001&rtp_end_seq=3000
后续,HLS生成器继续收流分析,假设获得了M3U8 4包,提取了媒体分片4,那么会更新M3U8索引文件:媒体分片1的索引项会从M3U8索引文件中删除,媒体分片4的索引项会添加至M3U8索引文件中末尾。
假设M3U8 4包中的M3U8索引文件数据是:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:10
#EXT-X-MEDIA-SEQUENCE:13
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/13.ts?rtp_begin_seq=3001&rtp_end_seq=4000
那么,更新后的M3U8索引文件,示意如下:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:11
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/11.ts??rtp_begin_seq=1001&rtp_end_seq=2000
#EXT-X-MEDIA-SEQUENCE:12
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/12.ts?rtp_begin_seq=2001&rtp_end_seq=3000
#EXT-X-MEDIA-SEQUENCE:13
#EXTINF:10,
http://127.0.0.1/LIVE/cctv1/13.ts?rtp_begin_seq=3001&rtp_end_seq=4000
进一步地,在实际应用中,HLS生成器根据M3U8索引文件数据RTP包中,包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包时,若出现未收到部分媒体RTP包的情况(可能原因之一是用户切换直播时间点在未收到的媒体RTP包的发送时间之后,也可能是发生了丢包),在没有重传请求机制下,HLS生成器可根据已收到的媒体RTP包,组成一个只包含已收到媒体RTP包的媒体分片,同时根据扩展头中的参数Frame_pts计算已收到的媒体RTP包构成的媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值。此外,作为可选的补充方式,HLS生成器也可根据媒体RTP包序号及扩展头中的参数FT、FP、Frame_pts,先舍弃不能组成完整视频帧的媒体RTP包,用剩余包组成媒体分片,并根据参数Frame_pts重新计算媒体分片的播放时长。
举例来说,如图6所示,由切片服务器发出的媒体分片1封装在序号100至序号1000的媒体RTP包中,假设HLS生成器未收到序号100至序号103的媒体RTP包(可能原因之一是用户切换直播时间点在序号103的媒体RTP包的发送时间之后,也可能是发生了丢包),在没有重传请求机制下,HLS生成器可以有以下几种处理方式:
第一种是,HLS生成器可根据已收到的RTP包(如从序号104的RTP包开始),构成一个只包含序号104至1000的RTP包的媒体分片,它的播放时长值由媒体RTP包1001的扩展头中的参数Frame_pts减去媒体RTP包104的扩展头中的参数Frame_pts计算得到,然后用这个新的播放时长值更新M3U8 1包中的#EXTINF标签值。
第二种是,舍弃不能组成完成视频帧的媒体RTP包,用剩余包组成媒体分片,并更新它的播放时长。具体的操作是,假设序号100至序号110的媒体RTP包含一个完整的视频帧,那么切片服务器生成它们的参数情况是:各包的RTP扩展头中的参数FT相同,参数Frame_ts相同;RTP包100的扩展头中的参数FP等于0(表示视频帧开始包);RTP包110的参数FP等于2(表示视频帧结尾包);其余包的参数FP等于1(表示视频帧中间包)。HLS生成器根据RTP包110的参数FP等于2可判断这是一个视频帧的最后一个RTP包,又由于104至110的这些包的FT参数相同,但它们中没有一个包的FP等于0,由此判断104至110的包仅是一个视频帧的部分RTP包,这样,将序号104至110的包都舍弃,由剩下的序号111至1000的包来合成媒体分片1,它的播放时长值由媒体RTP包1001扩展头中的Frame_pts减去媒体RTP包111扩展头中的Frame_pts计算得到,然后用这个新的播放时长值更新M3U8 1包中的#EXTINF标签值。
第三种是,在第二种方法的基础上,如果包111的FT不等于1,即不是I帧类型,表明从包111开始的视频帧不是一个I帧,那么根据包中的参数FT和FP,从111至1000的包中找第一个FT等于1且FP等于0或3的包,假设这个包的序号是200,那么,舍弃104至199的包,由序号200至1000的包来合成媒体分片1,它的播放时长值由媒体RTP包1001扩展头中的Frame_pts减去媒体RTP包200扩展头中的Frame_pts计算得到,然后用这个新的播放时长值更新M3U8 1包中的#EXTINF标签值。
以上三种方式,除了考虑在丢包情况下,如何重新计算媒体分片的播放长度,还考虑了采取不同方式减少播放器的计算量。播放器一般需要收到一个完整的视频帧才能对其进行解码,三种方式对此有不同效果的处理方式。第一方式,HLS生成器存在传输给播放器不完成整视频帧的可能性,这时需要播放器自行确定并丢弃这种无法播放的帧,丢弃后,紧接其后的可能不是一个I帧,如果此时播放器处于起播状态,播放器需丢弃此帧,直等到获得I帧;第二方式,存在播放器起播一频道时收到的第一个帧不是I帧的可能性,这需要播放器自行识别并丢弃这个帧;第三方式,由HLS生成器尽力保证播放器起播一频道时收到的第一个帧是I帧,以增加起播速度。
实施例五
参见图7所示,基于同一发明构思,本发明实施例还提供了一种通过组播实现的HLS直播方法,该HLS直播方法基于上述HLS直播系统,具体包括以下步骤:
S1、切片服务器从直播源接收一个或多个直播频道的直播流,分别进行:虚拟HLS切片,将生成的媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去。可以理解的是,进行虚拟HLS切片是指:进行HLS切片时,并不生成实际的媒体分片缓存在切片服务器的内存或磁盘中,只是将媒体分片索引及元信息用RTP包封装并以组播发送。这种虚拟HLS切片的方式,使得系统端设备的切片服务器不生成也不缓存实际的HLS分片,只在RTP包中保留M3U8索引文件数据信息,可有效降低内存和磁盘消耗,提升处理效率,HLS切片效率高,并有利于降低直播流的延时。
S2、当终端设备中的播放器请求播放某个直播频道时,向HLS生成器请求该直播频道的M3U8索引文件。实际操作中,HLS生成器可监听于127.0.0.1的某个端口,以实现对播放器请求的实时监听。并且,播放器与HLS生成器间的HLS接口采用标准协议接口。
S3、HLS生成器收到播放器请求后,接收切片服务器发送的该直播频道的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件。
S4、HLS生成器以生成的M3U8索引文件响应播放器;并持续收流并提取媒体分片和M3U8索引文件数据信息,以更新媒体分片缓存和M3U8索引文件。
S5、播放器根据M3U8索引文件的分片列表,向HLS生成器请求下载媒体分片进行播放;并定期向HLS生成器请求新的M3U8索引文件,以下载新媒体分片进行播放。
可以理解的是,实际应用中,终端设备包括但不限于机顶盒。另外,为了有效地降低HLS直播的延时,本实施例中,媒体分片的最小时长可等于一个GOP(Group of Pictures,画面组)的时长。
进一步地,作为一种可选的实施方式,所述终端设备预置有RTP直播组播流的组播地址组与直播频道的对应关系,该对应关系通过终端设备管理平台下发给终端设备。在此基础上,步骤S3中,HLS生成器接收切片服务器的RTP直播组播流时,是根据该对应关系加入相应的组播地址组,接收切片服务器发送的对应直播频道的RTP直播组播流。
实施例六
本实施例提供的一种通过组播实现的HLS直播方法,其基本步骤与实施例五相同,不同之处在于,作为一种优选的实施方式,该方法的步骤S1具体包括以下操作:
切片服务器从直播源接收一个或多个直播频道的直播流;分别对接收的直播流进行:媒体流的解析,将每个媒体分片封装在多个RTP包,并以不延时的方式,立即将封装好的RTP包以组播方式发送出去,形成媒体RTP包流;
同时,每当切片服务器封装成的一个RTP包中包含的是一个媒体分片的最后一部分媒体内容时,生成对应的M3U8索引文件数据信息;并将生成的M3U8索引文件数据信息封装在另一个RTP包中,该包以和媒体RTP包流同一路组播地址、不同端口号发送;多个封装有M3U8索引文件数据信息的RTP包,形成M3U8索引文件数据RTP包流,所述媒体RTP包流与所述M3U8索引文件数据RTP包流组成RTP直播组播流。
通过上述步骤可知,本实施例中的切片服务器在传输媒体流和M3U8索引文件数据信息时,都是通过组播方式,无需单播资源,充分利用了组播的优点;且一路频道的媒体流和M3U8索引文件数据信息都以同一路组播流传输,最大程度节省带宽。
实施例七
本实施例提供的一种通过组播实现的HLS直播方法,其基本步骤与实施例六相同,不同之处在于,作为一种优选的实施方式,所述切片服务器封装的媒体RTP包的格式如图3所示,包括RTP头、RTP扩展头和媒体分片数据(TS数据)。其中,RTP扩展头格式如图4所示,包括:
V:位数2bits,为扩展头版本号,实施中确定具体值。
FT:位数2bits,为帧类型,指明当前RTP包中的视频数据是属于I帧还是P帧或者B帧;如,1表示I帧,2表示P帧,3表示B帧。
FP:位数2bits,为帧位置指示,表明当前RTP包中的视频数据处于当前帧的位置,是开始、中间或者结尾;如,0-开始,1-中间,2-结尾,3-开始和结尾(一个RTP包包含完整的一个帧)。可以理解的是,一个RTP包只能包含一个帧的数据,但是一个帧可能会分为多个RTP包,因此这里用FP来表示当前的RTP包中的数据是当前帧的开始、结束或是中间,又或者是头尾都包含的完整帧。
SP:位数2bits,为切片方法,本实施例未使用,填值0。
rev:位数2bits,为保留字段。
Length:位数16bits,为该RTP包扩展头部分的长度,以32bit为单位,不包括前面16个bits和length本身。
Frame_pts:位数64bits,为当前RTP包中的视频帧的展示时间。表示时间:从公元1970年1月1日的UTC时间从0时0分0秒算起到该帧展示时所经过的纳秒数。
reserve_field:位数64bits,为保留字段。
进一步地,所述切片服务器封装的M3U8索引文件数据RTP包的格式如图5所示,包括RTP头和M3U8索引文件数据。其中,M3U8索引文件数据信息以文本格式编码,且包含对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号。
实施例八
本实施例提供的一种通过组播实现的HLS直播方法,其基本步骤与实施例七相同,不同之处在于,作为一种优选的实施方式,该方法的步骤S3具体包括以下操作:
S31、所述HLS生成器收到播放器请求后,接收切片服务器发送的该直播频道的RTP直播组播流,缓存媒体RTP包;
S32、每当收到M3U8索引文件数据RTP包时,根据其包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,从缓存中找到两序号之间对应媒体分片的所有媒体RTP包;去除各媒体RTP包的RTP头和RTP扩展头后,将其中的媒体分片数据组成一个完整的媒体分片缓存于内存;
S33、待收到的M3U8索引文件数据RTP包的个数达到HLS生成器预设的配置时,根据当前收到的M3U8索引文件数据RTP包,组成一个完整的M3U8索引文件。可以理解的是,由几个M3U8索引文件数据RTP包组成一个完整的M3U8索引文件,也就是一个索引文件中包含几个媒体分片索引项目,可根据HLS生成器的预设配置决定。本实例是配置M3U8索引文件包含3个分片索引项,但本实施例不做具体限定,可根据实际情况进行调整。
进一步地,在实际应用中,HLS生成器根据M3U8索引文件数据RTP包中,包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包时,若出现未收到部分媒体RTP包的情况(可能原因之一是用户切换直播时间点在未收到的媒体RTP包的发送时间之后,也可能是发生了丢包),在没有重传请求机制下,HLS生成器可根据已收到的媒体RTP包,组成一个只包含已收到媒体RTP包的媒体分片,同时根据扩展头中的参数Frame_pts计算已收到的媒体RTP包构成的媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值。此外,作为可选的补充方式,HLS生成器也可根据媒体RTP包序号及扩展头中的参数FT、FP、Frame_pts,先舍弃不能组成完整视频帧的媒体RTP包,用剩余包组成媒体分片,并根据参数Frame_pts重新计算媒体分片的播放时长。
注意:上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本发明的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本发明的效果,这种合并和组合而成的实施例也被包括在本发明中,在此不一一描述这种合并和组合。
本发明实施例中提及的优点、优势、效果等仅是示例,而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,本发明实施例公开的上述具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明实施例必须采用上述具体的细节来实现。
本发明实施例中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子,并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。本发明实施例所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。本发明实施例所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本发明实施例中的步骤流程图以及以上方法描述仅作为例示性的例子,并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本发明各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本发明的概念来结合本文中的各个实施例中相关的部分步骤和部分装置,以构思新的实施例,而这些新的实施例也包括在本发明的范围内。
本发明实施例中的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路或处理器。
本发明实施例的方法包括用于实现上述的方法的一个或多个动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
本领域技术人员可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。且本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (12)
1.一种通过组播实现的HLS直播系统,包括直播源、系统端设备和终端设备,其特征在于:系统端设备设有切片服务器,终端设备设有HLS生成器和播放器;
所述切片服务器,用于:从直播源接收一个或多个直播频道的直播流,分别进行:虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去;
所述播放器,用于:当请求播放某个直播频道时,向HLS生成器请求M3U8索引文件;并根据HLS生成器响应的M3U8索引文件中的分片列表,向HLS生成器请求下载媒体分片进行播放;
所述HLS生成器,用于:收到播放器请求播放直播频道后,接收所述切片服务器发送的该直播频道的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件;再以该M3U8索引文件响应播放器。
2.如权利要求1所述的通过组播实现的HLS直播系统,其特征在于,所述切片服务器进行虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发送出去,具体包括以下操作:
所述切片服务器对接收的直播流进行解析,将每个媒体分片封装在多个RTP包,并立即以组播方式发送出去,形成媒体RTP包流;
同时,每当切片服务器封装成的一个RTP包中包含的是一个媒体分片的最后一部分媒体内容时,生成对应的M3U8索引文件数据信息;并将生成的M3U8索引文件数据信息封装在另一个RTP包中,该包以和媒体RTP包流同一路组播地址、不同端口号发送;多个封装有M3U8索引文件数据信息的RTP包,形成M3U8索引文件数据RTP包流,所述媒体RTP包流与所述M3U8索引文件数据RTP包流组成RTP直播组播流。
3.如权利要求2所述的通过组播实现的HLS直播系统,其特征在于:所述切片服务器封装的媒体RTP包,包括RTP头、RTP扩展头和媒体分片数据;
所述切片服务器封装的M3U8索引文件数据RTP包,包括RTP头和M3U8索引文件数据;所述M3U8索引文件数据包含对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号;
所述HLS生成器收到播放器请求播放直播频道后,接收切片服务器的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件,具体包括以下操作:
所述HLS生成器收到播放器请求播放直播频道后,接收切片服务器的RTP直播组播流;每当收到M3U8索引文件数据RTP包时,根据其包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包;去除各媒体RTP包的RTP头和RTP扩展头后,将媒体分片数据组成一个完整的媒体分片缓存于内存;待收到的M3U8索引文件数据RTP包的个数达到HLS生成器预设的配置时,根据当前收到的M3U8索引文件数据RTP包,组成一个完整的M3U8索引文件。
4.如权利要求3所述的通过组播实现的HLS直播系统,其特征在于,所述媒体RTP包的RTP扩展头包含:帧类型FT参数、帧位置指示FP参数、当前RTP包中的视频帧的展示时间Frame_pts参数;
所述HLS生成器根据M3U8索引文件数据RTP包中,包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包时,若在没有重传请求机制下出现未收到部分媒体RTP包的情况,所述HLS生成器根据已收到的媒体RTP包,组成一个只包含已收到媒体RTP包的媒体分片,同时根据RTP扩展头中的Frame_pts参数计算已收到的媒体RTP包构成的媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值;
或者,所述HLS生成器根据媒体RTP包序号及RTP扩展头中的FT参数、FP参数、Frame_pts参数,先舍弃不能组成完整视频帧的媒体RTP包,用剩余包组成媒体分片,并根据Frame_pts参数重新计算媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值。
5.如权利要求1所述的通过组播实现的HLS直播系统,其特征在于:所述终端设备预置有RTP直播组播流的组播地址组与直播频道的对应关系,该对应关系通过终端设备管理平台下发给终端设备;
所述HLS生成器根据该对应关系加入相应的组播地址组,接收切片服务器发送的对应直播频道的RTP直播组播流。
6.如权利要求1至5中任一项所述的通过组播实现的HLS直播系统,其特征在于:所述媒体分片的最小时长等于一个画面组GOP的时长。
7.一种基于权利要求1所述系统的通过组播实现的HLS直播方法,其特征在于,该方法包括以下步骤:
S1、切片服务器从直播源接收一个或多个直播频道的直播流,分别进行:虚拟HLS切片,将媒体分片和M3U8索引文件数据信息封装在RTP包中,以组播方式发出;
S2、当终端设备中的播放器请求播放某个直播频道时,向HLS生成器请求M3U8索引文件;
S3、HLS生成器接收切片服务器发送的该直播频道的RTP直播组播流,根据M3U8索引文件数据信息从RTP直播组播流中提取媒体分片缓存于内存,并生成完整的M3U8索引文件;
S4、HLS生成器以生成的M3U8索引文件响应播放器;并持续收流并提取媒体分片和M3U8索引文件数据信息,以更新媒体分片缓存和M3U8索引文件;
S5、播放器根据M3U8索引文件中的分片列表,向HLS生成器请求下载媒体分片进行播放;并定期向HLS生成器请求新的M3U8索引文件,以下载新媒体分片进行播放。
8.如权利要求7所述的通过组播实现的HLS直播方法,其特征在于,步骤S1具体包括以下操作:
所述切片服务器从直播源接收一个或多个直播频道的直播流;分别进行媒体流的解析,将每个媒体分片封装在多个RTP包,并立即以组播方式发送出去,形成媒体RTP包流;
同时,每当切片服务器封装成的一个RTP包中包含的是一个媒体分片的最后一部分媒体内容时,生成对应的M3U8索引文件数据信息;并将生成的M3U8索引文件数据信息封装在另一个RTP包中,该包以和媒体RTP包流同一路组播地址、不同端口号发送;多个封装有M3U8索引文件数据信息的RTP包,形成M3U8索引文件数据RTP包流,所述媒体RTP包流与所述M3U8索引文件数据RTP包流组成RTP直播组播流。
9.如权利要求8所述的通过组播实现的HLS直播方法,其特征在于,所述切片服务器封装的媒体RTP包,包括RTP头、RTP扩展头和媒体分片数据;
所述切片服务器封装的M3U8索引文件数据RTP包,包括RTP头和M3U8索引文件数据;所述M3U8索引文件数据包含对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号;
步骤S3具体包括以下操作:
S31、所述HLS生成器收到播放器请求播放直播频道后,接收切片服务器发送的该直播频道的RTP直播组播流;
S32、每当收到M3U8索引文件数据RTP包时,根据其包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包;去除各媒体RTP包的RTP头和RTP扩展头后,将其中的媒体分片数据组成一个完整的媒体分片缓存于内存;
S33、待收到的M3U8索引文件数据RTP包的个数达到HLS生成器预设的配置时,根据当前收到的M3U8索引文件数据RTP包,组成一个完整的M3U8索引文件。
10.如权利要求9所述的通过组播实现的HLS直播方法,其特征在于,所述媒体RTP包的RTP扩展头包含:帧类型FT参数、帧位置指示FP参数、当前RTP包中的视频帧的展示时间Frame_pts参数;
步骤S32中,所述HLS生成器根据M3U8索引文件数据RTP包中,包含的对应媒体分片起始媒体RTP包序号和结束媒体RTP包序号,找到对应媒体分片的所有媒体RTP包时,若在没有重传请求机制下出现未收到部分媒体RTP包的情况,所述HLS生成器根据已收到的媒体RTP包,组成一个只包含已收到媒体RTP包的媒体分片,同时根据RTP扩展头中的Frame_pts参数计算已收到的媒体RTP包构成的媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值;
或者,所述HLS生成器根据媒体RTP包序号及RTP扩展头中的FT参数、FP参数、Frame_pts参数,先舍弃不能组成完整视频帧的媒体RTP包,用剩余包组成媒体分片,并根据Frame_pts参数重新计算媒体分片的播放时长,再用它更新对应M3U8索引文件数据RTP包中的相应标签值。
11.如权利要求7所述的通过组播实现的HLS直播方法,其特征在于:所述终端设备预置有RTP直播组播流的组播地址组与直播频道的对应关系,该对应关系通过终端设备管理平台下发给终端设备;
所述步骤S3中,HLS生成器根据该对应关系加入相应的组播地址组,接收切片服务器发送的对应直播频道的RTP直播组播流。
12.如权利要求7至11中任一项所述的通过组播实现的HLS直播方法,其特征在于:所述媒体分片的最小时长等于一个画面组GOP的时长。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010209367.XA CN111343511B (zh) | 2020-03-23 | 2020-03-23 | 一种通过组播实现的hls直播系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010209367.XA CN111343511B (zh) | 2020-03-23 | 2020-03-23 | 一种通过组播实现的hls直播系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111343511A true CN111343511A (zh) | 2020-06-26 |
CN111343511B CN111343511B (zh) | 2022-04-08 |
Family
ID=71186216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010209367.XA Active CN111343511B (zh) | 2020-03-23 | 2020-03-23 | 一种通过组播实现的hls直播系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111343511B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111726651A (zh) * | 2020-07-03 | 2020-09-29 | 浪潮云信息技术股份公司 | 一种基于hils协议的音视频流直播方法及系统 |
CN112203105A (zh) * | 2020-09-30 | 2021-01-08 | 沈阳大学 | 一种新媒体移动直播方法及系统 |
CN113038170A (zh) * | 2021-03-01 | 2021-06-25 | 北京四达时代软件技术股份有限公司 | 直播hls数据生成方法及装置、处理方法及装置和控制系统 |
CN113207007A (zh) * | 2021-04-29 | 2021-08-03 | 杭州当虹科技股份有限公司 | 基于hls协议的直播录制方法 |
CN114363303A (zh) * | 2021-12-31 | 2022-04-15 | 上海网达软件股份有限公司 | 一种实现监控视频快速起播的流媒体转码方法 |
CN114401193A (zh) * | 2021-12-27 | 2022-04-26 | 中国电信股份有限公司 | 一种支持mpts的hls切片方法及装置 |
CN115550746A (zh) * | 2022-10-11 | 2022-12-30 | 杭州视洞科技有限公司 | 基于网络摄像机的hls低延迟方法及媒体分发服务系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506967A (zh) * | 2015-01-05 | 2015-04-08 | 百视通网络电视技术发展有限责任公司 | Udp直播流到hls直播流的实时转换方法及系统 |
CN105049954A (zh) * | 2015-07-02 | 2015-11-11 | 中兴通讯股份有限公司 | Ott媒体的组播传输方法、装置及系统 |
CN105578308A (zh) * | 2015-12-29 | 2016-05-11 | 武汉市烽视威科技有限公司 | 一种rtp组播直播与hls单播时移相结合的实现方法 |
CN106791959A (zh) * | 2015-11-19 | 2017-05-31 | 中国电信股份有限公司 | 一种通过组播传输hls流媒体的方法、系统和终端 |
US20170164067A1 (en) * | 2014-07-31 | 2017-06-08 | Broadpeak | Method for delivering an audio-video live content in multicast form |
CN107666613A (zh) * | 2016-07-27 | 2018-02-06 | 中国电信股份有限公司 | 用于多点录制的时间同步方法、服务器以及系统 |
CN110677737A (zh) * | 2019-10-08 | 2020-01-10 | 烽火通信科技股份有限公司 | 一种hls直播快速起播方法及系统 |
-
2020
- 2020-03-23 CN CN202010209367.XA patent/CN111343511B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170164067A1 (en) * | 2014-07-31 | 2017-06-08 | Broadpeak | Method for delivering an audio-video live content in multicast form |
CN104506967A (zh) * | 2015-01-05 | 2015-04-08 | 百视通网络电视技术发展有限责任公司 | Udp直播流到hls直播流的实时转换方法及系统 |
CN105049954A (zh) * | 2015-07-02 | 2015-11-11 | 中兴通讯股份有限公司 | Ott媒体的组播传输方法、装置及系统 |
US20180192156A1 (en) * | 2015-07-02 | 2018-07-05 | Zte Corporation | Multicast transmission method, apparatus and system for ott media |
CN106791959A (zh) * | 2015-11-19 | 2017-05-31 | 中国电信股份有限公司 | 一种通过组播传输hls流媒体的方法、系统和终端 |
CN105578308A (zh) * | 2015-12-29 | 2016-05-11 | 武汉市烽视威科技有限公司 | 一种rtp组播直播与hls单播时移相结合的实现方法 |
CN107666613A (zh) * | 2016-07-27 | 2018-02-06 | 中国电信股份有限公司 | 用于多点录制的时间同步方法、服务器以及系统 |
CN110677737A (zh) * | 2019-10-08 | 2020-01-10 | 烽火通信科技股份有限公司 | 一种hls直播快速起播方法及系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111726651A (zh) * | 2020-07-03 | 2020-09-29 | 浪潮云信息技术股份公司 | 一种基于hils协议的音视频流直播方法及系统 |
CN112203105A (zh) * | 2020-09-30 | 2021-01-08 | 沈阳大学 | 一种新媒体移动直播方法及系统 |
CN113038170A (zh) * | 2021-03-01 | 2021-06-25 | 北京四达时代软件技术股份有限公司 | 直播hls数据生成方法及装置、处理方法及装置和控制系统 |
CN113038170B (zh) * | 2021-03-01 | 2022-05-13 | 北京四达时代软件技术股份有限公司 | 直播hls数据生成方法及装置、处理方法及装置和控制系统 |
CN113207007A (zh) * | 2021-04-29 | 2021-08-03 | 杭州当虹科技股份有限公司 | 基于hls协议的直播录制方法 |
CN113207007B (zh) * | 2021-04-29 | 2022-11-15 | 杭州当虹科技股份有限公司 | 基于hls协议的直播录制方法 |
CN114401193A (zh) * | 2021-12-27 | 2022-04-26 | 中国电信股份有限公司 | 一种支持mpts的hls切片方法及装置 |
CN114401193B (zh) * | 2021-12-27 | 2024-04-16 | 中国电信股份有限公司 | 一种支持mpts的hls切片方法及装置 |
CN114363303A (zh) * | 2021-12-31 | 2022-04-15 | 上海网达软件股份有限公司 | 一种实现监控视频快速起播的流媒体转码方法 |
CN114363303B (zh) * | 2021-12-31 | 2023-06-02 | 上海网达软件股份有限公司 | 一种实现监控视频快速起播的流媒体转码方法 |
CN115550746A (zh) * | 2022-10-11 | 2022-12-30 | 杭州视洞科技有限公司 | 基于网络摄像机的hls低延迟方法及媒体分发服务系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111343511B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111343511B (zh) | 一种通过组播实现的hls直播系统及方法 | |
US10200723B2 (en) | Converting live streaming content to video-on-demand streaming content | |
US11805286B2 (en) | Apparatus and method for transmitting/receiving processes of a broadcast signal | |
EP3090523B1 (en) | Content delivery | |
US10263875B2 (en) | Real-time processing capability based quality adaptation | |
CN107743703B (zh) | 用于媒体数据传输的方法、设备及计算机可读存储介质 | |
US20160337424A1 (en) | Transferring media data using a websocket subprotocol | |
US10659502B2 (en) | Multicast streaming | |
US20170127147A1 (en) | Multicast streaming | |
WO2014203871A1 (ja) | 送信装置、送信方法、再生装置、再生方法および受信装置 | |
KR20140009315A (ko) | 방송 시스템에서의 멀티미디어 프레임 전송장치 및 방법 | |
KR20170089863A (ko) | 멀티미디어 및 파일 전송을 위한 전송 인터페이스 | |
CN106657143A (zh) | 一种流媒体传输方法、装置、服务器及终端 | |
CN113225598A (zh) | 移动端音视频同步的方法、装置、设备及存储介质 | |
EP3065414A1 (en) | Transmission device, transmission method, reception device, and reception method | |
KR20190018142A (ko) | Mmt 전송 패킷의 설정 방법 및 전송 방법 | |
CN110072126A (zh) | 数据请求方法、协转服务器及计算机可读存储介质 | |
CN110086797B (zh) | 媒体流的实时接收方法、客户端、计算机设备和存储介质 | |
CN112203105A (zh) | 一种新媒体移动直播方法及系统 | |
CN110881018B (zh) | 媒体流的实时接收方法及客户端 | |
CN111193686B (zh) | 媒体流的递送方法及服务器 | |
Gatimu et al. | Experimental study of low-latency HD VoD streaming using flexible dual TCP-UDP streaming protocol | |
US20070122123A1 (en) | Data Transmission Method And Apparatus | |
JP6927338B2 (ja) | 送信方法 | |
CN111654725B (zh) | 媒体流的实时接收方法及客户端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211208 Address after: No.4, Guanshan 2nd Road, Donghu Development Zone, Wuhan, Hubei 430000 Applicant after: WUHAN FONSVIEW TECHNOLOGIES CO.,LTD. Address before: 430000 No. 6, High-tech Fourth Road, Donghu High-tech Development Zone, Wuhan City, Hubei Province Applicant before: FIBERHOME TELECOMMUNICATION TECHNOLOGIES Co.,Ltd. Applicant before: Wuhan fengshiwei Technology Co., Ltd |
|
GR01 | Patent grant | ||
GR01 | Patent grant |