CN111246314B - 时移直播方法、服务端装置、客户端装置及直播系统 - Google Patents
时移直播方法、服务端装置、客户端装置及直播系统 Download PDFInfo
- Publication number
- CN111246314B CN111246314B CN202010036578.8A CN202010036578A CN111246314B CN 111246314 B CN111246314 B CN 111246314B CN 202010036578 A CN202010036578 A CN 202010036578A CN 111246314 B CN111246314 B CN 111246314B
- Authority
- CN
- China
- Prior art keywords
- time
- shifting
- directory
- index file
- file
- 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.)
- Active
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/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/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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
-
- 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/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23109—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion by placing content in organized collections, e.g. EPG data repository
-
- 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/26291—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 providing content or additional data updates, e.g. updating software modules, stored at the client
-
- 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/8455—Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
-
- 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/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- 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/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公布了提供一种时移直播方法、服务端装置、客户端装置及直播系统,所述时移直播方法包括:获取目标频道的直播流;将直播流通过预设的流媒体协议进行分片打包,得到直播流的分片文件以及对应的索引文件;将分片文件存储到目标频道对应的分片文件目录下,以及将索引文件存储到目标频道对应的索引文件目录下;基于索引文件目录,对索引文件目录下的索引文件进行时移归档,得到时移归档目录;接收客户端的时移请求,在时移归档目录下的读取对应的时移索引文件返回所述客户端。通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
Description
技术领域
本发明涉及流媒体技术领域,更具体的说,是涉及一种时移直播方法、服务端装置、客户端装置及直播系统。
背景技术
基于HTTP(简称:HTTP,英文:HyperText Transfer Protocol,中文:超文本传输协议)的动态自适应流是一种自适应流媒体传输协议,包括DASH(简称:DASH,英文:DynamicAdaptive Streaming over HTTP,中文:基于HTTP的动态自适应流)或HLS(HLS,HTTP LiveStreaming,中文:基于HTTP的流媒体传输协议)。基于DASH/HLS协议可实现互联网电视的点播、直播、时移、回看等业务。其中,当用户在打开频道,而某个节目已经开始一段时间时,可以通过时移(Time-Shift)的方式对正在进行的直播节目的时间点向前推移,从而可以实现对某个直播节目重新开始播放(Start-Over Playback)。为了实现时移需求,需要在服务端对直播频道内容进行录制归档。现有实现时移直播的技术方法中,大多采用的方法是对直播频道的直播流数据进行录制归档,而归档的形式主要包括基于分片和基于单文件的形式,同时对录制归档的文件创建索引,以便在时移播放时可以定位到具体的文件。但是,现有的时移直播技术方案存在对直播流数据进行录制归档时,实际上是要对同一个频道存储两份相同的数据,直播目录下一份数据,时移目录下一份数据,增加了存储的成本。因此,现有的时移直播存在存储成本较高的问题。
申请内容
本发明的目的是针对上述现有技术存在的缺陷,提供一种时移直播方法,解决现有的时移直播中存储成本较高的问题。
本发明的目的是通过以下技术方案来实现的:
第一方面,提供一种时移直播方法,所述方法包括:
获取目标频道的直播流;
将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;
将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;
基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;
接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。
进一步的,所述基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录,包括:
获取所述索引文件目录的监控信息,所述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;
将所述第一格式的时间戳转换为第二格式的时间戳;
基于所述第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。
进一步的,所述接收客户端的时移请求,在所述时移归档目录中的读取对应的时移索引文件返回所述客户端,包括:
获取所述时移请求中的时移偏移量;
根据所述时移偏移量,计算所述时移的起始时间戳;
将所述起始时间戳转换为第二格式的起始时间戳;
通过所述第二格式的起始时间戳,按预定规则定位到目标时移归档目录;
在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件。
进一步的,所述在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件,包括:
选取第二格式的时间戳比所述第二格式的起始时间戳小的时移索引文件中,第二格式的时间戳最大的时移索引文件作为起始时移索引文件。
进一步的,在所述接收客户端的时移请求之前,所述方法还包括:
接收客户端的资源请求;
判断所述资源请求为时移请求或分片文件请求;
若所述资源请求为分片文件请求,则根据所述分片文件请求在所述分片文件目录下读取对应的分片文件返回所述客户端。
第二方面,还提供一种时移直播方法,用于客户端,所述方法包括:
获取用户发起时移的时移频道地址;
获取用户发起时移请求时的时移偏移量;
基于所述时移频道地址以及所述时移偏移量,生成时移请求;
将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;
其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。
进一步的,所述获取用户发起时移请求时的时移偏移量,包括:
获取用户发起时移请求时的开始时移时间戳;
获取当前时间戳;
计算所述当前时间戳与所述开始时移时间戳的差值作为时移偏移量。
第三方面,还提供一种服务端装置,所述服务端装置包括:
第一获取模块,用于获取目标频道的直播流;
处理模块,用于将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;
存储模块,用于将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;
归档模块,用于基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;
接收与返回模块,用于接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。
第四方面,还提供一种客户端装置,所述客户端装置包括:
第二获取模块,用于获取用户发起时移的时移频道地址;
第三获取模块,用于获取用户发起时移请求时的时移偏移量;
生成模块,用于基于所述时移频道地址以及所述时移偏移量,生成时移请求;
发送和接收模块,用于将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;
其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。
第五方面,还提供一种直播系统,所述系统包括:服务端以及客户端;其中,
所述服务端用于执行如本发明实施例所述的时移直播方法;
所述客户端用于执行如本发明实施例所述的时移直播方法。
本发明带来的有益效果:获取目标频道的直播流;将直播流通过预设的流媒体协议进行分片打包,得到直播流的分片文件以及对应的索引文件;将分片文件存储到目标频道对应的分片文件目录下,以及将索引文件存储到目标频道对应的索引文件目录下;基于索引文件目录,对索引文件目录下的索引文件进行时移归档,得到时移归档目录;接收客户端的时移请求,在时移归档目录下的读取对应的时移索引文件返回所述客户端。通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
附图说明
图1为本发明实施例提供的一种直播系统的架构示意图;
图1a为本发明实施例提供的一种频道目录的结构示意图;
图1b为本发明实施例提供的一种时移归档目录的结构示意图;
图2为本发明实施例提供的一种时移直播方法的流程示意图;
图3为本发明实施例提供的另一种时移直播方法的流程示意图;
图4为本发明实施例提供的另一种时移直播方法的流程示意图;
图4a为本发明实施例提供的两种视频流分片文件的示意图;
图4b为本发明实施例提供的两种音频流分片文件的示意图;
图4c为本发明实施例提供的一种主索引文件的示意图;
图4d为本发明实施例提供的一种时移归档目录文件的示意图;
图4e为本发明实施例提供的一种子索引文件的示意图;
图5为本发明实施例提供的一种服务端装置的结构示意图;
图6为本发明实施例提供的一种服务端装置中归档模块的结构示意图;
图7为本发明实施例提供的一种服务端装置中接收与返回模块的结构示意图;
图8为本发明实施例提供的另一种服务端装置的结构示意图;
图9为本发明实施例提供的一种客户端装置的结构示意图;
图10为本发明实施例提供的一种客户端装置中第三获取模块的结构示意图。
具体实施方式
下面描述本发明的优选实施方式,本领域普通技术人员将能够根据下文所述用本领域的相关技术加以实现,并能更加明白本发明的创新之处和带来的益处。
本发明提供了一种时移直播方法。本发明的目的是通过以下技术方案来实现的:
请参见图1,图1是本发明实施例提供的一种直播系统的架构示意图,如图1所示,所述系统包括:服务端101以及客户端102。
其中,上述的服务端101用于从外部获取到直播信号源,上述的直播信号源为各个不同的直播频道实时上传的直播信号。上述的服务端101也可以称为源站,或者源站服务器,或者源站节点。上述的服务端101支持基于HLS/DASH流媒体协议的直播流打包与分片。上述的直播信号源也可以称为直播流,或者直播流数据等。
上述的客户端102用于生成资源请求信息,上述的资源请求信息包括分片文件请求或索引文件请求,上述的分片文件请求可以理解为直播资源请求,上述的索引文件请求可以理解为点播资源请求、时移资源请求、回看资源请求等。
在一种可能的实施例中,上述的服务端101包括直播打包模块、时移归档模块以及内容分发模块,其中,上述的直播打包模块用于接收直播流,并将该直播流分片打包成预设的流媒体协议下的分片文件以及索引文件。上述预设的流媒体协议可以是基于HLS/DASH流媒体协议。上述的时移归档模块用于对索引文件进行归档,得到时移归档目录以及时移归档目录下的时移索引文件。上述的内容分发模块用于与客户端102进行交互,接收客户端102的资源请求或将客户端102所请求的资源文件返回到客户端102。
本发明实施例中,由于采用直接对HLS/DASH索引文件进行归档的方法,避免了采用私有协议创建索引的局限性,提高了直播系统的通用性。
进一步的,上述的服务端101中还存储有频道目录,在将直播流进行分片打包后,得到的分片文件与索引文件都会存储在频道目录下,上述的频道目录包括分片文件目录以及索引文件目录,上述的分片文件目录用于存储分片文件,上述的索引文件用于存储索引文件。上述的频道目录的目录结构如图1a所示,上述的频道目录包括视频目录(video目录)、音频目录(audio目录)、DASH目录、以及HLS目录。其中,上述视频目录与音频目录为分片文件目录,上述的DASH目录以及HLS目录为索引文件目录。上述视频目录用于存储分片打包生成的视频流分片文件,上述音频目录用于存储分片打包生成的音频流分片文件,上述DASH目录用于存储分片打包生成的DASH协议索引文件,上述HLS目录用于存储分片打包生成的HLS协议索引文件。
对于DASH索引文件,可以只有一个索引文件,被命名为manifest.mpd;对于HLS索引文件,可以包括主索引文件和子索引文件,主索引文件通常命名为master.m3u8,子索引文件通常指不同分辨率的视频流索引文件以及音频流索引文件,比如:如果一个频道有两个分辨率的直播流,分别是480P和720P,那么子索引文件分别为480P.m3u8和720P.m3u8,对于其他分辨率的子索引文件的命名类似。对于音频流索引文件通常命名为audio.m3u8。
上述的索引文件与分片文件之间存在映射关系,可以通过索引文件索引到对应的分片文件。
进一步的,上述时移归档模块监控频道目录下索引文件的目录,即监控频道目录下的DASH目录以及HLS目录,当监控到DASH目录以及HLS目录下的索引文件发生更新时,则对更新的索引文件进行归档,将更新的索引文件归档到时移归档目录下,上述的更新可以理解为DASH目录以及HLS目录下新增索引文件。
上述的时移归档目录的目录结构如图1b所示,上述的时移归档目录包括DASH目录以及HLS目录,在时移归档目录下,归档的目录格式为:$BaseDir/$ChanID/<dash|hls>/yyyymmddhh,其中,BaseDir为时移归档目录的根目录,ChanID表示频道编号,<dash|hls>为协议格式,yyyymmddhh为时间戳,在时移归档目录下时移索引文件的命名规范为<时间戳>_<原索引文件名>。
在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
请参见图2,图2是本发明实施例提供的一种时移直播方法的流程图,应用于图1实施例中的直播系统,如图2所示,所述方法包括:
201、获取目标频道的直播流。
其中,上述直播流可以通过服务端的中的收流/拉流线程从目标频道中进行获取。
202、将直播流通过预设的流媒体协议进行分片打包,将得到直播流的分片文件以及对应的索引文件。
在获取目标频道的直播流后,通过服务端中的直播打包模块将该直播流重新打包,上述预设的流媒体协议可以是基于HLS/DASH流媒体协议,则直播打包模块输出得到基于HLS/DASH流媒体协议的分片文件和索引文件。上述的分片文件也可以称为切片文件。上述的分片文件包括视频流分片文件以及音频流分片文件,上述的索引文件包括DASH协议索引文件以及HLS协议索引文件。
203、将分片文件存储到目标频道对应的分片文件目录下,以及将索引文件存储到目标频道对应的索引文件目录下。
其中,上述的分片文件目录包括视频目录与音频目录,上述的索引文件目录包括DASH目录以及HLS目录。
上述的分片文件包括视频流分片文件以及音频流分片文件,将上述的视频流分片文件存储到视频目录下,将上述的音频流分片文件存储到音频目录下。
204、基于索引文件目录,对索引文件目录下的索引文件进行时移归档,得到时移归档目录。
在该步骤中,上述索引文件目录被上述时移归档模块进行监控,当索引文件目录发生更新时,时移归档模块对更新的索引文件进行归档,得到时移归档目录。
获取索引文件目录的监控信息,上述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;将第一格式的时间戳转换为第二格式的时间戳;基于第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。
具体的,获取并记录索引文件目录中发生更新的索引文件名,并将索引文件临时读入内存。获取索引文件的第一格式的时间戳,上述的第一格式的时间戳可以是Unix时间戳(Unix timestamp)。Unix时间戳,或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
上述第二格式的时间戳可以是yyyymmddhh格式的时间戳,其中,yyyy表示年份,mm表示月份,dd表示日期,hh表示小时。归档的索引文件的命名规范为<Unix时间戳>_<原索引文件名>,即通过Unix时间戳确定索引文件对应第二格式的时间戳,将该索引文件存储到与该第二格式的时间戳对应的目录下。可以理解的,通过第二格式的时间戳,换算出对应索引文件所属日期,将该对应索引文件存储到对应日期的时移归档目录下。上述的第二格式的时间戳也可以称为日期时间戳。将索引文件全部存储到对应日期的时移归档目录下,得到对应的时移归档目录。由于采用Unix时间戳进行记录归档,在归档过程中没有跨天的概念,消除了不支持跨天录制的局限性。
205、接收客户端的时移请求,在时移归档目录下的读取对应的时移索引文件返回客户端。
可选的,在步骤205之前,服务端接收客户端的资源请求;判断上述资源请求为时移请求或分片文件请求;若上述资源请求为分片文件请求,则根据上述分片文件请求在上述分片文件目录下读取对应的分片文件返回所述客户端。
若上述的资源请求为时移请求,则从时移请求中提取时移偏移量d,并获取当前Unix时间戳T,使用当前时间戳减去时移偏移量得到时移的起始时间戳T0=T-d。其中,时移的起始时间戳T0也为Unix时间戳。
将时移的起始时间戳T0转移为第二格式的时间戳,即转换为日期格式时间戳,比如,将T0转移为2019110201,由此可以得到时移索引文件对应日期的时移归档目录作为目标时移归档目录。
在定位得到目标时移归档目录后,遍历该目标时移归档目录下的所有时移索引文件,在时移归档目录下的时移索引文件的命名规范为:<Unix时间戳>_<原索引文件名>,因此,可以通过Unix时间戳进行遍历。并提取出时移索引文件对应的Unix时间戳进行排序。
在得到有序的Unix时间戳序列后,利用二分查法找到比时移的起始时间戳T0小的最大Unix时间戳。根据该最大Unix时间戳,索引得到最大Unix时间戳对应的时移索引文件作为起始时移索引文件。将该起始时移索引文件返回到客户端。
在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
请参见图3,图3是本发明实施例提供的另一种时移直播方法的流程图,应用于图1实施例中的直播系统,如图3所示,所述方法包括:
301、获取用户发起时移的时移频道地址。
上述时移频道地址是用户当前所播放的频道地址。上述的用户发起时移指的是用户对直播进度条进行操作,使进度条的时间点向前推移。
302、获取用户发起时移请求时的时移偏移量。
在该步骤中,上述的时移偏移量可以通过客户端获取用户发起时移请求时的开始时移时间戳,并获取当前时间戳,然后计算所述当前时间戳与所述开始时移时间戳的差值得到,可以将该差值作为时移偏移量。
303、基于时移频道地址以及时移偏移量,生成时移请求。
在该步骤中,上述的时移请求还包括:发起的模式,服务端的域名,服务端的监听端口,索引文件名,以及协议的格式。具体的,上述的时移请求的格式规范为:SCHEME://HOST:PORT/PARAMS/OFFSET/FILE,其中SCHEME是请求的发起的模式,可以是http或https,HOST是服务端的域名,PORT是服务端的监听端口,PARAMS是请求的参数,经过BASE64编码,OFFSET是时移的偏移量,FILE是索引文件名,HLS协议对应master.m3u8,DASH协议对应manifest.mpd。
304、将时移请求发送到服务端,并接收服务端返回的时移索引文件。
在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
请参见图4,图4是本发明实施例提供的另一种时移直播方法的流程图,应用于图1实施例中的直播系统,如图4所示,所述方法包括:
401、服务端接收目标频道的直播流。
在本发明实施例中,为更清楚的说明,假设目标频道的频道编号为:
b026324c6904b2a9cb4b88d6d61c81d1。
直播存储根目录:/media/live。
时移存储根目录:/media/tstv。
频道输入包含2路直播流:480P和720P。
频道输出协议:HLS和DASH
内容分发服务端域名及端口:media.tv:80。
采用加密的HTTP传输模式:https。
在步骤401中,服务端中的直播打包模块接收频道b026324c6904b2a9cb4b88d6d61c81d1的直播流,频道目录对应为:/media/live/b026324c6904b2a9cb4b88d6d61c81d1,该目录下同时存在video、audio、dash和hls目录,如图1a中所示。video目录下存储打包输出的视频流切片文件,包括480P和720P的视频流分片文件,如图4a所示。audio目录下存储打包输出的音频流分片文件,如图4b所示。HLS目录下存储生成的m3u8索引文件,包括一个主索引文件master.m3u8以及3个子索引文件:480P.m3u8、720P.m3u8和audio.m3u8。DASH目录下存储生成的mpd索引文件manifest.mpd。
402、当监控到DASH目录及HLS目录下索引文件的更新时,时移归档模块将更新的索引文件归档到时移归档目录下。
该步骤中,时移归档目录包括DASH时移目录及HLS时移目录,分别对应以下目录:
dash:/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/yyyymmddhh。
hls:/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/hls/yyyymmddhh。
假设在某一时刻监控到索引文件发生更新,该时刻对应的Unix时间戳为1575448744,将Unix时间戳转换为yyyymmddhh的第二格式后对应得到为2019120416,则对于DASH索引文件,进行归档后的文件路径为:
/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_manifest.mpd。
对于HLS索引文件,归档的文件路径为:
/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_480P.m3u8。
/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_720P.m3u8。
/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_audio.m3u8。
由于在HLS索引文件中,master.m3u8文件在创建后在整个过程中保持不变,因此,无需对其进行归档,当时移请求主索引文件时,可以直接从索引文件目录下获取即可。
403、客户端捕获时移事件,并根据时移事件构造时移请求。
在该步骤中,客户端可以是移动终端或机顶盒终端,可以通过移动终端或机顶盒终端可以通过向左滑动进度条的方式进入时移服务。
客户端应用将会捕获该时移事件,假设某一时刻捕获到时移事件,时移的起始时间戳T1=1575450341,当前时间戳T2=1575452141,则计算得到时移偏移量d=1800,假设进入时移前,用户正在观看的目标频道是基于HLS协议分发的,此时,客户端开始构造时移播放地址,然后发起时移服务请求,构造的步骤如下:
1)对下面的请求参数进行Base64编码:
st=tstv&id=b026324c6904b2a9cb4b88d6d61c81d1&sty=hls。
得到:
c3Q9dHN0diZpZD1iMDI2MzI0YzY5MDRiMmE5Y2I0Yjg4ZDZkNjFjODFkMSZzdHk9aGxz。
其中,st表示服务类型(service type),tstv表示时移直播,id表示频道编号,sty表示流类型(stream type)。
2)按照时移的请求规范构造时移请求的URL,得到:
https://media.tv/c3Q9dHN0diZpZD1iMDI2MzI0YzY5MDRiMmE5Y2I0Yjg4ZDZkNjF jODFkMSZzdHk9aGxz/1800/master.m3u8。
在得到时移请求的URL,向服务端发送该时移请求。
404、服务端接收到时移请求后,对时移请求进行解析,并读取索引文件返回到客户端。
在该步骤中,上述的对时移请求进行解析可以是:
首先从时移请求中提取请求参数并解码获取服务类型st=tstv、频道编号id=b026324c6904b2a9cb4b88d6d61c81d以及分发流协议sty=hls和时移偏移量d=1800。服务端检测到请求的是HLS主索引文件,因此,直接从索引文件目录下查找和读取索引文件,HLS主索引文件的存储路径为:
/media/live/b026324c6904b2a9cb4b88d6d61c81d/hls/master.m3u8。
主索引文件的内容如图4c所示。
405、客户端获取到主索引文件后,对主索引进行解析,并请求主索引下一个目标码率的子索引文件及对应的音频子索引文件。
在该步骤中,解析主索引文件后,是首先请求480P.m3u8还是请求720P.m3u8取决于客户端播放器的实现机制,通常开始时先请求低码率的子索引文件。
406、客户端构造对子索引文件的时移请求。
下面假设客户端以请求480P.m3u8为例说明内容分发模块对子索引文件处理的流程。客户端构造子索引文件的时移请求URL向服务端发起请求,时移请求URL为:
https://media.tv/c3Q9dHN0diZpZD1iMDI2MzI0YzY5MDRiMmE5Y2I0Yjg4ZDZkNjF jODFkMSZzdHk9aGxz/1800/480P.m3u8。
407、服务端对子索引文件的时移请求进行处理,并返回对应的子索引文件。
服务端收到子索引请求后,首先从时移请求URL中提取请求参数并解码获取服务类型st=tstv、频道编号id=b026324c6904b2a9cb4b88d6d61c81d以及分发流协议sty=hls和时移偏移量d=1800。服务端检测到请求的是HLS子索引文件,获取当前时间戳T=1575460481,则计算得到时移偏移的起始时间戳T1=T-1800=1575458681,将T1转成yyyymmddhh格式后得到:2019120419,根据第二格式的时间戳2019120419,可以定位到时移归档目录为:/media/tstv/b026324c6904b2a9cb4b88d6d61c81d/hls/2019120419,假设该时移归档目录下归档的文件如图4d所示。
遍历上述时移归档目录下归档的文件,并提取对应的时间戳,然后对时间戳数组进行排序,最后得到如下有序时间戳数组:
[1575458373,1575458384,1575458394,1575458405,1575458415,1575458425,1575458436,1575458446,1575458457,1575458467,1575458477,1575458488,1575458498,1575458509,1575458519,1575458530,1575458540,1575458550,1575458561,1575458571,1575458582,1575458592,1575458602,1575458613,1575458623,1575458634,1575458644,1575458655,1575458675,1575458686,1575458696,1575458707,1575458717,1575458727,1575458738,1575458748,1575458759,1575458769,1575458780,1575458790,1575458800]。
从有序的时间戳数组中找到比时移的起始时间戳小的最大时间戳,上述计算中得到的时移起始时间戳为T1=1575458681,在上述数组中通过二分查找可以找到比T1小的最大时间戳是T2=1575458675,由此,可以根据该时间戳定位到相应的时移索引文件路径:
/media/tstv/b026324c6904b2a9cb4b88d6d61c81d/hls/2019120419/1575458675_480P.m3u8。
服务端读取上述路径的索引文件作为目标子索引文件进行返回。
408、客户端收到子索引文件后,构造对应的分片文件的资源请求。
在该步骤中,如图4e所示,解析子索引文件并构造对应的资源请求URL。
假设客户端构造请求第一个分片文件的请求,其资源请求URL为:
https://media.tv/c3Q9dHN0diZpZD1iMDI2MzI0YzY5MDRiMmE5Y2I0Yjg4ZDZkNjF jODFkMSZzdHk9aGxz/1800/video/480P_1359.m4s。
409、服务端检测到请求的是HLS协议分片文件,从对应分片文件目录下查找和读取分片文件返回客户端。
其中,上述分片文件在直播目录下的存储路径为:
/media/live/b026324c6904b2a9cb4b88d6d61c81d/video/480P_1359.m4s
服务端读取上述路径的媒体文件数据并返回。
在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
请参见图5,图5是本发明实施例提供的一种服务端装置的结构示意图,如图5所示,所述服务端装置包括:
第一获取模块501,用于获取目标频道的直播流;
处理模块502,用于将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;
存储模块503,用于将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;
归档模块504,用于基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;
接收与返回模块505,用于接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。
可选的,如图6所示,所述归档模块504包括:
第一获取单元5041,用于获取所述索引文件目录的监控信息,所述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;
第一转换单元5042,用于将所述第一格式的时间戳转换为第二格式的时间戳;
归档单元5043,用于基于所述第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。
可选的,如图7所示,所述接收与返回模块505包括:
第二获取单元5051,用于获取所述时移请求中的时移偏移量;
第一计算单元5052,用于根据所述时移偏移量,计算所述时移的起始时间戳;
第二转换单元5053,用于将所述起始时间戳转换为第二格式的起始时间戳;
第一定位单元5054,用于通过所述第二格式的起始时间戳,按预定规则定位到目标时移归档目录;
第二定位单元5055,用于在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件。
可选的,所述第二定位单元5055还用于选取第二格式的时间戳比所述第二格式的起始时间戳小的时移索引文件中,第二格式的时间戳最大的时移索引文件作为起始时移索引文件。
可选的,如图8所示,所述装置还包括:
接收模块506,用于接收客户端的资源请求;
判断模块507,用于判断所述资源请求为时移请求或分片文件请求;
返回模块508,用于若所述资源请求为分片文件请求,则根据所述分片文件请求在所述分片文件目录下读取对应的分片文件返回所述客户端。
在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
请参见图9,图9是本发明实施例提供的一种客户端装置的结构示意图,如图9所示,所述边客户端装置包括:
第二获取模块901,用于获取用户发起时移的时移频道地址;
第三获取模块902,用于获取用户发起时移请求时的时移偏移量;
生成模块903,用于基于所述时移频道地址以及所述时移偏移量,生成时移请求;
发送和接收模块904,用于将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;
其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。
可选的,如图10所示,所述第三获取模块902包括:
第三获取单元9021,用于获取用户发起时移请求时的开始时移时间戳;
第四获取单元9022,用于获取当前时间戳;
第二计算单元9023,用于计算所述当前时间戳与所述开始时移时间戳的差值作为时移偏移量。
在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。
本发明实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例提供的时移直播方法中的步骤。
本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例提供的时移直播方法中的步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的
另外,在本发明各个实施例中的处理器、芯片可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上硬件集成在一个单元中。计算机可读存储介质或计算机可读程序可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (4)
1.一种时移直播方法,用于服务端,其特征在于,所述方法包括:
获取目标频道的直播流;
将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;
将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;
基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;
接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端;
其中,所述基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录,包括:
获取所述索引文件目录的监控信息,所述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳,所述第一格式的时间戳为Unix时间戳;
将所述第一格式的时间戳转换为第二格式的时间戳,所述第二格式的时间戳为日期时间戳;
基于所述第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。
2.如权利要求1所述的时移直播方法,其特征在于,所述接收客户端的时移请求,在所述时移归档目录中的读取对应的时移索引文件返回所述客户端,包括:
获取所述时移请求中的时移偏移量;
根据所述时移偏移量,计算所述时移的起始时间戳;
将所述起始时间戳转换为第二格式的起始时间戳;
通过所述第二格式的起始时间戳,按预定规则定位到目标时移归档目录;
在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件。
3.如权利要求2所述的时移直播方法,其特征在于,所述在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件,包括:
选取第二格式的时间戳比所述第二格式的起始时间戳小的时移索引文件中,第二格式的时间戳最大的时移索引文件作为起始时移索引文件。
4.如权利要求1所述的时移直播方法,其特征在于,在所述接收客户端的时移请求之前,所述方法还包括:
接收客户端的资源请求;
判断所述资源请求为时移请求或分片文件请求;
若所述资源请求为分片文件请求,则根据所述分片文件请求在所述分片文件目录下读取对应的分片文件返回所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010036578.8A CN111246314B (zh) | 2020-01-14 | 2020-01-14 | 时移直播方法、服务端装置、客户端装置及直播系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010036578.8A CN111246314B (zh) | 2020-01-14 | 2020-01-14 | 时移直播方法、服务端装置、客户端装置及直播系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111246314A CN111246314A (zh) | 2020-06-05 |
CN111246314B true CN111246314B (zh) | 2021-12-17 |
Family
ID=70865452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010036578.8A Active CN111246314B (zh) | 2020-01-14 | 2020-01-14 | 时移直播方法、服务端装置、客户端装置及直播系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111246314B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113609074B (zh) * | 2021-08-13 | 2022-03-15 | 北京华益精点生物技术有限公司 | 医学影像文件入库归档的方法及相关装置 |
CN113727189A (zh) * | 2021-08-30 | 2021-11-30 | 上海哔哩哔哩科技有限公司 | 支持多种流媒体传输协议的媒体播放方法和系统 |
CN114900718A (zh) * | 2022-07-12 | 2022-08-12 | 深圳市华曦达科技股份有限公司 | 一种多区域感知的自动多字幕实现方法、装置及系统 |
CN115442663A (zh) * | 2022-09-02 | 2022-12-06 | 中国建设银行股份有限公司 | 视频的处理方法、装置、电子设备及计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102857797A (zh) * | 2012-04-12 | 2013-01-02 | 天脉聚源(北京)传媒科技有限公司 | 一种视频播放的后台控制方法及系统 |
CN103051931A (zh) * | 2011-10-11 | 2013-04-17 | 中兴通讯股份有限公司 | 回看节目录制、播放方法、服务器、客户端及系统 |
CN103618912A (zh) * | 2013-11-26 | 2014-03-05 | 乐视网信息技术(北京)股份有限公司 | 一种直播时移方法及服务器 |
CN105979404A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种流媒体的处理方法及装置 |
CN109729371A (zh) * | 2018-12-21 | 2019-05-07 | 中电福富信息科技有限公司 | 一种基于hls协议多级管理的直播时移系统及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065050A (en) * | 1996-06-05 | 2000-05-16 | Sun Microsystems, Inc. | System and method for indexing between trick play and normal play video streams in a video delivery system |
US7424209B2 (en) * | 2003-02-13 | 2008-09-09 | Microsoft Corporation | System and method for real-time data archival |
CN101848366B (zh) * | 2010-05-07 | 2013-12-04 | 中兴通讯股份有限公司 | Iptv系统中时移分片文件的归档及节目播放方法和设备 |
CN103581693B (zh) * | 2013-11-12 | 2017-02-15 | 北京清源新创科技有限公司 | 面向互联网的基于分片传输的大尺度直播时移方法及系统 |
CN103607639A (zh) * | 2013-11-26 | 2014-02-26 | 乐视网信息技术(北京)股份有限公司 | 一种直播时移方法及服务器 |
CN105263042A (zh) * | 2015-10-13 | 2016-01-20 | 华为技术有限公司 | 直播时移方法、装置和机顶盒 |
CN105828107A (zh) * | 2016-03-30 | 2016-08-03 | 乐视控股(北京)有限公司 | 一种直播延时方法及装置 |
CN106572358B (zh) * | 2016-11-11 | 2022-03-08 | 青岛海信宽带多媒体技术有限公司 | 一种直播时移方法及客户端 |
CN106789976A (zh) * | 2016-12-07 | 2017-05-31 | 中兴通讯股份有限公司 | 媒体文件的播放方法、服务端、客户端及系统 |
-
2020
- 2020-01-14 CN CN202010036578.8A patent/CN111246314B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103051931A (zh) * | 2011-10-11 | 2013-04-17 | 中兴通讯股份有限公司 | 回看节目录制、播放方法、服务器、客户端及系统 |
CN102857797A (zh) * | 2012-04-12 | 2013-01-02 | 天脉聚源(北京)传媒科技有限公司 | 一种视频播放的后台控制方法及系统 |
WO2013152689A1 (zh) * | 2012-04-12 | 2013-10-17 | 天脉聚源(北京)传媒科技有限公司 | 一种视频播放的后台控制方法及系统 |
CN103618912A (zh) * | 2013-11-26 | 2014-03-05 | 乐视网信息技术(北京)股份有限公司 | 一种直播时移方法及服务器 |
CN105979404A (zh) * | 2015-12-01 | 2016-09-28 | 乐视致新电子科技(天津)有限公司 | 一种流媒体的处理方法及装置 |
CN109729371A (zh) * | 2018-12-21 | 2019-05-07 | 中电福富信息科技有限公司 | 一种基于hls协议多级管理的直播时移系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111246314A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111246314B (zh) | 时移直播方法、服务端装置、客户端装置及直播系统 | |
US10601887B2 (en) | Stream handling using an intermediate format | |
US20230319229A1 (en) | System and method for modifying media streams using metadata | |
CN106572358B (zh) | 一种直播时移方法及客户端 | |
TWI575950B (zh) | 串流伺服器及用於將一內容串流透過一網路提供至一用戶端之方法 | |
US9471680B2 (en) | Audio/video archiving system and method | |
US9392307B2 (en) | Smart pre-load for video-on-demand in an HTTP adaptive streaming environment | |
US9038116B1 (en) | Method and system for recording streams | |
EP2467786B1 (en) | Method and system for http-based stream delivery | |
CN109819345B (zh) | 直播视频的处理、时移方法、视频处理装置及云存储系统 | |
US9560422B2 (en) | Peer-assisted video distribution | |
US11540020B2 (en) | Method for realizing video information preview, client and storage medium | |
WO2016184229A1 (zh) | 直播视频的录制方法和系统 | |
WO2017092327A1 (zh) | 一种播放方法及装置 | |
CN105828096B (zh) | 媒体流文件的处理方法和装置 | |
CN109587514B (zh) | 一种视频播放方法、介质和相关装置 | |
WO2011090715A2 (en) | Edge server for format-agnostic streaming architecture | |
US11750675B2 (en) | Low latency media streaming | |
CN111541903A (zh) | 直播加速方法、源站端、边缘节点、客户端及直播系统 | |
EP3167617B1 (fr) | Procédé et dispositif d'enregistrement à distance de programmes vidéo | |
US20200037041A1 (en) | Video distribution apparatus, distribution method, and recording medium | |
CN112929677A (zh) | 直播视频的回看方法、装置和服务器 | |
KR20220122973A (ko) | 전달된 콘텐츠 스트림에 기초하여 콘텐츠 스트림을 제공하는 기술 | |
CN112601131B (zh) | 一种hls视频切片文件存储优化方法 | |
GB2531700A (en) | Methods for identifying and monitoring use of audio entities |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |