本发明涉及流媒体传输技术领域,尤其涉及的是一种传输流媒体数据的方法和装置。
背景技术:
HLS(HTTP Live Streaming,超文本直播流)协议是一种基于HTTP(HyperText Transfer Protocol,超文本传输协议)的流媒体传输协议,可提供流媒体的直播服务。采用HTTP实现端到端的HLS直播服务。
但是,在大量用户同时请求服务的情况下,可能会造成全网直播大规模并发的瓶颈。在这种情况下,利用组播实现HLS直播的解决方案便应运而生。通过组播实现HLS直播服务,只需在服务器端将一路直播流发送到特定的组播地址上,终端通过加入组播同时接收组播流即可实现HLS的直播服务。
通过组播的方式进行数据传输,需要考虑传输过程中可能发生的丢包问题,处理丢包的相关技术有重传和冗余码。
但是,在带宽资源有限的应用场景中,由于丢包问题经常会导致服务中断或黑屏,影响了用户的体验。
技术实现要素:
本发明所要解决的技术问题是提供一种传输流媒体数据的方法和装置,能够保证流媒体直播业务的服务质量,改善用户体验。
为了解决上述技术问题,本发明提供了一种传输流媒体数据的方法,应用于流媒体服务器,该方法包括:
确定流媒体数据中不同类型的数据块的优先级;
对当前要直播的流媒体数据中的各数据块分别进行编码,生成对应的冗余码;
在发送完当前要直播的流媒体数据后,按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码。
进一步地,该方法还包括下述特点:
确定流媒体数据中不同类型的数据块的优先级,包括:
所述流媒体数据中的索引文件为高优先级,所述流媒体数据中的传输流TS文件为低优先级;
其中,所述数据块为:索引文件或传输流TS文件。
进一步地,该方法还包括下述特点:
对当前要直播的流媒体数据中的各数据块分别进行编码,生成对应的冗余码后,还包括:
每生成一个索引文件对应的冗余码,将该冗余码放入第一队列;
每生成一个TS文件对应的冗余码,将该冗余码放入第二队列;
其中,所述第一队列和所述第二队列均为先入先出FIFO队列。
进一步地,该方法还包括下述特点:
按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码,包括:
优先发送所述第一队列中的冗余码;
在所述第一队列为空后,发送所述第二队列中的冗余码。
进一步地,该方法还包括下述特点:
所述流媒体数据为基于超文本直播流HLS协议的数据。
为了解决上述技术问题,本发明提供了一种传输流媒体数据的装置,应用于流媒体服务器,包括:
优先级划分模块,用于确定流媒体数据中不同类型的数据块的优先级;
冗余码编码模块,用于对当前要直播的流媒体数据中的各数据块分别进行编码,生成对应的冗余码;
冗余码发送模块,用于在发送完当前要直播的流媒体数据后,按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码。
进一步地,该装置还包括下述特点:
优先级划分模块,用于确定流媒体数据中不同类型的数据块的优先级,包括:
所述流媒体数据中的索引文件为高优先级,所述流媒体数据中的传输流TS文件为低优先级;
其中,所述数据块为:索引文件或传输流TS文件。
进一步地,该装置还包括下述特点:
冗余码编码模块,还用于每生成一个索引文件对应的冗余码,将该冗余码放入第一队列;每生成一个TS文件对应的冗余码,将该冗余码放入第二队列;
其中,所述第一队列和所述第二队列均为先入先出FIFO队列。
进一步地,该装置还包括下述特点:
冗余码发送模块,用于按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码,包括:
优先发送所述第一队列中的冗余码;
在所述第一队列为空后,发送所述第二队列中的冗余码。
进一步地,该装置还包括下述特点:
所述流媒体数据为基于超文本直播流HLS协议的数据。
与现有技术相比,本发明提供的一种传输流媒体数据的方法和装置,将传输数据进行分级,并计算相应的冗余码,重要数据(索引文件)的冗余码将会优先发送,从而使重要数据通过自身冗余码得到保护,减小了重要数据丢包的概率和终端时延,保证了基于HLS协议的流媒体直播业务的服务质量, 改善用户体验。
附图说明
图1为本发明实施例的一种传输流媒体数据的方法的流程图。
图2为本发明实施例的一种传输流媒体数据的装置的结构示意图。
图3为本发明应用示例的一种传输流媒体数据的方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在基于HLS协议的直播业务中,索引文件的丢包和TS(Transport Stream,传输流)媒体文件的丢包所造成的影响是完全不同的。索引文件是终端定位TS文件的一把钥匙,没有索引文件,终端将无法定位和获取到TS媒体文件,因此,索引文件的丢包将可能导致终端无法正确定位到某个TS文件,进而造成直播服务中断或黑屏,极大降低了用户的体验质量。相比索引文件,TS媒体文件的丢包对直播服务造成的影响相对就小了很多。因此,在带宽资源有限的应用场景中,通过组播实现HLS直播,对数据的分级保护显得尤为重要。
基于上述分析,本发明提出了一种分级发包方法,这种方法的基本思想是将索引文件和TS文件进行分级,索引文件为重要数据,TS文件为一般数据,并计算相应的冗余码,然后根据可用的带宽资源,重要数据的冗余码优先得到处理。通过这种方法,可以实现对重要数据的分级保护,降低重要数据丢包的概率。
如图1所示,本发明实施例提供了一种传输流媒体数据的方法,应用于 流媒体服务器,该方法包括:
S10,确定流媒体数据中不同类型的数据块的优先级;
S20,对当前要直播的流媒体数据中的各数据块分别进行编码,生成对应的冗余码;
S30,在发送完当前要直播的流媒体数据后,按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码;
所述方法还可以包括下述特点:
较佳地,确定流媒体数据中不同类型的数据块的优先级,包括:
所述流媒体数据中的索引文件为高优先级,所述流媒体数据中的传输流TS文件为低优先级;
其中,所述数据块为:索引文件或传输流TS文件;
较佳地,所述当前要直播的流媒体数据包括:索引文件和传输流TS文件;
较佳地,所述流媒体数据为基于超文本直播流HLS协议的数据;
较佳地,对当前要直播的流媒体数据中的各数据块分别进行编码,生成对应的冗余码后,还包括:
每生成一个索引文件对应的冗余码,将该冗余码放入第一队列;
每生成一个TS文件对应的冗余码,将该冗余码放入第二队列;
所述第一队列和所述第二队列均为先入先出FIFO(First Input First Output)队列;
按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码,包括:
优先发送所述第一队列中的冗余码;
在所述第一队列为空后,发送所述第二队列中的冗余码;
较佳地,按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码,包括:
a)计算剩余带宽,如不存在剩余带宽,则清空所述第一队列和第二队列, 结束,如存在剩余带宽,则判断所述第一队列是否为空,如果为空,则执行步骤b),如果非空,则从所述第一队列中选择一个冗余码,判断所述冗余码的长度是否大于所述剩余带宽,在大于所述剩余带宽时,清空所述第一队列和第二队列,结束,在小于或等于所述剩余带宽时,发送所述冗余码并将已发送的冗余码从所述第一队列中移除,然后重复执行步骤a);
b)判断所述第二队列是否为空,如果为空,则结束,如果非空,则从所述第二队列中选择一个冗余码,判断所述冗余码的长度是否大于所述剩余带宽,在大于所述剩余带宽时,清空所述第二队列,结束,在小于或等于所述剩余带宽时,发送所述冗余码并将已发送的冗余码从所述第二队列中移除,然后重新计算剩余带宽,如不存在剩余带宽,则清空所述第二队列,结束,如存在剩余带宽,重复执行步骤b)。
如图2所示,本发明实施例提供了一种传输流媒体数据的装置,应用于流媒体服务器,包括:
优先级划分模块,用于确定流媒体数据中不同类型的数据块的优先级;
冗余码编码模块,用于对当前要直播的流媒体数据中的各数据块分别进行编码,生成对应的冗余码;
冗余码发送模块,用于在发送完当前要直播的流媒体数据后,按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码。
所述装置还可以包括下述特点:
较佳地,优先级划分模块,用于确定流媒体数据中不同类型的数据块的优先级,包括:
所述流媒体数据中的索引文件为高优先级,所述流媒体数据中的传输流TS文件为低优先级;
其中,所述数据块为:索引文件或传输流TS文件。
较佳地,所述当前要直播的流媒体数据包括:索引文件和传输流TS文件;
较佳地,所述流媒体数据为基于超文本直播流HLS协议的数据;
较佳地,冗余码编码模块,还用于每生成一个索引文件对应的冗余码,将该冗余码放入第一队列;每生成一个TS文件对应的冗余码,将该冗余码放入第二队列;
其中,所述第一队列和所述第二队列均为先入先出FIFO队列。
较佳地,冗余码发送模块,用于按照所述流媒体数据中数据块的优先级从高到低的顺序依次发送数据块对应的冗余码,包括:
优先发送所述第一队列中的冗余码;在所述第一队列为空后,发送所述第二队列中的冗余码。
应用示例
在固定带宽的应用环境中,区分重要数据和一般数据,采用分级发包的策略,可以更有针对性地对不同数据进行保护,可以避免一些重要数据的丢包等。分级发包策略的基本处理流程为:
S101,对传输数据划分优先级。
将索引文件作为重要数据,将TS文件作为一般数据,索引文件的优先级为高优先级,TS文件的优先级为低优先级。
S102,对当前要传输的数据块进行编码,生成数据块对应的冗余码;
如果数据块是重要数据(索引文件),那么将对应的冗余码存入Q1队列中,如果数据块是一般数据(TS文件),那么将对应的冗余码存入Q2队列中。
S103,计算剩余带宽,判断是否存在剩余带宽,如不存在剩余带宽,转到步骤S104,如存在剩余带宽,转到步骤S105;
S104,清空所述Q1队列和Q2队列,结束;
S105,判断所述Q1队列是否为空,如果为空,则执行步骤S109,如果非空,转到步骤S106;
S106,从所述Q1队列中选择一个冗余码;
S107,判断所述冗余码的长度是否大于所述剩余带宽,是则转到步骤S104,否则转到步骤S108;
S108,从所述Q1队列中取出所述冗余码并进行发送,转到步骤S103;
S109,判断所述Q2队列是否为空,是则转到步骤S104,否则转到步骤S110;
S110,从所述Q2队列中选择一个冗余码;
S111,判断所述冗余码的长度是否大于所述剩余带宽,是则转到步骤S104,否则转到步骤S112;
S112,从所述Q2队列中取出所述冗余码并进行发送;
S113,重新计算剩余带宽,判断是否存在剩余带宽,如不存在剩余带宽,则转到步骤S104,如存在剩余带宽,则转到步骤S109;
上述实施例提供的一种传输流媒体数据的方法和装置,将传输数据进行分级,并计算相应的冗余码,重要数据(索引文件)的冗余码将会优先发送,从而使重要数据通过自身冗余码得到保护,减小了重要数据丢包的概率和终端时延,保证了基于HLS协议的流媒体直播业务的服务质量,改善用户体验。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及 其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。