CN104506967A - Udp直播流到hls直播流的实时转换方法及系统 - Google Patents
Udp直播流到hls直播流的实时转换方法及系统 Download PDFInfo
- Publication number
- CN104506967A CN104506967A CN201510003445.XA CN201510003445A CN104506967A CN 104506967 A CN104506967 A CN 104506967A CN 201510003445 A CN201510003445 A CN 201510003445A CN 104506967 A CN104506967 A CN 104506967A
- Authority
- CN
- China
- Prior art keywords
- section
- live
- clock
- stream
- udp
- 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
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/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
-
- 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/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26283—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for associating distribution time parameters to content, e.g. to generate electronic program guide data
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请适用于互联网的音视频技术领域,提供了一种UDP直播流到HLS直播流的实时转换方法及系统,所述方法包括:数据分离步骤,实时接收至少一个UDP直播流,并从所述UDP直播流分离出音视频数据;索引时钟建立步骤,根据所述UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟;切片生成步骤,根据各所述切片的所述起始索引时钟,对所述音视频数据进行重新组合和封装,转换成符合HLS直播流的所述切片。借此,本申请能够基于现有UDP直播服务技术方案上,无缝扩展HLS直播和点播服务技术,大大节省了设备投入和技术改造的成本。
Description
技术领域
本申请涉及互联网的音视频技术领域,尤其涉及一种UDP直播流到HLS直播流的实时转换方法及系统。
背景技术
UDP(User Datagram Protocol,用户数据报协议)协议因其自身的高效数据传输特点,在音视频领域应用比较广泛。现有广泛流行的传统广电有线电视和IPTV(Internet Protocol Television,互联网协议电视)音视频直播、点播服务都采用UDP协议进行传输。因广电有线电视和IPTV直播点播系统均运行在特殊的私有封闭网络环境中,安全性高,干扰因素少,采用UDP协议进行数据传输应用方便,资源消耗少。
随着近年来互联网视频应用的崛起,开放式互联网视频应用逐步受到重视及爆发性的发展。而开放式互联网环境中因诸多安全和不可控因素,严重限制UDP协议的使用。将UDP协议直播流实时转换成HLS(HTTP Live Streaming,超文本直播流)协议直播流在互联网上提供服务成为一种选择。但重新组建HLS技术框架系统,涉及设备的大量采购和系统的重新搭建,成本高,耗时长,不利于多平台服务提供商。
综上可知,现有技术在开放式互联网实际应用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本申请的目的在于提供一种UDP直播流到HLS直播流的实时转换方法及系统。
为了实现上述目的,本申请提供一种UDP直播流到HLS直播流的实时转换方法,包括:
数据分离步骤,实时接收至少一个UDP直播流,并从所述UDP直播流分离出音视频数据;
索引时钟建立步骤,根据所述UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟;
切片生成步骤,根据各所述切片的所述起始索引时钟,对所述音视频数据进行重新组合和封装,转换成符合HLS直播流的所述切片。
根据本申请所述的实时转换方法,所述数据分离步骤之后且所述索引时钟建立步骤之前还包括:
时钟校准步骤,对分离后所述音视频数据进行时钟校准。
根据本申请所述的实时转换方法,所述索引时钟建立步骤进一步包括:
从分离出的所述音视频数据中找出第一个切片的关键帧,并以所述第一个切片的关键帧在所述UDP直播流中的时钟作为第一个理论起始索引时钟T;
根据所述第一个理论起始索引时钟T和切片时长D,计算出后续切片的理论起始索引时钟TS,第n个切片的理论起始索引时钟TS(n)=T+(n-1)*D;
在分离后的所述音视频数据中找出TS(n+1)和TS(n)之间最小关键帧的时钟TIDR(n)作为第n个切片的所述起始索引时钟。
根据本申请所述的实时转换方法,所述以第一个切片的关键帧在所述UDP直播流中的时钟作为第一个理论起始索引时钟T的步骤包括:
若包括多个所述UDP直播流,则在多个所述UDP直播流的所述第一个切片的关键帧中最大的时钟作为所述第一理论起始索引时钟。
根据本申请所述的实时转换方法,所述切片生成步骤进一步包括:
将满足TIDR(n+1)>T’>=TIDR(n)条件的所述音视频数据作为同一切片内切片数据;根据所述切片数据的时钟顺序进行排列组合及TS封装,形成符合HLS直播流的所述切片,所述T’为泛指每个完整的音视频数据包时钟;
计算每个所述切片时长TD(n),所述TD(n)=TIDR(n+1)-TIDR(n)。
根据本申请所述的实时转换方法,所述切片生成步骤之后还包括:
文件命名步骤,根据各所述切片的生成时间命名各所述切片的文件名,该文件名与所述生成时间建立唯一时间映射关系;
直播列表更新步骤,在每次生成一个新切片后,生成并更新直播列表;
存储映射建立步骤,将超出直播时间效应的失效切片实时搬移,并建立存储映射关系存储所述失效切片。
根据本申请所述的实时转换方法,所述文件命名步骤进一步包括:
在每个所述切片生成时,记录所述切片的系统生成时间并转换成对应的UNIX生成时间,第n个切片的UNIX生成时间FT(n)=(T1+(n–1)*D)/D;T1为第一个切片UNIX生成时间,D为切片时长;
根据每个所述切片的所述UNIX生成时间命名所述切片的文件名,第n个切片的文件名FN(n)=FT(n)+“.ts”。
根据本申请所述的实时转换方法,所述文件命名步骤包括:
若包括多个所述UDP直播流,将最先生成的所述切片对应的所述生成时间命名所述切片的所述文件名。
根据本申请所述的实时转换方法,所述存储映射建立步骤进一步包括:
将所述失效切片实时搬移出直播目录,并根据所述失效切片的频道名、编码码率以及以小时为单位的生成时间建立所述存储映射关系,分别建立三级目录实时存储所述失效切片。
根据本申请所述的实时转换方法,所述存储映射建立步骤之后还包括:
点播列表生成步骤,根据提交节目的起始时间及节目时长,生成对应两级点播列表,所述两级点播列表包括各频道的多个编码码率对应一级点播列表和各所述编码码率对应的二级点播列表。
本申请还提供一种UDP直播流到HLS直播流的实时转换系统,包括:
数据分离模块,用于实时接收至少一个UDP直播流,并从所述UDP直播流分离出音视频数据;
索引时钟建立模块,用于根据所述UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟;
切片生成模块,用于根据各所述切片的所述起始索引时钟,对所述音视频数据进行重新组合和封装,转换成符合HLS直播流的所述切片。
根据本申请所述的实时转换系统,还包括:
时钟校准模块,用于在建立所述起始索引时钟之前,对分离后所述音视频数据进行时钟校准。
根据本申请所述的实时转换系统,所述索引时钟建立模块进一步包括:
第一索引建立子模块,用于从分离出的所述音视频数据中找出第一个切片的关键帧,并以所述第一个切片的关键帧在所述UDP直播流中的时钟作为第一个理论起始索引时钟T;
第二索引建立子模块,用于根据所述第一个理论起始索引时钟T和切片时长D,计算出后续切片的理论起始索引时钟TS,第n个切片的理论起始索引时钟TS(n)=T+(n-1)*D;
第三索引建立子模块,用于在分离后的所述音视频数据中找出TS(n+1)和TS(n)之间最小关键帧的时钟TIDR(n)作为第n个切片的所述起始索引时钟。
根据本申请所述的实时转换系统,所述第一索引建立子模块用于在若包括多个所述UDP直播流时,在多个所述UDP直播流的所述第一个切片的关键帧中最大的时钟作为所述第一理论起始索引时钟。
根据本申请所述的实时转换系统,所述切片生成模块进一步包括:
切片生成子模块,用于将满足TIDR(n+1)>T’>=TIDR(n)条件的所述音视频数据作为同一切片内切片数据;根据所述切片数据的时钟顺序进行排列组合及TS封装,形成符合HLS直播流的所述切片,所述T’为泛指每个完整的音视频数据包时钟;
时长计算子模块,用于计算每个所述切片时长TD(n),所述TD(n)=TIDR(n+1)-TIDR(n)。
根据本申请所述的实时转换系统,还包括:
文件命名模块,用于在生成所述切片后,根据各所述切片的生成时间命名各所述切片的文件名,该文件名与所述生成时间建立唯一时间映射关系;
直播列表更新模块,用于在每次生成一个新切片后,生成并更新直播列表;
存储映射建立模块,用于将超出直播时间效应的失效切片实时搬移,并建立存储映射关系存储所述失效切片。
根据本申请所述的实时转换系统,所述文件命名模块进一步包括:
时间转换子模块,用于在每个所述切片生成时,记录所述切片的系统生成时间并转换成对应的UNIX生成时间,第n个切片的UNIX生成时间FT(n)=(T1+(n–1)*D)/D;T1为第一个切片UNIX生成时间,D为切片时长;
命名子模块,用于根据每个所述切片的所述UNIX生成时间命名所述切片的文件名,第n个切片的文件名FN(n)=FT(n)+“.ts”。
根据本申请所述的实时转换系统,所述命名子模块子模块用于在若包括多个所述UDP直播流时,将最先生成的所述切片对应的所述生成时间命名所述切片的所述文件名。
根据本申请所述的实时转换系统,所述存储映射建立模块还用于将所述失效切片实时搬移出直播目录,并根据所述失效切片的频道名、编码码率以及以小时为单位的生成时间建立所述存储映射关系,分别建立三级目录实时存储所述失效切片。
根据本申请所述的实时转换系统,还包括:
点播列表生成模块,用于在转换成符合HLS直播流的所述切片后,根据提交节目的起始时间及节目时长,生成对应两级点播列表,所述两级点播列表包括各频道的多个编码码率对应一级点播列表和各所述编码码率对应的二级点播列表。
本申请能够基于现有UDP直播服务技术方案上,无缝扩展HLS直播和点播服务技术,大大节省了设备投入和技术改造的成本。而且,本申请还可将直播音视频切片数据合理收录,建立唯一时间映射关系并存储,从而可快速、方便地实现提供点播回看业务,减少直播实时收录及后期人工编辑等工作,提高了工作效率。
附图说明
图1是本申请UDP直播流到HLS直播流的实时转换方法的流程图;
图2是本申请优选UDP直播流到HLS直播流的实时转换方法的流程图;
图3是本申请UDP直播流到HLS直播流的实时转换系统的结构示意图;
图4是本申请优选UDP直播流到HLS直播流的实时转换系统的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1是本申请UDP直播流到HLS直播流的实时转换方法的流程图,包括:
步骤S101,数据分离步骤,实时接收至少一个UDP直播流,并从UDP直播流分离出音视频数据。
所述UDP直播流为基于UDP协议的直播流数据。
步骤S102,索引时钟建立步骤,根据UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟。
优选的是,根据UDP直播流中时钟信息及关键帧信息,建立协议转换起始索引时钟;并以该起始索引时钟和切片时长为基准,确定后续切片的起始点索引理论时钟。起始点确定后并以此为基准建立后续切片理论时钟起始点索引,然后再计算出各切片的实际起始索引时钟,这是UDP协议到HLS协议转换的基础。
步骤S103,切片生成步骤,根据各切片的起始索引时钟,对音视频数据进行重新组合和封装,转换成符合HLS直播流的切片,从而完成UDP组播的直播流实时转换成HLS协议直播流。
优选的是,在所述数据分离步骤之后且索引时钟建立步骤之前还可包括:
时钟校准步骤,对分离后音视频数据进行时钟校准。
图2是本申请优选UDP直播流到HLS直播流的实时转换方法的流程图,UDP协议和HLS协议分别是针对不同应用领域的传输方案,技术实现差别大;由于直播特点,数据流内音视频时钟会定时重置,对协议转换带来不便;同一频道多个直播流同时输入,输出要保证同一时刻输出的命名一致的每个切片内音视频数据时钟严格同步。所述方法包括:
步骤S201,数据分离步骤,实时接收至少一个UDP直播流,并从UDP直播流分离出音视频数据。
步骤S202,时钟校准步骤,对分离后音视频数据进行时钟校准。
所述时钟校准用于直播流内起始索引时钟确定、对分离后的音视频数据时钟进行同步处理及合理处理时钟重置等。
步骤S203,索引时钟建立步骤,根据UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟。
优选的是,所述索引时钟建立步骤进一步包括:
1)从分离出的音视频数据中找出第一个切片的关键帧,并以第一个切片的关键帧在UDP直播流中的时钟作为第一个理论起始索引时钟T。若包括多个UDP直播流,则在多个UDP直播流的第一个切片的关键帧中最大的时钟作为第一理论起始索引时钟。
2)根据第一个理论起始索引时钟T和切片时长D,计算出后续切片的理论起始索引时钟TS,第n个切片的理论起始索引时钟TS(n)=T+(n-1)*D。
3)在分离后的音视频数据中找出TS(n+1)和TS(n)之间最小关键帧的时钟TIDR(n)作为第n个切片的起始索引时钟。
协议转换的各切片起始索引时钟建立优选如下:
表一
第一步:从接收的UDP直播流数据中分离出的视频流数据中,找到第一个切片的关键帧。以第一个切片的关键帧在直播流中的时钟,作为第一个理论起始索引时钟,记为T。并以T为起点,根据切片时长,确定所有后续切片的理论起始索引时钟。多个直播输入流,以同时找到的最大T作为起始索引时钟。
则第n个切片的理论起始索引时钟为:TS(n)=T+(n-1)*D
第二步:在分离后的视频流中寻找TIDR(n)作为第n个切片的起始时钟。
第三步:将满足TIDR(n+1)>T’>=TIDR(n)条件的所有音视频数据作为同一个切片内数据。对这些数据按时钟顺序进行排列组合及TS封装,形成单独的切片;同时计算切片时长TD(n),实现UDP数据流到HLS数据流的转换。TD(n)=TIDR(n+1)-TIDR(n)
以上三步作为本申请切片的核心算法,确保单个或多个输入流无论是严格遵循HLS编码标准直播流还是传统直播流,均能顺利切片,并满足HLS协议要求。
步骤S204,切片生成步骤,根据各切片的起始索引时钟,对音视频数据进行重新组合和封装,转换成符合HLS直播流的切片。
优选的时,所述切片生成步骤进一步包括:
1)将满足TIDR(n+1)>T’>=TIDR(n)条件的音视频数据作为同一切片内切片数据。根据切片数据的时钟顺序进行排列组合及TS(Transport Stream,传送流)封装,形成符合HLS直播流的切片,所述T’为泛指每个完整的音视频数据包时钟;
2)计算每个切片时长TD(n),TD(n)=TIDR(n+1)-TIDR(n)。
重新组合并进行TS封装。根据切片时长和起始点索引关系,对重新封装后的音视频数据进行分段处理,形成完整、独立且顺序的符合HLS协议TS切片文件流。
步骤S205,文件命名步骤,根据各切片的生成时间命名各切片的文件名,该文件名与生成时间建立唯一时间映射关系。若包括多个UDP直播流,将最先生成的切片对应的生成时间命名切片的文件名。
优选的是,采用建立和UNIX时间唯一映射的文件名。UNIX时间方便和北京时间进行唯一转换。唯一的且和生成时间映射的文件命名,方便快速根据时间查找到符合要求的对应的文件数据。所述文件命名步骤进一步包括:
1)在每个切片生成时,记录切片的系统生成时间并转换成唯一对应的UNIX生成时间,根据UNIX生成时间进行文件名映射,切片文件名时间映射规则如下:
表二
符号 | 表示内容 |
n | 自然数 |
T1 | 第一个切片的UNIX生成时间 |
D | 切片时长 |
FT(n) | 第n个切片的UNIX生成时间 |
FN(n) | 第n个切片命名 |
第n个切片的UNIX生成时间FT(n)=(T1+(n–1)*D)/D。
2)根据每个切片的UNIX生成时间命名切片的文件名,第n个切片的文件名FN(n)=FT(n)+“.ts”。
如北京时间2014/12/114:15:00对应的UNIX生成时间为1417414500,切片时长10秒。该时间输出第一个切片,单个直播流命名情况如下:
FT(1)=(1417414500+(1-1)*10)/10=141741450;
FN(1)=FT(1)+“.ts”=141741450.ts;
第二个切片命名为:
FT(2)=(1417414500+(2-1)*10)/10=141741451;
FN(2)=141741451.ts……
同一频道多个流命名规则:无论输出先后顺序,各个输出的切片内容如时钟一致,则其第一个切片文件命名取最先生成切片对应的UNIX时间转换后的文件名。假设直播编码器输出4个码率的东方卫视直播频道,在北京时间2014/12/114:15:00时先后输出4个码率的切片文件,每个切片时长10秒。输出时间分别为:
表三
输入流 | 输出时间 |
S1T1 | 2014/12/114:15:00 |
S2T1 | 2014/12/114:15:01 |
S3T1 | 2014/12/114:15:00 |
S4T1 | 2014/12/114:15:02 |
T=MIN(S1T1,S2T1,S3T1,S4T1)=14:15:00;
每个流最终参照时间以2014/12/114:15:00为准,文件命名均统一为:
FT(1)=(1417414500+(1-1)*10)/10=141741450;
FN(1)=141741450.ts
北京时间2014/12/114:15:10时刻先后分别输出第二个切片文件的时间为:
表四
输入流 | 输出时间 |
S1T2 | 2014/12/114:15:11 |
S2T2 | 2014/12/114:15:09 |
S3T2 | 2014/12/114:15:11 |
S4T2 | 2014/12/114:15:12 |
则:FT(2)=(T+(2-1)*10)/10=141741451;
FN(2)=(T1+D)/D=1417414511.ts
……
根据该规则,实现多个输入流文件命名保持同步,确保切片后续存储时间化,为回看做好准备。
步骤S206,直播列表更新步骤,在每次生成一个新切片后,生成并更新直播列表。
优选的是,每产生一个新的切片文件后,及时生成并更新m3u8播放列表。
并且,多个输入流需实时进行时钟校准和检验,确保同一编号不同输出流切片输出时钟完全一致。
步骤S207,存储映射建立步骤,将超出直播时间效应的失效切片实时搬移,并建立存储映射关系存储失效切片。
由于直播有实效性特点,在直播目录中,新切片会不断产生,因此需将超出直播设定失效时间的失效切片文件及时搬移出直播目录。
优选的是,所述存储映射建立步骤进一步包括:
将失效切片实时搬移出直播目录,并根据失效切片的频道名、编码码率以及以小时为单位的生成时间建立存储映射关系,分别建立三级目录实时存储失效切片。这样,既达到对直播频道的实时收录功能,也可根据生成时间点方便快速查找对应数据,以此为基础提供回看服务。文件名映射规则确定及失效切片文件映射存储关系确定,是本申请直播转回看的核心基础。
对实时输出的直播数据文件的命名建立时间映射关系,将失效文件转移直播目录,建立索引存储。为使直播数据能够顺利转换成点播回看数据,需对直播输出切片文件进行必要的命名,并和生成时间建立起统一的唯一映射关系;同时对超出直播时间效应的失效切片文件,转移到合理的索引目录达到收录和实现回看的目的。
在本申请的具体实施例中,切片存储目录生成规则如下:
存储目录根据频道名、直播码率及生成时间,分别建立多级目录进行存储。
一级目录以频道名命名:东方卫视频道一级目录命名为:东方卫视。该目录收录东方卫视频道所有切片文件。
二级目录以码率进行命名:东方卫视频道同时提供4个码率进行服务,每个码率分别为700000bp/s,900000bp/s,1300000bp/s,2300000bp/s。则二级目录分别命名为:“700000”,“900000”,“1300000”,“2300000”。该目录收录所有对应编码码率各个时间段切片文件。
三级目录以小时进行命名:如北京时间2014/12/114:00:00,对应目录为“2014120114”,该目录中收录切片文件名对应时间从2014/12/0114:00:00~2014/12/0114:59:59之间的切片文件。
更好的是,所述存储映射建立步骤之后还包括:
点播列表生成步骤,根据提交节目的起始时间及节目时长,生成对应两级点播列表,两级点播列表包括各频道的多个编码码率对应一级点播列表和各编码码率对应的二级点播列表。
例如根据以上映射规则,点播回看功能如下实现:根据提交节目起始时间及节目时长,生成对应的m3u8播放列表并提供服务。如提交东方卫视2014/12/0112:00:00“午间新闻”时长30分钟的节目。系统根据该信息提供两级点播列表。首先生成东方卫视4个码率一级m3u8列表,一级m3u8列表包含一级和二级文件夹目录及该码率播放列表文件,如下:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=700000
东方卫视/700000/700.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=900000
东方卫视/900000/900.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1300000
东方卫视/1300000/1300.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2300000
东方卫视/2300000/2300.m3u8
#EXT-X-ENDLIST
时长30分钟“午间新闻”对应以“2014/12/0112:00:00”为起始时间。以700000bp/s码率为例生成二级m3u8列表。
第一步:将起始时间进行UNIX时间转换,并根据UNIX生成时间及文件名映射关系,推算出播放列表内第一个切片命名。
FN(n)=(T+(n-1)*D)/D+‘.ts’;
2014/12/0112:00:00对应UNIX生成时间1417406400,该时间点FN(1)对应回看目录中以“141740640.ts”命名的文件。
第二步:根据节目时长和切片时长,计算切片数目及反推播放列表中最后一切片文件命名。
n=30*60/10=180片
根据第一切片命名和切片数目,推算出列表内最后切片FN(180)文件名为“141740819.ts”。
第三步:在三级目录“2014120112”中寻找文件编号包含及介于“141740640.ts~141740819.ts”之间的所有切片文件,并将切片名添加到m3u8列表中,生成二级m3u8列表。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:141740640
#EXT-X-VERSION:3
#EXTINF:10,
2014120112/141740640.ts
#EXTINF:10,
2014120112/141740641.ts
……
#EXTINF:10,
2014120112/141740820.ts
#EXT-X-ENDLIST
本申请优选实施方式中将从切片时间索引建立、切片文件命名时间索引映射和切片存储映射三个方面进行。这三个索引的建立,互相配合,共同完成切片协议转换和直播转回看功能。
本申请能够低成本充分利用现有技术,高性能地实现无缝转换成符合HLS协议要求的直播流,既能极大地节省设备投入和技术改造,也能够快速实现HLS的各项应用要求。同时将直播音视频切片数据合理收录,建立唯一时间映射关系并存储,快速、方便实现提供点播回看数据,减少直播实时收录及后期人工编辑等工作,提高工作效率。本申请主要分为三个方面:实时接收UDP组播单个或多个符合要求的直播流,进行音视频数据分离、分析、校准并进行TS封装,按要求进行切片和播放列表生成,输出符合HLS协议的单个或多个切片直播流;对输出切片流文件命名建立唯一时间映射关系;对直播失效切片文件以频道名、编码码率及小时为单位进行实时存储,实现收录和回看功能。
图3是本申请UDP直播流到HLS直播流的实时转换系统的结构示意图,所述实时转换系统100至少包括有数据分离模块10、索引时钟建立模块20以及切片生成模块30,其中:
所述数据分离模块10,用于实时接收至少一个UDP直播流,并从UDP直播流分离出音视频数据。
所述索引时钟建立模块20,用于根据UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟。
所述切片生成模块30,用于根据各切片的起始索引时钟,对音视频数据进行重新组合和封装,转换成符合HLS直播流的切片。
本申请在保持现有UDP直播服务技术方案完全不变的情况下,无缝扩展HLS直播服务技术;同时对已生成直播切片数据建立文件名和生成时间唯一映射关系,并根据生成时间建立时间索引合理存储,方便根据过往时间和播放时长生成回看播放列表并提供回看数据,实现了直播数据收录及直播转回看功能。
本申请在现有技术的基础上无缝扩展HLS应用技术,极大节省技术改造和设备更新成本投入,可应用于互联网直播和回看业务。
图4是本申请优选UDP直播流到HLS直播流的实时转换系统的结构示意图,所述实时转换系统100可包括有数据分离模块10、索引时钟建立模块20、切片生成模块30、时钟校准模块40、文件命名模块50、直播列表更新模块60、存储映射建立模块70和/或点播列表生成模块80,其中:
所述数据分离模块10,用于实时接收至少一个UDP直播流,并从UDP直播流分离出音视频数据。
时钟校准模块40,用于在建立起始索引时钟之前,对分离后音视频数据进行时钟校准。
所述索引时钟建立模块20,用于根据UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟。
优选的是,索引时钟建立模块20进一步包括:
第一索引建立子模块21,用于从分离出的音视频数据中找出第一个切片的关键帧,并以第一个切片的关键帧在UDP直播流中的时钟作为第一个理论起始索引时钟T。优选的是,第一索引建立子模块10用于在若包括多个UDP直播流时,在多个UDP直播流的第一个切片的关键帧中最大的时钟作为第一理论起始索引时钟。
第二索引建立子模块22,用于根据第一个理论起始索引时钟T和切片时长D,计算出后续切片的理论起始索引时钟TS,第n个切片的理论起始索引时钟TS(n)=T+(n-1)*D。
第三索引建立子模块23,用于在分离后的音视频数据中找出TS(n+1)和TS(n)之间最小关键帧的时钟TIDR(n)作为第n个切片的起始索引时钟。
所述切片生成模块30,用于根据各切片的起始索引时钟,对音视频数据进行重新组合和封装,转换成符合HLS直播流的切片。优选的是,切片生成模块30进一步包括:
切片生成子模块31,用于将满足TIDR(n+1)>T’>=TIDR(n)条件的音视频数据作为同一切片内切片数据。根据切片数据的时钟顺序进行排列组合及TS封装,形成符合HLS直播流的切片,T’为泛指每个完整的音视频数据包时钟。
时长计算子模块32,用于计算每个切片时长TD(n),TD(n)=TIDR(n+1)-TIDR(n)。
所述文件命名模块50,用于在生成切片后,根据各切片的生成时间命名各切片的文件名,该文件名与生成时间建立唯一时间映射关系。优选的是,所述文件命名模块50进一步包括:
时间转换子模块51,用于在每个切片生成时,记录切片的系统生成时间并转换成对应的UNIX生成时间,第n个切片的UNIX生成时间FT(n)=(T1+(n–1)*D)/D。T1为第一个切片UNIX生成时间,D为切片时长。
命名子模块52,用于根据每个切片的UNIX生成时间命名切片的文件名,第n个切片的文件名FN(n)=FT(n)+“.ts”。文件命名子模块52还用于在若包括多个UDP直播流时,将最先生成的切片对应的生成时间命名切片的文件名。
所述直播列表更新模块60,用于在每次生成一个新切片后,生成并更新直播列表。
所述存储映射建立模块70,用于将超出直播时间效应的失效切片实时搬移,并建立存储映射关系存储失效切片。优选的是,存储映射建立模块70还用于将失效切片实时搬移出直播目录,并根据失效切片的频道名、编码码率以及以小时为单位的生成时间建立存储映射关系,分别建立三级目录实时存储失效切片。
所述点播列表生成模块80,用于在转换成符合HLS直播流的切片后,根据提交节目的起始时间及节目时长,生成对应两级点播列表,两级点播列表包括各频道的多个编码码率对应一级点播列表和各编码码率对应的二级点播列表。
综上所述,本申请能够基于现有UDP直播服务技术方案上,无缝扩展HLS直播和点播服务技术,大大节省了设备投入和技术改造的成本。而且,本申请还可将直播音视频切片数据合理收录,建立唯一时间映射关系并存储,从而可快速、方便地实现提供点播回看业务,减少直播实时收录及后期人工编辑等工作,提高了工作效率。
当然,本申请还可有其它多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请所附的权利要求的保护范围。
Claims (20)
1.一种UDP直播流到HLS直播流的实时转换方法,其特征在于,包括:
数据分离步骤,实时接收至少一个UDP直播流,并从所述UDP直播流分离出音视频数据;
索引时钟建立步骤,根据所述UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟;
切片生成步骤,根据各所述切片的所述起始索引时钟,对所述音视频数据进行重新组合和封装,转换成符合HLS直播流的所述切片。
2.根据权利要求1所述的实时转换方法,其特征在于,所述数据分离步骤之后且所述索引时钟建立步骤之前还包括:
时钟校准步骤,对分离后所述音视频数据进行时钟校准。
3.根据权利要求1所述的实时转换方法,其特征在于,所述索引时钟建立步骤进一步包括:
从分离出的所述音视频数据中找出第一个切片的关键帧,并以所述第一个切片的关键帧在所述UDP直播流中的时钟作为第一个理论起始索引时钟T;
根据所述第一个理论起始索引时钟T和切片时长D,计算出后续切片的理论起始索引时钟TS,第n个切片的理论起始索引时钟TS(n)=T+(n-1)*D;
在分离后的所述音视频数据中找出TS(n+1)和TS(n)之间最小关键帧的时钟TIDR(n)作为第n个切片的所述起始索引时钟。
4.根据权利要求3所述的实时转换方法,其特征在于,所述以第一个切片的关键帧在所述UDP直播流中的时钟作为第一个理论起始索引时钟T的步骤包括:
若包括多个所述UDP直播流,则在多个所述UDP直播流的所述第一个切片的关键帧中最大的时钟作为所述第一理论起始索引时钟。
5.根据权利要求3所述的实时转换方法,其特征在于,所述切片生成步骤进一步包括:
将满足TIDR(n+1)>T’>=TIDR(n)条件的所述音视频数据作为同一切片内切片数据;根据所述切片数据的时钟顺序进行排列组合及TS封装,形成符合HLS直播流的所述切片,所述T’为泛指每个完整的音视频数据包时钟;
计算每个所述切片时长TD(n),所述TD(n)=TIDR(n+1)-TIDR(n)。
6.根据权利要求1~5任一项所述的实时转换方法,其特征在于,所述切片生成步骤之后还包括:
文件命名步骤,根据各所述切片的生成时间命名各所述切片的文件名,该文件名与所述生成时间建立唯一时间映射关系;
直播列表更新步骤,在每次生成一个新切片后,生成并更新直播列表;
存储映射建立步骤,将超出直播时间效应的失效切片实时搬移,并建立存储映射关系存储所述失效切片。
7.根据权利要求6所述的实时转换方法,其特征在于,所述文件命名步骤进一步包括:
在每个所述切片生成时,记录所述切片的系统生成时间并转换成对应的UNIX生成时间,第n个切片的UNIX生成时间FT(n)=(T1+(n–1)*D)/D;T1为第一个切片UNIX生成时间,D为切片时长;
根据每个所述切片的所述UNIX生成时间命名所述切片的文件名,第n个切片的文件名FN(n)=FT(n)+“.ts”。
8.根据权利要求7所述的实时转换方法,其特征在于,所述文件命名步骤包括:
若包括多个所述UDP直播流,将最先生成的所述切片对应的所述生成时间命名所述切片的所述文件名。
9.根据权利要求6所述的实时转换方法,其特征在于,所述存储映射建立步骤进一步包括:
将所述失效切片实时搬移出直播目录,并根据所述失效切片的频道名、编码码率以及以小时为单位的生成时间建立所述存储映射关系,分别建立三级目录实时存储所述失效切片。
10.根据权利要求6所述的实时转换方法,其特征在于,所述存储映射建立步骤之后还包括:
点播列表生成步骤,根据提交节目的起始时间及节目时长,生成对应两级点播列表,所述两级点播列表包括各频道的多个编码码率对应一级点播列表和各所述编码码率对应的二级点播列表。
11.一种UDP直播流到HLS直播流的实时转换系统,其特征在于,包括:
数据分离模块,用于实时接收至少一个UDP直播流,并从所述UDP直播流分离出音视频数据;
索引时钟建立模块,用于根据所述UDP直播流中时钟信息及关键帧信息建立符合HLS直播流的各切片的起始索引时钟;
切片生成模块,用于根据各所述切片的所述起始索引时钟,对所述音视频数据进行重新组合和封装,转换成符合HLS直播流的所述切片。
12.根据权利要求11所述的实时转换系统,其特征在于,还包括:
时钟校准模块,用于在建立所述起始索引时钟之前,对分离后所述音视频数据进行时钟校准。
13.根据权利要求11所述的实时转换系统,其特征在于,所述索引时钟建立模块进一步包括:
第一索引建立子模块,用于从分离出的所述音视频数据中找出第一个切片的关键帧,并以所述第一个切片的关键帧在所述UDP直播流中的时钟作为第一个理论起始索引时钟T;
第二索引建立子模块,用于根据所述第一个理论起始索引时钟T和切片时长D,计算出后续切片的理论起始索引时钟TS,第n个切片的理论起始索引时钟TS(n)=T+(n-1)*D;
第三索引建立子模块,用于在分离后的所述音视频数据中找出TS(n+1)和TS(n)之间最小关键帧的时钟TIDR(n)作为第n个切片的所述起始索引时钟。
14.根据权利要求13所述的实时转换系统,其特征在于,所述第一索引建立子模块用于在若包括多个所述UDP直播流时,在多个所述UDP直播流的所述第一个切片的关键帧中最大的时钟作为所述第一理论起始索引时钟。
15.根据权利要求13所述的实时转换系统,其特征在于,所述切片生成模块进一步包括:
切片生成子模块,用于将满足TIDR(n+1)>T’>=TIDR(n)条件的所述音视频数据作为同一切片内切片数据;根据所述切片数据的时钟顺序进行排列组合及TS封装,形成符合HLS直播流的所述切片,所述T’为泛指每个完整的音视频数据包时钟;
时长计算子模块,用于计算每个所述切片时长TD(n),所述TD(n)=TIDR(n+1)-TIDR(n)。
16.根据权利要求11~15任一项所述的实时转换系统,其特征在于,还包括:
文件命名模块,用于在生成所述切片后,根据各所述切片的生成时间命名各所述切片的文件名,该文件名与所述生成时间建立唯一时间映射关系;
直播列表更新模块,用于在每次生成一个新切片后,生成并更新直播列表;
存储映射建立模块,用于将超出直播时间效应的失效切片实时搬移,并建立存储映射关系存储所述失效切片。
17.根据权利要求16所述的实时转换系统,其特征在于,所述文件命名模块进一步包括:
时间转换子模块,用于在每个所述切片生成时,记录所述切片的系统生成时间并转换成对应的UNIX生成时间,第n个切片的UNIX生成时间FT(n)=(T1+(n–1)*D)/D;T1为第一个切片UNIX生成时间,D为切片时长;
命名子模块,用于根据每个所述切片的所述UNIX生成时间命名所述切片的文件名,第n个切片的文件名FN(n)=FT(n)+“.ts”。
18.根据权利要求17所述的实时转换系统,其特征在于,所述命名子模块子模块用于在若包括多个所述UDP直播流时,将最先生成的所述切片对应的所述生成时间命名所述切片的所述文件名。
19.根据权利要求16所述的实时转换系统,其特征在于,所述存储映射建立模块还用于将所述失效切片实时搬移出直播目录,并根据所述失效切片的频道名、编码码率以及以小时为单位的生成时间建立所述存储映射关系,分别建立三级目录实时存储所述失效切片。
20.根据权利要求16所述的实时转换系统,其特征在于,还包括:
点播列表生成模块,用于在转换成符合HLS直播流的所述切片后,根据提交节目的起始时间及节目时长,生成对应两级点播列表,所述两级点播列表包括各频道的多个编码码率对应一级点播列表和各所述编码码率对应的二级点播列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510003445.XA CN104506967B (zh) | 2015-01-05 | 2015-01-05 | Udp直播流到hls直播流的实时转换方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510003445.XA CN104506967B (zh) | 2015-01-05 | 2015-01-05 | Udp直播流到hls直播流的实时转换方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104506967A true CN104506967A (zh) | 2015-04-08 |
CN104506967B CN104506967B (zh) | 2017-11-21 |
Family
ID=52948671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510003445.XA Active CN104506967B (zh) | 2015-01-05 | 2015-01-05 | Udp直播流到hls直播流的实时转换方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104506967B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105979362A (zh) * | 2015-10-29 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种视频处理方法及装置 |
WO2017035804A1 (zh) * | 2015-09-02 | 2017-03-09 | 深圳好视网络科技有限公司 | 一种传送流切片方法及装置 |
CN106603503A (zh) * | 2016-11-22 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 直播数据的处理方法和装置 |
CN106657123A (zh) * | 2016-12-30 | 2017-05-10 | 杭州当虹科技有限公司 | 一种基于hls协议的直播时移方案 |
WO2017101363A1 (zh) * | 2015-12-15 | 2017-06-22 | 乐视控股(北京)有限公司 | 视频直播转点播方法及系统 |
CN107404455A (zh) * | 2016-05-18 | 2017-11-28 | 冯山泉 | 一种直播方法、系统及装置 |
CN108391176A (zh) * | 2018-04-09 | 2018-08-10 | 四川百视通科技有限公司 | 一种rtmp协议到hls协议的实时转换系统及其工作方法 |
CN108810655A (zh) * | 2018-06-29 | 2018-11-13 | 北京比利信息技术有限公司 | 基于ip的直播实时推荐方案的实现方法 |
CN111343511A (zh) * | 2020-03-23 | 2020-06-26 | 烽火通信科技股份有限公司 | 一种通过组播实现的hls直播系统及方法 |
CN108650481B (zh) * | 2018-04-19 | 2021-08-10 | 北京软通智慧城市科技有限公司 | 一种视频流数据的存储方法及装置 |
CN113285947A (zh) * | 2021-05-21 | 2021-08-20 | 烽火通信科技股份有限公司 | 一种hls直播和组播直播接续的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103716662A (zh) * | 2013-12-05 | 2014-04-09 | 乐视网信息技术(北京)股份有限公司 | 一种混合传输方法及服务器 |
US20140380352A1 (en) * | 2013-06-21 | 2014-12-25 | General Instrument Corporation | Trick Play Seek Operation for HLS Converted from DTCP |
-
2015
- 2015-01-05 CN CN201510003445.XA patent/CN104506967B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140380352A1 (en) * | 2013-06-21 | 2014-12-25 | General Instrument Corporation | Trick Play Seek Operation for HLS Converted from DTCP |
CN103716662A (zh) * | 2013-12-05 | 2014-04-09 | 乐视网信息技术(北京)股份有限公司 | 一种混合传输方法及服务器 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017035804A1 (zh) * | 2015-09-02 | 2017-03-09 | 深圳好视网络科技有限公司 | 一种传送流切片方法及装置 |
CN105979362A (zh) * | 2015-10-29 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种视频处理方法及装置 |
WO2017101363A1 (zh) * | 2015-12-15 | 2017-06-22 | 乐视控股(北京)有限公司 | 视频直播转点播方法及系统 |
CN107404455A (zh) * | 2016-05-18 | 2017-11-28 | 冯山泉 | 一种直播方法、系统及装置 |
CN106603503A (zh) * | 2016-11-22 | 2017-04-26 | 腾讯科技(深圳)有限公司 | 直播数据的处理方法和装置 |
CN106657123A (zh) * | 2016-12-30 | 2017-05-10 | 杭州当虹科技有限公司 | 一种基于hls协议的直播时移方案 |
CN108391176A (zh) * | 2018-04-09 | 2018-08-10 | 四川百视通科技有限公司 | 一种rtmp协议到hls协议的实时转换系统及其工作方法 |
CN108650481B (zh) * | 2018-04-19 | 2021-08-10 | 北京软通智慧城市科技有限公司 | 一种视频流数据的存储方法及装置 |
CN108810655A (zh) * | 2018-06-29 | 2018-11-13 | 北京比利信息技术有限公司 | 基于ip的直播实时推荐方案的实现方法 |
CN111343511A (zh) * | 2020-03-23 | 2020-06-26 | 烽火通信科技股份有限公司 | 一种通过组播实现的hls直播系统及方法 |
CN111343511B (zh) * | 2020-03-23 | 2022-04-08 | 武汉市烽视威科技有限公司 | 一种通过组播实现的hls直播系统及方法 |
CN113285947A (zh) * | 2021-05-21 | 2021-08-20 | 烽火通信科技股份有限公司 | 一种hls直播和组播直播接续的方法和装置 |
CN113285947B (zh) * | 2021-05-21 | 2022-04-26 | 烽火通信科技股份有限公司 | 一种hls直播和组播直播接续的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104506967B (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104506967A (zh) | Udp直播流到hls直播流的实时转换方法及系统 | |
US11218740B2 (en) | Decoder for decoding a media signal and encoder for encoding secondary media data comprising metadata or control data for primary media data | |
US12108126B2 (en) | Methods and systems for providing content | |
CN108391176A (zh) | 一种rtmp协议到hls协议的实时转换系统及其工作方法 | |
US20150143444A1 (en) | Transcoding Media Streams Using Subchunking | |
JP2008104225A (ja) | マルチメディアコンテンツに同期化されたメタデータ伝送装置及び方法 | |
CN104620235A (zh) | 用于自适应串流中的区段分界及识别的系统及方法 | |
CN105900400A (zh) | 广播信号发送方法、广播信号发送装置、广播信号接收方法、和广播信号接收装置 | |
CN110619066B (zh) | 一种基于目录树的信息获取方法和装置 | |
CN105765943A (zh) | 发送广播信号的装置、接收广播信号的装置、发送广播信号的方法和接收广播信号的方法 | |
CN102780916B (zh) | 一种视频直播流汇聚分发方法 | |
JPWO2016113960A1 (ja) | 送信装置及び送信方法、並びに受信装置及び受信方法 | |
EP2039155A1 (en) | Method for transforming terrestrial dmb contents and gateway employing the same | |
CN109302384B (zh) | 一种数据的处理方法和系统 | |
CN101321293B (zh) | 一种实现多路节目复用的装置和方法 | |
CN110557608B (zh) | 资源监控方法、装置和计算机可读存储介质 | |
CN103428181B (zh) | 一种应用于IP over DVB的UDP报文传输优化方法 | |
WO2017195668A1 (ja) | 受信装置、及び、データ処理方法 | |
Gao et al. | IEEE standards for advanced audio and video coding in emerging applications | |
CN101686381B (zh) | 基于数字电视的网络广播媒体信息播发方法 | |
CN111711788B (zh) | 一种编码分配方法和装置 | |
US20240357188A1 (en) | Systems and methods for converting hypertext transfer protocol (http) live streaming (hls) streams to real-time broadcast streams that include closed captions and society of cable and telecommunications engineers (scte) markers | |
US9800634B2 (en) | Pull-based media system | |
CN103747294A (zh) | 一种私有节目分类的实现方法 | |
CN105592354A (zh) | 一种基于dsmcc的数据广播显示方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |