CN110309342A - 一种媒体文件获取方法、装置及存储介质 - Google Patents
一种媒体文件获取方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110309342A CN110309342A CN201810267285.3A CN201810267285A CN110309342A CN 110309342 A CN110309342 A CN 110309342A CN 201810267285 A CN201810267285 A CN 201810267285A CN 110309342 A CN110309342 A CN 110309342A
- Authority
- CN
- China
- Prior art keywords
- file
- index file
- media
- media file
- acquisition request
- 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
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000005540 biological transmission Effects 0.000 claims description 38
- 238000012360 testing method Methods 0.000 description 25
- 239000000284 extract Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 9
- 239000000203 mixture Substances 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000000151 deposition Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001727 in vivo Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/61—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/71—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种媒体文件获取方法、装置及存储介质,本发明实施例可以获取索引文件获取请求,所述索引文件获取请求中携带第一回源信息和索引文件标识;获取与所述索引文件标识对应的索引文件;将所述第一回源信息添加至所述索引文件中,得到目标索引文件;获取基于所述目标索引文件的媒体文件获取请求,根据所述媒体文件获取请求获取媒体文件。该方案通过改写索引文件,得到目标索引文件,从而可以根据基于目标索引文件的媒体文件获取请求成功获取到媒体文件,提高了媒体文件获取的成功率。
Description
技术领域
本发明涉及媒体数据处理技术领域,具体涉及一种媒体文件获取方法、装置及存储介质。
背景技术
随着信息技术的发展,人们的生活越来越丰富,例如,用户可以在终端上点播媒体文件进行观看,此时终端可以通过客户端从服务器上拉取媒体文件,并播放该媒体文件,在客户端拉取媒体文件的过程中,运营商还可以为客户端提供免流服务。其中,免流为客户端使用移动蜂窝网络请求特定流量,运营商不收取流量费。在免流播放媒体文件时,可以是基于超文本传输协议(HyperText Transfer Protocol,HTTP)的流媒体网络传输协议(HTTPLive Streaming,HLS)来实现,其中HLS协议把媒体文件对应的整个媒体流分成一个个小的媒体分片文件(即ts文件),此时HLS协议引入一个索引文件(即m3u8文件),对于同一个媒体文件的媒体流来说,这些ts文件通过m3u8文件来组成一个完整的媒体流,而客户端在拉取HLS协议的媒体文件时,首先请求m3u8文件,然后根据m3u8文件中的ts文件的相关路径信息逐个请求每个ts文件来播放。
现有技术中,根据HLS协议免流播放媒体文件时,客户端先向免流代理服务器请求m3u8文件,免流代理服务器根据m3u8文件的请求到存放m3u8文件的服务器上获取该m3u8文件,然后将m3u8文件发送给客户端。在客户端得到m3u8文件后,接着客户端向免流代理服务器请求ts文件,此时客户端将ts文件请求发送给免流代理服务器。免流代理服务器在接收到ts文件请求后,由于ts文件请求中已经丢失ts文件的相关路径信息,而本地缓存又不存在ts文件,因此拉取ts文件失败,即在免流的情况下,无法通过免流代理服务器拉取到需要播放的媒体文件,因此,导致媒体文件获取失败。
发明内容
本发明实施例提供一种媒体文件获取方法、装置及存储介质,旨在提高媒体文件获取的成功率。
为解决上述技术问题,本发明实施例提供以下技术方案:
一种媒体文件获取方法,包括:
获取索引文件获取请求,所述索引文件获取请求中携带第一回源信息和索引文件标识;
获取与所述索引文件标识对应的索引文件;
将所述第一回源信息添加至所述索引文件中,得到目标索引文件;
获取基于所述目标索引文件的媒体文件获取请求,根据所述媒体文件获取请求获取媒体文件。
一种媒体文件获取装置,包括:
请求获取单元,用于获取索引文件获取请求,所述索引文件获取请求中携带第一回源信息和索引文件标识;
索引文件获取单元,用于获取与所述索引文件标识对应的索引文件;
添加单元,用于将所述第一回源信息添加至所述索引文件中,得到目标索引文件;
媒体文件获取单元,用于获取基于所述目标索引文件的媒体文件获取请求,根据所述媒体文件获取请求获取媒体文件。
一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行上述媒体文件获取方法中的步骤。
本发明实施例通过获取携带第一回源信息和索引文件标识的索引文件获取请求,以及获取与索引文件标识对应的索引文件;然后改写索引文件,即将第一回源信息添加至索引文件中,得到目标索引文件;进一步获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。该方案通过改写索引文件,从而可以根据基于改写后的索引文件的媒体文件获取请求成功获取到媒体文件,提高了媒体文件获取的成功率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的媒体文件获取系统的场景示意图;
图2是本发明实施例提供的媒体文件获取方法的流程示意图;
图3是本发明实施例提供的媒体文件获取的网络拓扑结构示意图;
图4是本发明实施例提供的媒体文件获取方法的另一流程示意图;
图5是本发明实施例提供的媒体文件获取的结构示意图;
图6是本发明实施例提供的媒体文件获取的网络拓扑结构另一示意图;
图7是本发明实施例提供的媒体文件获取装置的结构示意图;
图8是本发明实施例提供的媒体文件获取装置的另一结构示意图;
图9是本发明实施例提供的媒体文件获取装置的另一结构示意图;
图10是本发明实施例提供的媒体文件获取装置的另一结构示意图;
图11是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种媒体文件获取方法方法、装置及存储介质。
请参阅图1,图1为本发明实施例所提供的媒体文件获取系统的场景示意图,该媒体文件获取系统可以包括媒体文件获取装置,该媒体文件获取装置具体可以集成在服务器中,主要用于获取索引文件获取请求,该索引文件获取请求的获取方式可以是接收客户端发送的,也可以是从其他服务器获取等;该索引文件获取请求中可以携带第一回源信息和索引文件标识等,该第一回源信息可以是索引文件的相关路径信息等,该索引文件标识可以是索引文件的名称或编号等。在得到携带第一回源信息和索引文件标识等的索引文件获取请求后,可以获取与索引文件标识对应的索引文件,该索引文件可以从本地缓存中获取,或者从与第一回源信息对应的源站上获取等,该源站可以是存储索引文件的服务器。在得到索引文件后,可以对索引文件进行改写,例如,可以将第一回源信息添加至索引文件中,得到目标索引文件,然后可以将目标索引文件存储至本地缓存,还可以将目标索引文件发送给客户端。其次,可以获取基于目标索引文件的媒体文件获取请求,该媒体文件获取请求可以是根据目标索引文件生成的,该媒体文件获取请求的获取方式可以是接收客户端发送的。最后,可以根据媒体文件获取请求获取媒体文件,例如,可以从本地缓存中获取,也可以从存储媒体文件的第二站源上获取等,其中第一站源和第二站源可以是同一个服务器,也可以是不同的服务器,此时可以将媒体文件存储至本地缓存,还可以将媒体文件发送给客户端,等等。
此外,该媒体文件获取系统还可以包括源站,该站源可以包括一个或多个,该站源主要用于接收服务器发送携带索引文件标识的索引文件获取请求,并根据索引文件获取请求向该服务器返回的与索引文件标识对应的索引文件;或者是,用于接收服务器发送携带媒体文件标识的媒体文件获取请求,并根据媒体文件获取请求向该服务器返回的与媒体文件标识对应的媒体文件等。
需要说明的是,图1所示的媒体文件获取系统的场景示意图仅仅是一个示例,本发明实施例描述的媒体文件获取系统以及场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着媒体文件获取系统的演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
以下分别进行详细说明。
在本实施例中,将从媒体文件获取装置的角度进行描述,该媒体文件获取装置具体可以集成在服务器或网关等网络设备中。
一种媒体文件获取方法,包括:获取索引文件获取请求,索引文件获取请求中携带第一回源信息和索引文件标识;获取与索引文件标识对应的索引文件;将第一回源信息添加至索引文件中,得到目标索引文件;获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。
请参阅图2,图2是本发明一实施例提供的媒体文件获取方法的流程示意图。该媒体文件获取方法可以包括:
在步骤S101中,获取索引文件获取请求,索引文件获取请求中携带第一回源信息和索引文件标识。
其中,媒体文件可以是视频文件、音频文件或者是音视频文件等,需要获取的媒体文件可以是基于HLS协议传输的媒体文件,也可以是基于其他协议传输的媒体文件,具体内容在此处不作限定。以HLS协议为例,由于基于HLS协议的媒体文件传输的过程中,HLS协议把媒体文件对应的整个媒体流分成一个个小的媒体分片文件(也可以称为ts文件),媒体文件可以包括多个媒体分片文件,可以用于存储媒体流,每个媒体分片文件之间存在前后依赖关系,即各个媒体分片文件之间需要按照先后顺序组成一个完整的媒体流,该媒体流可以封装成媒体文件。为了能够方便获取到媒体文件,可以用索引文件(也可以称为m3u8文件)存储媒体文件的各个媒体分片文件的配置信息、顺序信息和相关路径信息等信息。因此,在获取媒体文件时,可以先获取索引文件,再根据索引文件中存储的信息获取媒体文件,当播放媒体文件时,可以根据索引文件里的信息逐个请求并播放组成媒体文件的媒体分片文件。
首先,媒体文件获取装置获取索引文件获取请求,其中,索引文件获取请求中可以携带第一回源信息和索引文件标识之外,还可以携带其他的信息,具体内容在此处不作限定。该第一回源信息可以是索引文件的相关路径信息等,该第一回源信息可以用于指示存储索引文件的源站,该源站可以是存储索引文件的服务器。该索引文件标识可以是索引文件的名称或编号等,该索引文件标识用于唯一标识索引文件,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。
索引文件获取请求的获取方式可以包括:方式一,接收客户端发送的索引文件获取请求,其中,该客户端可以是在接收到用户输入的点播指令时,根据点播指令生成索引文件获取请求,该点播指令用于指示客户端获取媒体文件,并播放获取到的媒体文件,该客户端可以是集成在手机或电脑等终端上。方式二,从存储索引文件获取请求的样本库中获取,该样本库中可以存储多个不同的索引文件获取请求,技术人员可以将预先模拟的索引文件获取请求存储至该样本库中,该样本库可以是设置在服务器上,也可以是设置在终端上等。方式三,向其他服务器发送获取请求,并接收其他服务器基于该获取请求返回的索引文件获取请求,其中,其他服务器可以存储有客户端发送的或技术人员上传的索引文件获取请求。可以理解的是,还可以通过其他的获取方式获取索引文件获取请求,具体内容在此处不作限定。
在步骤S102中,获取与索引文件标识对应的索引文件。
在获取到携带索引文件标识和的第一回源信息索引文件获取请求后,媒体文件获取装置可以从索引文件获取请求中提取出索引文件标识,并获取与索引文件标识对应的索引文件。其中,索引文件的获取方式可以是从媒体文件获取装置的本地缓存中获取,或者是,从与第一回源信息对应的第一源站中获取等,该第一回源信息可以是索引文件的相关路径信息等,该第一源站可以是存储索引文件的服务器。
在某些实施方式中,获取与索引文件标识对应的索引文件的步骤可以包括:从与第一回源信息对应的第一源站中,获取与索引文件标识对应的索引文件。
具体地,媒体文件获取装置在获取到携带索引文件标识和第一回源信息等的索引文件获取请求后,可以从索引文件获取请求中提取出索引文件标识和第一回源信息等,然后可以查询本地缓存,判断本地缓存中是否存在与索引文件标识对应的索引文件。当本地缓存中不存在与索引文件标识对应的索引文件时,可以确定与第一回源信息对应的第一源站,并从第一源站中获取与索引文件标识对应的索引文件。
需要说明的是,本地缓存中可以预先存储索引文件和/目标索引文件,该目标索引文件为对索引文件进行改写后,得到改写后的索引文件。在获取与索引文件标识对应的索引文件的过程中,媒体文件获取装置可以查询本地缓存中是否存储有索引文件,当本地缓存中不存在索引文件时,可以从第一回源信息对应的第一源站中获取索引文件;当本地缓存中存在索引文件时,可以从本地缓存中获取索引文件。或者是,媒体文件获取装置可以查询本地缓存中是否存储有目标索引文件,当本地缓存中不存在目标索引文件时,需要获取索引文件,并执行将第一回源信息添加至索引文件中,得到目标索引文件;获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件的步骤;当本地缓存中存在目标索引文件时,可以从本地缓存中获取目标索引文件,并执行获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件的步骤。
本地缓存中不存在索引文件(或目标索引文件)的情况可以包括:当媒体文件获取装置是第一次获取到索引文件获取请求时,本地缓存中未存储有索引文件;或者是,本地缓存已经满时,原先获取到的索引文件未能存储至本地缓存中;或者是当前获取到的索引文件获取请求,与前一次获取到的索引文件获取请求之间的时间间隔大于预设时间间隔,已经将根据前一次的索引文件获取请求获取到的索引文件从本地缓存中删除;或者是,本地缓存每隔预设时间段进行更新,本地缓存中存储索引文件在本地缓存更新时已经被清除;等等。
当本地缓存中不存在索引文件时,可以从第一回源信息对应的第一源站回源得到索引文件。其中,回源可以理解为媒体文件获取装置在本地缓存中不存在索引文件标识对应的索引文件时,可以把索引文件获取请求转发到存储索引文件的服务器,并从该服务器拉取该索引文件的过程。
在某些实施方式中,从与第一回源信息对应的第一源站中,获取与索引文件标识对应的索引文件的步骤可以包括:从索引文件获取请求中提取出第一回源信息,并确定与第一回源信息对应的第一源站;将索引文件获取请求反向代理到第一源站;接收第一源站基于索引文件获取请求返回的与索引文件标识对应的索引文件。
具体地,媒体文件获取装置在接收到客户端发送的携带第一回源信息和索引文件标识的索引文件获取请求后,可以从索引文件获取请求中提取出第一回源信息和索引文件标识,然后确定与第一回源信息对应的第一源站,并将索引文件获取请求反向代理到第一源站,即将索引文件获取请求发送给第一源站,以使得第一源站在接收到索引文件获取请求后,可以从索引文件获取请求中提取出索引文件标识,并从预先存储索引文件的数据库中,获取与索引文件标识对应的索引文件,将获取到的索引文件发送给媒体文件获取装置。媒体文件获取装置接收第一源站基于索引文件获取请求返回的与索引文件标识对应的索引文件。
以下进行举例说明,例如,当客户端需要点播媒体文件时,首先客户端根据HLS协议向文件获取装置发送索引文件获取请求,该索引文件获取请求可以是统一资源定位符(Uniform Resource Locator,URL),该URL可以为:
http://test.vodflowproxy.myqcloud.com/live/test.m3u8?sourceUrl=http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8
其中,该URL中携带第一回源信息为“http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8”,以及索引文件标识“test.m3u8”。存储索引文件的第一站源将索引文件名称为“68l6U8ck8Hg.m3u8”设置为索引文件标识,将索引文件标识与索引文件关联存储,使得根据索引文件标识可以获取到索引文件。若本地缓存中存储有索引文件,则将以索引标识设置为“test.m3u8”,并将索引文件标识与索引文件关联存储,使得根据索引文件标识可以获取到索引文件。
媒体文件获取装置在接收到客户端发送的携带第一回源信息和索引文件标识的索引文件获取请求(即URL)后,可以根据预先设置的第一标识,例如“?”,以及第二标识,例如“/”,从URL中检索出第一标识“?”,然后从第一标识“?”所在位置往URL的首位方向查找,直到找到第一个“/”,该第一个“/”即为第二标识,此时可以从第一标识与第二标识之间提取出索引文件标识“test.m3u8”。
在得到索引文件标识“test.m3u8”后,媒体文件获取装置可以查询本地缓存,判断本地缓存中是否存在与索引文件标识“test.m3u8”对应的索引文件。若本地缓存中存在与“test.m3u8”对应的索引文件,则从本地缓存中获取与“test.m3u8”对应的索引文件,并将获取到的索引文件发送给客户端。若本地缓存中不存在与“test.m3u8”对应的索引文件,则根据第一回源信息:“http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8”,从第一源站上获取与“68l6U8ck8Hg.m3u8”对应的索引文件,然后以“test.m3u8”为索引文件标识将索引文件存储至本地缓存中,并将索引文件发送给客户端。客户端在得到索引文件后可以向媒体文件获取装置请求媒体文件,得到媒体文件后,即可播放该媒体文件。
得到的索引文件(即未改写的索引文件)可以如下:
在步骤S103中,将第一回源信息添加至索引文件中,得到目标索引文件。
媒体文件获取装置在得到索引文件后,可以从索引文件获取请求中提取出第一回源信息,将第一回源信息添加至索引文件中(即改写索引文件),得到目标索引文件,该目标索引文件即为改写后的索引文件,其中,将第一回源信息添加至索引文件中的添加方式可以根据实际需要进行灵活设置,具体内容在此处不作限定。将第一回源信息添加至索引文件的目的在于,使得基于目标索引文件的媒体文件获取请求中,可以携带用于指示存储媒体文件的源站的回源信息。
在某些实施方式中,获取索引文件获取请求的步骤可以包括:接收客户端发送的索引文件获取请求。将第一回源信息添加至索引文件中,得到目标索引文件的步骤之前,媒体文件获取方法还包括:从索引文件获取请求中提取出客户端的客户端标识,当客户端标识在预设的白名单中时,确定客户端为免流客户端,并执行将第一回源信息添加至索引文件中,得到目标索引文件的步骤。
具体地,媒体文件获取装置可以为免流的客户端(简称免流客户端)提供服务,例如,在视频云点播免流项目中,免流客户端可以通过HLS协议从媒体文件获取装置获取待播放的媒体文件,并基于接收到用户输入的点播指令对该媒体文件进行播放。其中,免流可以是客户端使用移动蜂窝网络请求运营商不收取流量费的特定流量。媒体文件获取装置可以预先设置黑名单和/或白名单,其中,黑名单和白名单可以用于存储客户端标识,储客户端标识在黑名单中的客户端为非免流客户端,储客户端标识在白名单中的客户端为免流客户端。
当媒体文件获取装置接收到客户端发送的索引文件获取请求后,可以从索引文件获取请求中提取出客户端的客户端标识,然后判断该客户端标识是否存在白名单中,该客户端标识可以是客户端网络之间互连的协议(Internet Protocol,IP)、客户端身份标识(identification,ID)、客户端名称、或客户端编号等。当客户端标识在白名单中时,可以确定该客户端为免流客户端。当客户端为免流客户端时,可以判断本地缓存中是否存在目标索引文件,当本地缓存中不存在目标索引文件时,可以从与第一回源信息对应的第一源站中,获取与索引文件标识对应的索引文件,并执行将第一回源信息添加至索引文件中,得到目标索引文件的步骤。由于媒体文件获取装置是接收客户端发送的索引文件获取请求,因此需要将得到的目标索引文件发送给客户端。当本地缓存中存在目标索引文件时,可以从本地缓存中获取目标索引文件,可以将获取到的目标索引文件发送给客户端。当客户端标识不在白名单中时,可以确定该客户端为非免流客户端,可以根据非免流对应的索引文件获取请求获取索引文件。
在某些实施方式中,媒体文件获取装置将第一回源信息添加至索引文件中,得到目标索引文件的步骤可以包括:
解析索引文件,从解析后的索引文件中确定媒体文件标识所在的位置;确定索引文件获取请求中存在的第一字段标识和第二字段标识;根据第一字段标识和第二字段标识从索引文件获取请求中提取出第一回源信息;将第一回源信息添加至媒体文件标识所在的位置的尾部,得到目标索引文件。
具体地,在得到索引文件后,媒体文件获取装置可以解析索引文件,从解析后的索引文件中确定媒体文件标识所在的位置,例如,可以从解析后的索引文件中查找标识“#”所在的行,该标识“#”所在的行的下一行可以是媒体文件标识所在的位置。然后,确定索引文件获取请求中存在的第一字段标识,例如“?”,以及第二字段标识,例如“/”;根据第一字段标识和第二字段标识从索引文件获取请求中提取出第一回源信息,例如,从索引文件获取请求的尾部开始搜索,当搜索到第一个“/”时,将该第一个“/”设置为第二字段标识,将第一字段标识“?”与第二字段标识“/”之间的内容(包括第一字段标识“?”和第二字段标识“/”)提取出来,并将媒体文件标识添加至该内容的尾部,得到第一回源信息。此时可以将第一回源信息添加至媒体文件标识所在的位置的尾部,即将第一回源信息添加至媒体文件标识所在行,且衔接于媒体文件标识的尾部,得到目标索引文件。或者是,从索引文件获取请求中提取出第一回源信息:“http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8,然后第一回源信息中的索引文件名称“68l6U8ck8Hg.m3u8”改为媒体文件标识,将修改后的后第一回源信息添加至媒体文件标识所在的位置的尾部,得到目标文件标识。
在某些实施方式中,将第一回源信息添加至索引文件中,得到目标索引文件的步骤之后,媒体获取方法还可以包括:将目标索引文件存储至本地缓存;当再次获取到索引文件获取请求时,从本地缓存中获取目标索引文件。
具体地,媒体文件获取装置在得到目标索引文件后,可以将目标索引文件存储至本地缓存。由于本地缓存已经存储目标索引文件,因此,后续再接收到索引文件获取请求时,可以直接从本地缓存中获取该目标索引文件,而无需到源站访问,并获取索引文件,以及对获取到的索引文件进行改写。从而通过改写索引文件中存储的媒体文件的相关路径信息,使存储媒体文件的源站的回源信息不丢失,先改写索引文件再建立本地缓存,这样能够保证后续命中本地缓存的索引文件获取请求,可以从本地缓存中获取到正确的索引文件。
在某些实施方式中,将第一回源信息添加至索引文件中,得到目标索引文件的步骤之后,媒体文件方法还可以包括:将目标索引文件发送给客户端。
当索引文件获取请求的获取方式为接收客户端发送的索引文件获取请求时,将目标索引文件存储至本地缓存后,媒体文件获取装置可以将目标索引文件发送给客户端。在处理索引文件时,先修改索引文件内容,并将修改后的索引文件(即目标索引文件)存储至本地缓存,再给客户端返回索引文件,使得在将目标索引文件存储在本地缓存中,后续再接收到客户端发送的索引文件获取请求时,可以直接从本地缓存中获取该目标索引文件,并将获取到的该目标索引文件发送客户端,而无需到源站访问,以避免客户端到源站的流量穿透以及降低客户端的访问时延,提高了索引文件的获取效率。
以下将进行举例说明,例如,当媒体文件获取装置得到上述索引文件后,该索引文件中包括“20170508204000_0.ts”、“20170508204000_1.ts”、及“20170508204000_2.ts”等媒体分片文件标识,即媒体文件标识中可以包括多个媒体分片文件标识,对于每个媒体文件标识所在的行,均添加第一回源信息,并将第一回源信息中的索引文件名称“68l6U8ck8Hg.m3u8”改为媒体分片文件标识,得到的目标索引文件可以如下:
其中,“20170508204000_0.ts”为媒体文件中第一个媒体分片文件的标识,“http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts”为第一个媒体分片文件对应的回源信息,“?sourceUrl=”作为第一个媒体分片文件的标识与第一个媒体分片文件对应的回源信息之间的分界标识。同样的,“20170508204000_1.ts”为媒体文件中第二个媒体分片文件的标识,“http://6000.liveplay.myqcloud.com/live/20170508204000_1.ts”为第二个媒体分片文件对应的回源信息,“?sourceUrl=”作为第二个媒体分片文件的标识与第二个媒体分片文件对应的回源信息之间的分界标识。其他的媒体分片文件与第一个媒体分片文件和第二个媒体分片文件类似,在此不作一一枚举。此时可以将得到的目标索引文件存储至本地缓存。通过改写索引文件,可以使基于HLS协议的媒体文件也能由媒体文件获取装置进行反向代理获取媒体文件,并将媒体文件缓存到本地缓存,可以有效减少穿透到源站的流量,同时降低客户端访问媒体文件的时延。
在步骤S104中,获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。
在得到目标索引文件后,媒体文件获取装置可以进一步获取媒体文件,首先需要获取媒体文件获取请求,当需要获取的媒体文件包括多个媒体分片文件时,可以分别请求各个媒体分片文件。其中,媒体文件获取请求可以是基于目标索引文件生成的,该媒体文件获取请求中可以携带第二回源信息和媒体文件标识等信息,还可以携带其他的信息,具体内容在此处不作限定。该第二回源信息可以是媒体文件的相关路径信息等,该第二回源信息可以用于指示存储媒体文件的源站,该源站可以是存储媒体文件的服务器。该媒体文件标识可以是媒体文件的名称或编号等,该媒体文件标识用于唯一标识索引文件,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。
媒体文件获取请求的获取方式可以包括:方式一,接收客户端发送的媒体文件获取请求,其中,该客户端可以是在接收到目标索引文件后时,根据目标索引文件生成媒体文件获取请求。方式二,从存储媒体文件获取请求的数据库中获取,该数据库中可以存储多个不同的媒体文件获取请求,该媒体文件获取请求可以是根据目标索引文件生成的,技术人员可以将预先模拟的媒体文件获取请求存储至该数据库中,该数据库可以是设置在服务器上,也可以是设置在终端上等。方式三,向其他服务器发送获取请求,并接收其他服务器基于该获取请求返回的媒体文件获取请求,其中,其他服务器可以存储有客户端发送的或技术人员上传的媒体文件获取请求,该媒体文件获取请求可以是根据目标索引文件生成的。可以理解的是,还可以通过其他的获取方式获取索引文件获取请求,具体内容在此处不作限定。
在得到媒体文件获取请求后,媒体文件获取装置可以根据媒体文件获取请求获取媒体文件,还可以将媒体文件存储至本地缓存。当后续再接收到媒体文件获取请求时,可以直接从本地缓存中获取到媒体文件,而无需到源站访问。
在某些实施方式中,获取基于目标索引文件的媒体文件获取请求的步骤可以包括:接收客户端基于接收到的目标索引文件发送的媒体文件获取请求。
根据媒体文件获取请求获取媒体文件的步骤之后,媒体文件获取方法还包括:将媒体文件发送给客户端。
具体地,媒体文件获取装置可以接收客户端基于接收到的目标索引文件发送的媒体文件获取请求,该媒体文件获取请求中可以携带媒体文件标识和第二回源信息等,在接收到客户端发送的媒体文件获取请求后,可以查询本地缓存,判断本地缓存中是否存在与媒体文件标识对应的媒体文件,若存在,则可以将本地缓存中的媒体文件发送给客户端。当本地缓存中不存在与媒体文件标识对应的媒体文件时,可以从与第二回源信息对应的第二源站中,获取与媒体文件标识对应的媒体文件;将媒体文件存储至本地缓存,以及将媒体文件发送给客户端。
本地缓存中不存在媒体文件的情况可以包括:当媒体文件获取装置是第一次获取到媒体文件获取请求时,本地缓存中未存储有媒体文件;或者是,本地缓存已经满时,原先获取到的媒体文件未能存储至本地缓存中;或者是当前获取到的媒体文件获取请求,与前一次获取到的媒体文件获取请求之间的时间间隔大于预设时间间隔,已经将根据前一次的媒体文件获取请求获取到的媒体文件从本地缓存中删除;或者是,本地缓存每隔预设时间段进行更新,本地缓存中存储媒体文件在本地缓存更新时已经被清除;等等。
在某些实施方式中,媒体文件获取请求中携带媒体文件标识,根据媒体文件获取请求获取媒体文件的步骤可以包括:当本地缓存中存在与媒体文件标识对应的媒体文件时,从本地缓存中获取媒体文件。
具体地,媒体文件获取装置在获取到携带媒体文件标识的媒体文件获取请求后,可以查询本地缓存,判断本地缓存中是否存在与媒体文件标识对应的媒体文件,若存在,则可以从本地缓存中获取到媒体文件,还可以将本地缓存中的媒体文件发送给客户端。
在某些实施方式中,媒体文件获取请求中携带第二回源信息和媒体文件标识,根据媒体文件获取请求获取媒体文件的步骤可以包括:从与第二回源信息对应的第二源站中,获取与媒体文件标识对应的媒体文件。
具体地,媒体文件获取装置在接收到携带媒体文件标识和第二回源信息等的媒体文件获取请求后,可以从媒体文件获取请求中提取出媒体文件标识和第二回源信息等,然后可以查询本地缓存,判断本地缓存中是否存在与媒体文件标识对应的媒体文件。当本地缓存中不存在与媒体文件标识对应的媒体文件时,可以确定与第二回源信息对应的第二源站,并从第二源站中获取与媒体文件标识对应的媒体文件,其中,第二源站与第一源站是同一个服务器,也可以是不同的服务器。此时,可以将媒体文件存储至本地缓存,以及将媒体文件发送给客户端。然后将媒体文件存储在本地缓存中,后续再接收到客户端发送的媒体文件获取请求时,可以直接从本地缓存中获取该媒体文件,并将该媒体文件发送客户端,而无需到源站访问,以避免客户端到源站的流量穿透以及降低客户端的访问时延。
可选地,媒体文件获取装置从与第二回源信息对应的第二源站中,获取与媒体文件标识对应的媒体文件的步骤可以包括:从媒体文件获取请求中提取出第二回源信息,并确定与第二回源信息对应的第二源站;将媒体文件获取请求反向代理到第二源站;接收第二源站基于媒体文件获取请求返回的与媒体文件标识对应的媒体文件。
具体地,媒体文件获取装置在接收到客户端发送的携带第二回源信息和媒体文件标识的媒体文件获取请求后,可以从媒体文件获取请求中提取出第二回源信息和媒体文件标识,然后确定与第二回源信息对应的第二源站,并将媒体文件获取请求反向代理到第二源站,即将媒体文件获取请求发送给第二源站,以使得第二源站在接收到媒体文件获取请求后,可以从媒体文件获取请求中提取出媒体文件标识,并从预先存储媒体文件的数据库中,获取与媒体文件标识对应的媒体文件,将获取到的媒体文件发送给媒体文件获取装置。媒体文件获取装置接收第二源站基于媒体文件获取请求返回的与媒体文件标识对应的媒体文件。
以下进行举例说明,例如,当媒体文件中包括多个媒体分片文件时,客户端接收到上述目标索引文件后,首先请求第一个媒体分片文件,用第一个媒体分片文件的回源信息(即相关路径信息):
“20170508204000_0.ts?sourceUrl=http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts”替换索引文件获取请求对应的URL中的索引文件,得到第一媒体分片文件获取请求对应的URL为:
http://test.vodflowproxy.myqcloud.com/live/20170508204000_0.ts?sourceUrl=http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts
然后客户端将该第一媒体分片文件获取请求发送给媒体文件获取装置,以向媒体文件获取装置请求标识为“20170508204000_0.ts”的第一个媒体分片文件。
媒体文件获取装置在接收到该第一媒体分片文件获取请求后,可以根据预先设置的第一标识,例如“?”,以及第二标识,例如“/”,从URL中检索出第一标识“?”,然后从第一标识“?”所在位置往URL的首位方向查找,直到找到第一个“/”,该第一个“/”即为第二标识,此时可以从第一标识与第二标识之间提取出第一媒体分片文件标识“20170508204000_0.ts”。
在得到第一媒体分片文件标识“20170508204000_0.ts”后,媒体文件获取装置可以查询本地缓存,判断本地缓存中是否存在与第一媒体分片文件标识“20170508204000_0.ts”对应的第一媒体分片文件。若本地缓存中存在与“20170508204000_0.ts”对应的第一媒体分片文件,则从本地缓存中获取与“20170508204000_0.ts”对应的第一媒体分片文件,并将获取到的第一媒体分片文件发送给客户端。若本地缓存中不存在与“20170508204000_0.ts”对应的第一媒体分片文件,则根据第二回源信息:“http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts”从第二源站上获取与“20170508204000_0.ts”对应的第一媒体分片文件,然后以“20170508204000_0.ts”为第一媒体分片文件标识,将第一媒体分片文件文件存储至本地缓存中,并将第一媒体分片文件发送给客户端。后续客户端再请求请求该第一媒体分片文件时,可以直接从本地缓存中获取到。
由于客户端发送的媒体文件获取请求中携带了用于指示存储媒体文件的源站的回源信息,因此当本地缓存中没有存储媒体文件时,可以根据回源信息从存储媒体文件的源站上获取。提升了基于HLS协议的媒体文件存储效果,从而可以节省客户端到源站访问的带宽成本,优化用户体验。
在得到第一媒体分片文件后,客户端可以接着请求目标索引文件中包含的第二媒体分片文件,对于第一媒体分片文件以及其他媒体分片文件的处理流程与第一媒体分片文件的处理流程类似,在此不作赘述。在得到媒体文件包含的所有媒体分片文件后,即可以得到完整的媒体文件。在得到目标索引文件和媒体文件后,此时客户端可以根据目标索引文件对媒体文件进行播放,即根据目标索引文件中各个媒体分片文件标识的顺序,依次对媒体文件中的各个媒体分片文件进行播放。
由上可知,本发明实施例通过获取携带第一回源信息和索引文件标识的索引文件获取请求,以及获取与索引文件标识对应的索引文件;然后改写索引文件,即将第一回源信息添加至索引文件中,得到目标索引文件,还可以将目标索引文件存储至本地缓存;进一步获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件,还可以将媒体文件存储至本地缓存。该方案通过改写索引文件,从而可以根据基于改写后的索引文件的媒体文件获取请求成功获取到媒体文件,提高了媒体文件获取的成功率;并且,将目标索引文件和媒体文件存储至本地缓存中,以方便后续客户端直接从本地缓存中获取到目标索引文件和媒体文件,降低了客户端的访问时延。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
本实施例将以媒体文件获取装置为免流代理服务器为例,如图3所示,该免流代理服务器可以是位于客户端和源站之间,该客户端可以是免流客户端,该源站可以包括多个源站,例如,源站1、源站2、......、源站n等,其中,n为大于1的整数,其具体取值可以根据实际需要进行灵活设置。客户端可以向免流代理服务器请求索引文件和媒体文件,若免流代理服务器的本地缓存中存在文件(该文件包括索引文件或媒体文件),则直接将缓存中的文件返回给客户端,而无需到源站访问;若免流代理服务器的本地缓存中不存在文件,则免流代理服务器需要到源站回源,并把回源得到的文件存储到本地缓存,以及将该文件返回给客户端,后续请求同样文件时就直接从本地缓存中获取。客户端在得到索引文件和媒体文件后,可以根据索引文件对媒体文件进行播放。
请参阅图4,图4为本发明实施例提供的媒体文件获取方法的另一流程示意图。该方法流程可以包括:
201、客户端向免流代理服务器发送索引文件获取请求。
客户端可以是在接收到用户输入的点播指令时,根据点播指令生成索引文件获取请求,该点播指令用于指示客户端获取媒体文件,并播放获取到的媒体文件。或者是,客户端可以是需要在本地存储媒体文件时,先构造索引文件获取请求。
在得到索引文件获取请求后,客户端可以基于HLS协议向免流代理服务器发送索引文件获取请求。其中,索引文件获取请求中可以携带第一回源信息和索引文件标识等,还可以携带其他的信息,具体内容在此处不作限定。该第一回源信息可以是索引文件的相关路径信息等,该第一回源信息可以用于指示存储索引文件的源站,该源站可以是存储索引文件的服务器。该索引文件标识可以是索引文件的名称或编号等,该索引文件标识用于唯一标识索引文件,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。
202、免流代理服务器查询本地缓存,确定本地缓存中不存在索引文件。
免流代理服务器在接收到客户端发送的索引文件获取请求后,可以从索引文件获取请求中提取出索引文件标识,并查询本地缓存,判断本地缓存中是否存在索引文件标识对应的索引文件。当本地缓存中存在与索引文件标识对应的索引文件时,可以从本地缓存中获取到索引文件。
需要说明的是,本地缓存中可以预先存储目标索引文件(即改写后的索引文件),免流代理服务器可以查询本地缓存,当确定本地缓存中不存在目标索引文件时,可以进一步判断本地缓存中是否存在与索引文件标识对应的索引文件,当本地缓存中存在与索引文件标识对应的索引文件时,可以从本地缓存中获取到索引文件,并执行步骤206;当本地缓存中不存在与索引文件标识对应的索引文件时,可以执行步骤203。当确定本地缓存中存在目标索引文件时,可以直接从本地缓存中获取目标索引文件,并执行步骤207。
203、免流代理服务器向源站发送索引文件获取请求。
当本地缓存中不存在与索引文件标识对应的索引文件时,免流代理服务器需要从源站上获取索引文件,即免流代理服务器从索引文件获取请求中提取出第一回源信息,并确定与第一回源信息对应的源站,将索引文件获取请求反向代理到该源站,即将索引文件获取请求发送给该源站。
204、源站查找索引文件。
源站在接收到索引文件获取请求后,可以从索引文件获取请求中提取出索引文件标识,并从预先存储索引文件的数据库中,获取与索引文件标识对应的索引文件。
205、源站将索引文件发送给免流代理服务器。
源站接收到免流代理服务器发送的索引文件获取请求中,可以携带有服务器标识,该服务器标识用于指示该免流代理服务器。源站在获取到索引文件后,可以从索引文件获取请求中提取出服务器标识,将获取到的索引文件发送给于服务器标识对应的免流代理服务器。
206、免流代理服务器改写索引文件,得到目标索引文件,将目标索引文件存储至本地缓存。
免流代理服务器在接收到源站发送的索引文件后,可以从索引文件获取请求中提取出第一回源信息,将第一回源信息添加至索引文件中(即改写索引文件),得到目标索引文件,该目标索引文件即为改写后的索引文件,其中,将第一回源信息添加至索引文件中的添加方式可以根据实际需要进行灵活设置,具体内容在此处不作限定。将第一回源信息添加至索引文件的目的在于,使得基于目标索引文件的媒体文件获取请求中,可以携带用于指示存储媒体文件的源站的回源信息,使存储媒体文件的源站的回源信息不丢失。
在得到目标索引文件后,免流代理服务器可以将目标索引文件存储至本地缓存。由于本地缓存已经存储目标索引文件,因此,后续再接收到索引文件获取请求时,可以直接从本地缓存中获取该目标索引文件,而无需到源站访问。先改写索引文件,再将目标索引文件存储至本地缓存,这样能够保证后续可以从本地缓存中获取到正确的索引文件。
207、免流代理服务器将目标索引文件发送给客户端。
免流代理服务器将目标索引文件存储至本地缓存后,可以将目标索引文件发送给客户端。后续客户端可以直接从本地缓存中获取目标索引文件,以避免客户端到源站的流量穿透以及降低客户端的访问时延,提高了索引文件的获取效率。
208、客户端根据目标索引文件构造媒体文件获取请求。
客户端在接收到免流代理服务器发送的目标索引文件后,可以进一步获取媒体文件,该媒体文件可以是视频文件、音频文件或者是音视频文件等。首先客户端需要根据目标索引文件构造媒体文件获取请求,当需要获取的媒体文件包括多个媒体分片文件时,可以分别构造各个媒体分片文件获取请求。
其中,媒体文件获取请求可以是基于目标索引文件生成的,该媒体文件获取请求中可以携带第二回源信息和媒体文件标识等信息,还可以携带其他的信息,具体内容在此处不作限定。该第二回源信息可以是媒体文件的相关路径信息等,该第二回源信息可以用于指示存储媒体文件的源站,该源站可以是存储媒体文件的服务器。该媒体文件标识可以是媒体文件的名称或编号等,该媒体文件标识用于唯一标识索引文件,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。
209、客户端将媒体文件获取请求发送给免流代理服务器。
在构造得到媒体文件获取请求,客户端可以将媒体文件获取请求发送给免流代理服务器。由于客户端接收到免流代理服务器发送的目标索引文件中可以携带有服务器标识,因此,客户端可以将媒体文件获取请求发送给于服务器标识对应的免流代理服务器。
210、免流代理服务器查询本地缓存,确定本地缓存中不存在媒体文件。
免流代理服务器在接收到客户端发送的媒体文件获取请求后,可以从媒体文件获取请求中提取出媒体文件标识,并查询本地缓存,判断本地缓存中是否存在与媒体文件标识对应的媒体文件。当本地缓存中存在与媒体文件标识对应的媒体文件时,可以将本地缓存中的媒体文件发送给客户端。
211、免流代理服务器向源站发送媒体文件获取请求。
当本地缓存中不存在与媒体文件标识对应的媒体文件时,免流代理服务器需要从源站上获取媒体文件,该源站存储有媒体文件,该源站可以与存储索引文件的源站一致,也可以不一致,为了描述方便,在本发明实施例中,将以存储媒体文件的源站与存储索引文件的源站一致为例进行说明。
免流代理服务器从媒体文件获取请求中提取出第二回源信息,并确定与第二回源信息对应的源站,将媒体文件获取请求反向代理到该源站,即将媒体文件获取请求发送给该源站。
212、源站查找媒体文件。
源站在接收到媒体文件获取请求后,可以从媒体文件获取请求中提取出媒体文件标识,并从预先存储媒体文件的数据库中,获取与媒体文件标识对应的媒体文件。
213、源站将媒体文件发送给免流代理服务器。
源站接收到免流代理服务器发送的媒体文件获取请求中,可以携带有服务器标识,该服务器标识用于指示该免流代理服务器。源站在获取到媒体文件后,可以从索引文件获取请求中提取出服务器标识,将获取到的媒体文件发送给于服务器标识对应的免流代理服务器。
由于客户端发送的媒体文件获取请求中携带了用于指示存储媒体文件的源站的第二回源信息,因此当免流代理服务器的本地缓存中没有存储媒体文件时,可以根据第二回源信息从存储媒体文件的源站上获取,从而可以节省客户端到源站访问的带宽成本。
214、免流代理服务器将媒体文件存储至本地缓存。
免流代理服务器在接收到媒体文件后,可以将媒体文件存储在本地缓存中,后续再接收到客户端发送的媒体文件获取请求时,可以直接从本地缓存中获取该媒体文件,并将该媒体文件发送客户端,而无需到源站访问,以避免客户端到源站的流量穿透以及降低客户端的访问时延。如果有多个客户端请求同一个媒体文件,则免流代理服务器只需到源站回源一次,有效减少了免流代理服务器访问源站的带宽消耗。
需要说明的是,可以在不同的区域分别部署免流代理服务器,例如,如图6所示,以区域A和区域B为例,在区域A中部署免流代理服务器A,在区域B中部署免流代理服务器B,免流代理服务器A和免流代理服务器B均可以访问站源。免流代理服务器A可以接收区域A的多个客户端访问,例如,客户端1至客户端n,其中n的取值可以根据实际需要进行灵活设置;免流代理服务器B可以接收区域B的多个客户端访问,例如,客户端1至客户端n,其中n的取值可以根据实际需要进行灵活设置。当免流代理服务器A的本地缓存中未存储有媒体文件时,若区域A中的多个客户端请求同一个媒体文件,则免流代理服务器A只需要向源站访问一次,就可以满足区域A多个客户端的对应请求。当免流代理服务器A的本地缓存中存储有媒体文件时,若区域A中存在任何一个或多个客户端请求媒体文件,则免流代理服务器A可以将本地缓存中的媒体文件返回给客户端,免流代理服务器B与免流代理服务器A实现的功能类似,在此不作赘述。
可以理解的是,本实施例只是为了便于描述所举的例子,不应理解为是对流代理服务器的数量限定,但不管有多少个流代理服务器,媒体文件获取的过程都是类似的,都可以按照该示例进行理解。
215、免流代理服务器将媒体文件发送给客户端。
免流代理服务器将媒体文件存储至缓存后,可以将媒体文件发送给客户端。需要说明的是,当媒体文件中包括多个媒体分片文件时,客户端可以分别向免流代理服务器获取各个媒体分片文件。例如,客户端首先向免流代理服务器请求目标索引文件中包含的第一媒体分片文件,在得到第一媒体分片文件后,客户端可以接着请求目标索引文件中包含的第二媒体分片文件,以此类推,直至请求得到媒体文件中包括的所有媒体分片文件,对于所有媒体分片文件的处理流程与上述处理流程类似,在此不作赘述。在得到媒体文件包含的所有媒体分片文件后,即可以得到完整的媒体文件。
例如,如图5所示,媒体文件中包括第一媒体分片文件(即0.ts文件)、第二媒体分片文件(即1.ts文件)、及第三媒体分片文件(即2.ts文件)等多个媒体分片文件,其中,媒体分片文件的数量可以根据实际需要进行灵活设置,具体数量在此处不作限定。客户端在请求得到索引文件(即m3u8文件)后,即得到目标索引文件后,可以根据目标索引文件分别请求媒体文件中包含的多个媒体分片文件。
在得到目标索引文件和媒体文件后,此时客户端可以根据目标索引文件对媒体文件进行播放,即根据目标索引文件中各个媒体分片文件标识的顺序,依次对媒体文件中的各个媒体分片文件进行播放。
以下将进行举例说明,例如,当客户端接收到用户输入的点播指令时,可以根据点播指令生成索引文件获取请求,并根据HLS协议向免流代理服务器发送索引文件获取请求,该索引文件获取请求可以如下:
http://test.vodflowproxy.myqcloud.com/live/test.m3u8?sourceUrl=http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8
其中,该索引文件获取请求中可以携带第一回源信息为“http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8”,以及索引文件标识“test.m3u8”等。
免流代理服务器在接收到客户端发送的索引文件获取请求后,可以根据预先设置的第一标识,例如“?”,以及第二标识,例如“/”,从索引文件获取请求中检索出第一标识“?”,然后从第一标识“?”所在位置往索引文件获取请求的首位方向查找,直到找到第一个“/”,该第一个“/”即为第二标识,此时可以从第一标识与第二标识之间提取出索引文件标识“test.m3u8”。
在得到索引文件标识“test.m3u8”后,免流代理服务器可以查询本地缓存,判断本地缓存中是否存在与索引文件标识“test.m3u8”对应的索引文件。若本地缓存中存在与“test.m3u8”对应的索引文件,则从本地缓存中获取与“test.m3u8”对应的索引文件。若本地缓存中不存在与“test.m3u8”对应的索引文件,则免流代理服务器根据第一回源信息:“http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8”向源站发送索引文件获取请求,源站查找可以从存储索引文件的数据库中查找与“68l6U8ck8Hg.m3u8”对应的索引文件,并将得到的索引文件发送给免流代理服务器。
需要说明的是,存储索引文件的站源将索引文件名称“68l6U8ck8Hg.m3u8”设置为索引文件标识,因此站源可以根据索引文件标识“68l6U8ck8Hg.m3u8”从数据库中获取到索引文件;而若免流代理服务器本地缓存中存储有索引文件,则免流代理服务器是将索引标识设置为“test.m3u8”,因此免流代理服务器可以根据“test.m3u8”查询本地缓存。
得到的索引文件可以如下:
其中,该索引文件中可以包括“20170508204000_0.ts”、“20170508204000_1.ts”、及“20170508204000_2.ts”等媒体分片文件标识,说明需要获取的每条文件中包括多个媒体分片文件,即媒体文件标识中可以包括多个媒体分片文件标识。
当免流代理服务器接收到上述索引文件后,免流代理服务器可以改写索引文件,以得到目标索引文件。具体地,免流代理服务器可以解析索引文件,从解析后的索引文件中确定各个媒体分片文件标识所在的位置,例如,可以从解析后的索引文件中查找标识“#”所在的行,该标识“#”所在行的下一行可以是媒体分片文件标识所在的位置。
然后,免流代理服务器确定索引文件获取请求中存在的标识,例如“?”,根据标识“?”从索引文件获取请求中提取出第一回源信息,例如,从索引文件获取请求中提取出标识“?”开始至索引文件获取请求尾部之间的内容“?sourceUrl=http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8”,并将该内容中的索引文件名称“68l6U8ck8Hg.m3u8”改为媒体分片文件标识,例如,“?sourceUrl=http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts”,得到回源信息,此时,将该回源信息添加至媒体分片文件标识“20170508204000_0.ts”所在的行的尾部。对于每个媒体分片文件标识,均按照上述方法进行处理,从而可以得到目标索引文件。
得到的目标索引文件可以如下:
其中,“20170508204000_0.ts”为媒体文件中第一个媒体分片文件的标识,“http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts”为第一个媒体分片文件对应的回源信息,“?sourceUrl=”作为第一个媒体分片文件的标识与第一个媒体分片文件对应的回源信息之间的分界标识。同样的,“20170508204000_1.ts”为媒体文件中第二个媒体分片文件的标识,“http://6000.liveplay.myqcloud.com/live/20170508204000_1.ts”为第二个媒体分片文件对应的回源信息,“?sourceUrl=”作为第二个媒体分片文件的标识与第二个媒体分片文件对应的回源信息之间的分界标识。其他的媒体分片文件与第一个媒体分片文件和第二个媒体分片文件类似,在此不作一一枚举。
此时,免流代理服务器可以将得到的目标索引文件存储至本地缓存,并将目标索引文件发送给客户端。或者是,当本地缓存中存在目标索引文件时,可以直接从本地缓存中获取目标索引文件,并将目标索引文件发送给客户端。客户端在接收到目标索引文件后,可以根据目标索引文件构造媒体文件获取请求。
例如,当媒体文件中包括多个媒体分片文件时,客户端首先第一个媒体分片文件的回源信息,构造第一个媒体分片文件获取请求,可以得到
http://test.vodflowproxy.myqcloud.com/live/20170508204000_0.ts?sourceUrl=http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts
然后,客户端将该第一媒体分片文件获取请求发送给免流代理服务器,以向免流代理服务器请求标识为“20170508204000_0.ts”的第一个媒体分片文件。
免流代理服务器在接收到该第一媒体分片文件获取请求后,可以根据预先设置的第一标识,例如“?”,以及第二标识,例如“/”,从URL中检索出第一标识“?”,然后从第一标识“?”所在位置往第一媒体分片文件获取请求的首位方向查找,直到找到第一个“/”,该第一个“/”即为第二标识,此时可以从第一标识与第二标识之间提取出第一媒体分片文件标识“20170508204000_0.ts”。
在得到第一媒体分片文件标识“20170508204000_0.ts”后,免流代理服务器可以查询本地缓存,判断本地缓存中是否存在与第一媒体分片文件标识“20170508204000_0.ts”对应的第一媒体分片文件。若本地缓存中存在与“20170508204000_0.ts”对应的第一媒体分片文件,则免流代理服务器可以从本地缓存中获取与“20170508204000_0.ts”对应的第一媒体分片文件,并将获取到的第一媒体分片文件发送给客户端。若本地缓存中不存在与“20170508204000_0.ts”对应的第一媒体分片文件,则免流代理服务器可以根据第二回源信息:“http://6000.liveplay.myqcloud.com/live/20170508204000_0.ts”向源站发送媒体分片文件获取请求,源站查找可以从存储媒体文件的数据库中查找与“20170508204000_0.ts”对应的第一媒体分片文件,将将得到的第一媒体分片文件发送给免流代理服务器。
免流代理服务器在接收到第一媒体分片文件后,可以以“20170508204000_0.ts”为第一媒体分片文件标识,将第一媒体分片文件文件存储至本地缓存中,并将第一媒体分片文件发送给客户端。后续客户端再请求请求该第一媒体分片文件时,可以直接从本地缓存中获取到。
客户端在接收到第一媒体分片文件后,可以构造第二个媒体分片文件获取请求,可以得到:
http://test.vodflowproxy.myqcloud.com/live/20170508204000_1.ts?sourceUrl=http://6000.liveplay.myqcloud.com/live/20170508204000_1.ts
然后,客户端将该第二媒体分片文件获取请求发送给免流代理服务器,可以按照第一媒体分片文件的获取流程,获取到第二媒体分片文件,其他媒体分片文件也与第一媒体分片文件的获取流程类似,在此不再赘述。
在得到媒体文件包含的所有媒体分片文件后,即可以得到完整的媒体文件。客户端在得到媒体文件后,可以根据目标索引文件对媒体文件进行播放。
本发明实施例中,当本地缓存中不存在索引文件时,免流代理服务器可以从源站上获取,并通过改写获取到的索引文件,以及可以根据基于改写后的索引文件构造媒体文件获取请求,从而可以根据构造的媒体文件获取请求成功获取到媒体文件,并将媒体文件存储至本地缓存,提高了媒体文件获取的成功率。并且,将目标索引文件和媒体文件存储至本地缓存中,可以方便后续客户端直接从本地缓存中获取到目标索引文件和媒体文件,降低了客户端的访问时延,以及节省了客户端到源站访问需要消耗的带宽成本。
为便于更好的实施本发明实施例提供的媒体文件获取方法,本发明实施例还提供一种基于上述媒体文件获取方法的装置。其中名词的含义与上述媒体文件获取方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图7,图7为本发明实施例提供的媒体文件获取装置的结构示意图,其中该媒体文件获取装置可以包括请求获取单元301、索引文件获取单元302、添加单元303及媒体文件获取单元304等。
其中,请求获取单元301,用于获取索引文件获取请求,索引文件获取请求中携带第一回源信息和索引文件标识。
其中,媒体文件可以是视频文件、音频文件或者是音视频文件等,需要获取的媒体文件可以是基于HLS协议传输的媒体文件,也可以是基于其他协议传输的媒体文件,具体内容在此处不作限定。以HLS协议为例,由于基于HLS协议的媒体文件传输的过程中,HLS协议把媒体文件对应的整个媒体流分成一个个小的媒体分片文件(也可以称为ts文件),媒体文件可以包括多个媒体分片文件,可以用于存储媒体流,每个媒体分片文件之间存在前后依赖关系,即各个媒体分片文件之间需要按照先后顺序组成一个完整的媒体流,该媒体流可以封装成媒体文件。为了能够方便获取到媒体文件,可以用索引文件(也可以称为m3u8文件)存储媒体文件的各个媒体分片文件的配置信息、顺序信息和相关路径信息等信息。因此,在获取媒体文件时,可以先获取索引文件,再根据索引文件中存储的信息获取媒体文件,当播放媒体文件时,可以根据索引文件里的信息逐个请求并播放组成媒体文件的媒体分片文件。
首先,请求获取单元301获取索引文件获取请求,其中,索引文件获取请求中可以携带第一回源信息和索引文件标识之外,还可以携带其他的信息,具体内容在此处不作限定。该第一回源信息可以是索引文件的相关路径信息等,该第一回源信息可以用于指示存储索引文件的源站,该源站可以是存储索引文件的服务器。该索引文件标识可以是索引文件的名称或编号等,该索引文件标识用于唯一标识索引文件,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。
索引文件获取请求的获取方式可以包括:方式一,接收客户端发送的索引文件获取请求,其中,该客户端可以是在接收到用户输入的点播指令时,根据点播指令生成索引文件获取请求,该点播指令用于指示客户端获取媒体文件,并播放获取到的媒体文件,该客户端可以是集成在手机或电脑等终端上。方式二,从存储索引文件获取请求的样本库中获取,该样本库中可以存储多个不同的索引文件获取请求,技术人员可以将预先模拟的索引文件获取请求存储至该样本库中,该样本库可以是设置在服务器上,也可以是设置在终端上等。方式三,向其他服务器发送获取请求,并接收其他服务器基于该获取请求返回的索引文件获取请求,其中,其他服务器可以存储有客户端发送的或技术人员上传的索引文件获取请求。可以理解的是,还可以通过其他的获取方式获取索引文件获取请求,具体内容在此处不作限定。
索引文件获取单元302,用于获取与索引文件标识对应的索引文件。
在获取到携带索引文件标识和的第一回源信息索引文件获取请求后,索引文件获取单元302可以从索引文件获取请求中提取出索引文件标识,并获取与索引文件标识对应的索引文件。其中,索引文件的获取方式可以是从媒体文件获取装置的本地缓存中获取,或者是,从与第一回源信息对应的第一源站中获取等,该第一回源信息可以是索引文件的相关路径信息等,该第一源站可以是存储索引文件的服务器。
在某些实施方式中,如图10所示,索引文件获取单元302可以包括:获取子单元3021,用于从与第一回源信息对应的第一源站中,获取与索引文件标识对应的索引文件。
具体地,在获取到携带索引文件标识和第一回源信息等的索引文件获取请求后,获取子单元3021可以从索引文件获取请求中提取出索引文件标识和第一回源信息等,然后可以查询本地缓存,判断本地缓存中是否存在与索引文件标识对应的索引文件。当本地缓存中不存在与索引文件标识对应的索引文件时,获取子单元3021可以确定与第一回源信息对应的第一源站,并从第一源站中获取与索引文件标识对应的索引文件。
需要说明的是,本地缓存中可以预先存储索引文件和/目标索引文件,该目标索引文件为对索引文件进行改写后,得到改写后的索引文件。在获取与索引文件标识对应的索引文件的过程中,获取子单元3021可以查询本地缓存中是否存储有索引文件,当本地缓存中不存在索引文件时,可以从第一回源信息对应的第一源站中获取索引文件;当本地缓存中存在索引文件时,可以从本地缓存中获取索引文件。或者是,获取子单元3021可以查询本地缓存中是否存储有目标索引文件,当本地缓存中不存在目标索引文件时,需要获取索引文件,并执行将第一回源信息添加至索引文件中,得到目标索引文件;获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件的步骤;当本地缓存中存在目标索引文件时,可以从本地缓存中获取目标索引文件,并执行获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件的步骤。
本地缓存中不存在索引文件(或目标索引文件)的情况可以包括:当媒体文件获取装置是第一次获取到索引文件获取请求时,本地缓存中未存储有索引文件;或者是,本地缓存已经满时,原先获取到的索引文件未能存储至本地缓存中;或者是当前获取到的索引文件获取请求,与前一次获取到的索引文件获取请求之间的时间间隔大于预设时间间隔,已经将根据前一次的索引文件获取请求获取到的索引文件从本地缓存中删除;或者是,本地缓存每隔预设时间段进行更新,本地缓存中存储索引文件在本地缓存更新时已经被清除;等等。
当本地缓存中不存在索引文件时,可以从第一回源信息对应的第一源站回源得到索引文件。其中,回源可以理解为媒体文件获取装置在本地缓存中不存在索引文件标识对应的索引文件时,可以把索引文件获取请求转发到存储索引文件的服务器,并从该服务器拉取该索引文件的过程。
在某些实施方式中,获取子单元3021具体可以用于:从索引文件获取请求中提取出第一回源信息,并确定与第一回源信息对应的第一源站;将索引文件获取请求反向代理到第一源站;接收第一源站基于索引文件获取请求返回的与索引文件标识对应的索引文件。
具体地,在接收到客户端发送的携带第一回源信息和索引文件标识的索引文件获取请求后,获取子单元3021可以从索引文件获取请求中提取出第一回源信息和索引文件标识,然后获取子单元3021确定与第一回源信息对应的第一源站,并将索引文件获取请求反向代理到第一源站,即将索引文件获取请求发送给第一源站,以使得第一源站在接收到索引文件获取请求后,可以从索引文件获取请求中提取出索引文件标识,并从预先存储索引文件的数据库中,获取与索引文件标识对应的索引文件,将获取到的索引文件发送给获取子单元3021。获取子单元3021接收第一源站基于索引文件获取请求返回的与索引文件标识对应的索引文件。
添加单元303,用于将第一回源信息添加至索引文件中,得到目标索引文件。
在得到索引文件后,添加单元303可以从索引文件获取请求中提取出第一回源信息,将第一回源信息添加至索引文件中(即改写索引文件),得到目标索引文件,该目标索引文件即为改写后的索引文件,其中,将第一回源信息添加至索引文件中的添加方式可以根据实际需要进行灵活设置,具体内容在此处不作限定。将第一回源信息添加至索引文件的目的在于,使得基于目标索引文件的媒体文件获取请求中,可以携带用于指示存储媒体文件的源站的回源信息。
在某些实施方式中,请求获取单元301具体可以用于:接收客户端发送的索引文件获取请求。
如图8所示,媒体文件获取装置还可以包括:确定单元305,用于从索引文件获取请求中提取出客户端的客户端标识,当客户端标识在预设的白名单中时,确定客户端为免流客户端。
添加单元303具体用于:当客户端为免流客户端时,将第一回源信息添加至索引文件中,得到目标索引文件。
具体地,媒体文件获取装置可以为免流的客户端(简称免流客户端)提供服务,例如,在视频云点播免流项目中,免流客户端可以通过HLS协议从媒体文件获取装置获取待播放的媒体文件,并基于接收到用户输入的点播指令对该媒体文件进行播放。其中,免流可以是客户端使用移动蜂窝网络请求运营商不收取流量费的特定流量。媒体文件获取装置可以预先设置黑名单和/或白名单,其中,黑名单和白名单可以用于存储客户端标识,储客户端标识在黑名单中的客户端为非免流客户端,储客户端标识在白名单中的客户端为免流客户端。
请求获取单元301可以接收客户端发送的索引文件获取请求,在接收到后索引文件获取请求后,确定单元305可以从索引文件获取请求中提取出客户端的客户端标识,然后判断该客户端标识是否存在白名单中,该客户端标识可以是客户端网络之间互连的协议(Internet Protocol,IP)、客户端身份标识(identification,ID)、客户端名称、或客户端编号等。当客户端标识在白名单中时,确定单元305可以确定该客户端为免流客户端。当客户端为免流客户端时,可以判断本地缓存中是否存在目标索引文件,当本地缓存中不存在目标索引文件时,可以从与第一回源信息对应的第一源站中,获取与索引文件标识对应的索引文件,并由添加单元303将第一回源信息添加至索引文件中,得到目标索引文件。由于是接收客户端发送的索引文件获取请求,因此需要将得到的目标索引文件发送给客户端。当本地缓存中存在目标索引文件时,可以从本地缓存中获取目标索引文件,可以将获取到的目标索引文件发送给客户端。当客户端标识不在白名单中时,可以确定该客户端为非免流客户端,可以根据非免流对应的索引文件获取请求获取索引文件。
在某些实施方式中,添加单元303具体可以用于:解析索引文件,从解析后的索引文件中确定媒体文件标识所在的位置;确定索引文件获取请求中存在的第一字段标识和第二字段标识;根据第一字段标识和第二字段标识从索引文件获取请求中提取出第一回源信息;将第一回源信息添加至媒体文件标识所在的位置的尾部,得到目标索引文件。
具体地,在得到索引文件后,添加单元303可以解析索引文件,从解析后的索引文件中确定媒体文件标识所在的位置,例如,可以从解析后的索引文件中查找标识“#”所在的行,该标识“#”所在的行的下一行可以是媒体文件标识所在的位置。然后,添加单元303确定索引文件获取请求中存在的第一字段标识,例如“?”,以及确定索引文件获取请求中存在的第二字段标识,例如“/”;添加单元303根据第一字段标识和第二字段标识从索引文件获取请求中提取出第一回源信息,例如,从索引文件获取请求的尾部开始搜索,当搜索到第一个“/”时,将该第一个“/”设置为第二字段标识,将第一字段标识“?”与第二字段标识“/”之间的内容(包括第一字段标识“?”和第二字段标识“/”)提取出来,并将媒体文件标识添加至该内容的尾部,得到第一回源信息。此时,添加单元303可以将第一回源信息添加至媒体文件标识所在的位置的尾部,即将第一回源信息添加至媒体文件标识所在行,且衔接于媒体文件标识的尾部,得到目标索引文件。或者是,添加单元303从索引文件获取请求中提取出第一回源信息:“http://6000.liveplay.myqcloud.com/live/68l6U8ck8Hg.m3u8,然后第一回源信息中的索引文件名称“68l6U8ck8Hg.m3u8”改为媒体文件标识,将修改后的后第一回源信息添加至媒体文件标识所在的位置的尾部,得到目标文件标识。
在某些实施方式中,媒体文件获取装置还可以包括存储单元和获取单元等,具体可以如下:
存储单元,用于将目标索引文件存储至本地缓存;
获取单元,用于当再次获取到索引文件获取请求时,从本地缓存中获取目标索引文件。
具体地,在得到目标索引文件后,存储单元可以将目标索引文件存储至本地缓存。由于本地缓存已经存储目标索引文件,因此,后续再接收到索引文件获取请求时,获取单元可以直接从本地缓存中获取该目标索引文件,而无需到源站访问,并获取索引文件,以及对获取到的索引文件进行改写。从而通过改写索引文件中存储的媒体文件的相关路径信息,使存储媒体文件的源站的回源信息不丢失,先改写索引文件再建立本地缓存,这样能够保证后续命中本地缓存的索引文件获取请求,可以从本地缓存中获取到正确的索引文件。
在某些实施方式中,如图9所示,媒体文件获取装置还可以包括:第一发送单元306,用于将目标索引文件发送给客户端。
当索引文件获取请求的获取方式为接收客户端发送的索引文件获取请求时,将目标索引文件存储至本地缓存后,第一发送单元306可以将目标索引文件发送给客户端。在处理索引文件时,先修改索引文件内容,并将修改后的索引文件(即目标索引文件)存储至本地缓存,再给客户端返回索引文件,使得在将目标索引文件存储在本地缓存中,后续再接收到客户端发送的索引文件获取请求时,可以直接从本地缓存中获取该目标索引文件,并将获取到的该目标索引文件发送客户端,而无需到源站访问,以避免客户端到源站的流量穿透以及降低客户端的访问时延,提高了索引文件的获取效率。
媒体文件获取单元304,用于获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。
在得到目标索引文件后,可以进一步获取媒体文件,首先媒体文件获取单元304需要获取媒体文件获取请求,当需要获取的媒体文件包括多个媒体分片文件时,可以分别请求各个媒体分片文件。其中,媒体文件获取请求可以是基于目标索引文件生成的,该媒体文件获取请求中可以携带第二回源信息和媒体文件标识等信息,还可以携带其他的信息,具体内容在此处不作限定。该第二回源信息可以是媒体文件的相关路径信息等,该第二回源信息可以用于指示存储媒体文件的源站,该源站可以是存储媒体文件的服务器。该媒体文件标识可以是媒体文件的名称或编号等,该媒体文件标识用于唯一标识索引文件,可以由数字、字母和/或文字组成等,具体内容在此处不作限定。
媒体文件获取请求的获取方式可以包括:方式一,接收客户端发送的媒体文件获取请求,其中,该客户端可以是在接收到目标索引文件后时,根据目标索引文件生成媒体文件获取请求。方式二,从存储媒体文件获取请求的数据库中获取,该数据库中可以存储多个不同的媒体文件获取请求,该媒体文件获取请求可以是根据目标索引文件生成的,技术人员可以将预先模拟的媒体文件获取请求存储至该数据库中,该数据库可以是设置在服务器上,也可以是设置在终端上等。方式三,向其他服务器发送获取请求,并接收其他服务器基于该获取请求返回的媒体文件获取请求,其中,其他服务器可以存储有客户端发送的或技术人员上传的媒体文件获取请求,该媒体文件获取请求可以是根据目标索引文件生成的。可以理解的是,还可以通过其他的获取方式获取索引文件获取请求,具体内容在此处不作限定。
在得到媒体文件获取请求后,媒体文件获取单元304可以根据媒体文件获取请求获取媒体文件,还可以将媒体文件存储至本地缓存。当后续再接收到媒体文件获取请求时,可以直接从本地缓存中获取到媒体文件,而无需到源站访问。
在某些实施方式中,媒体文件获取单元304具体可以用于:接收客户端基于接收到的目标索引文件发送的媒体文件获取请求。
如图9所示,媒体文件获取装置还可以包括:第二发送单元307,用于将媒体文件发送给客户端。
具体地,媒体文件获取单元304可以接收客户端基于接收到的目标索引文件发送的媒体文件获取请求,该媒体文件获取请求中可以携带媒体文件标识和第二回源信息等,在接收到客户端发送的媒体文件获取请求后,可以查询本地缓存,判断本地缓存中是否存在与媒体文件标识对应的媒体文件,若存在,则第二发送单元307可以将本地缓存中的媒体文件发送给客户端。当本地缓存中不存在与媒体文件标识对应的媒体文件时,可以从与第二回源信息对应的第二源站中,获取与媒体文件标识对应的媒体文件;将媒体文件存储至本地缓存,并由第二发送单元307将媒体文件发送给客户端。
本地缓存中不存在媒体文件的情况可以包括:当第一次获取到媒体文件获取请求时,本地缓存中未存储有媒体文件;或者是,本地缓存已经满时,原先获取到的媒体文件未能存储至本地缓存中;或者是当前获取到的媒体文件获取请求,与前一次获取到的媒体文件获取请求之间的时间间隔大于预设时间间隔,已经将根据前一次的媒体文件获取请求获取到的媒体文件从本地缓存中删除;或者是,本地缓存每隔预设时间段进行更新,本地缓存中存储媒体文件在本地缓存更新时已经被清除;等等。
在某些实施方式中,媒体文件获取单元304具体可以用于:当本地缓存中存在与媒体文件标识对应的媒体文件时,从本地缓存中获取媒体文件。
具体地,在获取到携带媒体文件标识的媒体文件获取请求后,可以查询本地缓存,媒体文件获取单元304判断本地缓存中是否存在与媒体文件标识对应的媒体文件,若存在,则媒体文件获取单元304可以从本地缓存中获取到媒体文件,还可以将本地缓存中的媒体文件发送给客户端。
在某些实施方式中,媒体文件获取单元304具体可以用于:从与第二回源信息对应的第二源站中,获取与媒体文件标识对应的媒体文件。
具体地,在接收到携带媒体文件标识和第二回源信息等的媒体文件获取请求后,媒体文件获取单元304可以从媒体文件获取请求中提取出媒体文件标识和第二回源信息等,然后可以查询本地缓存,判断本地缓存中是否存在与媒体文件标识对应的媒体文件。当本地缓存中不存在与媒体文件标识对应的媒体文件时,媒体文件获取单元304可以确定与第二回源信息对应的第二源站,并从第二源站中获取与媒体文件标识对应的媒体文件,其中,第二源站与第一源站是同一个服务器,也可以是不同的服务器。此时,可以将媒体文件存储至本地缓存,以及将媒体文件发送给客户端。然后将媒体文件存储在本地缓存中,后续再接收到客户端发送的媒体文件获取请求时,可以直接从本地缓存中获取该媒体文件,并将该媒体文件发送客户端,而无需到源站访问,以避免客户端到源站的流量穿透以及降低客户端的访问时延。
可选地,媒体文件获取单元304具体可以用于:从媒体文件获取请求中提取出第二回源信息,并确定与第二回源信息对应的第二源站;将媒体文件获取请求反向代理到第二源站;接收第二源站基于媒体文件获取请求返回的与媒体文件标识对应的媒体文件。
具体地,在接收到客户端发送的携带第二回源信息和媒体文件标识的媒体文件获取请求后,媒体文件获取单元304可以从媒体文件获取请求中提取出第二回源信息和媒体文件标识,然后确定与第二回源信息对应的第二源站,并将媒体文件获取请求反向代理到第二源站,即将媒体文件获取请求发送给第二源站,以使得第二源站在接收到媒体文件获取请求后,可以从媒体文件获取请求中提取出媒体文件标识,并从预先存储媒体文件的数据库中,获取与媒体文件标识对应的媒体文件,将获取到的媒体文件发送给媒体文件获取单元304。媒体文件获取单元304接收第二源站基于媒体文件获取请求返回的与媒体文件标识对应的媒体文件。
由上可知,本发明实施例通过请求获取单元301获取携带第一回源信息和索引文件标识的索引文件获取请求,以及由索引文件获取单元302获取与索引文件标识对应的索引文件;然后改写索引文件,即添加单元303将第一回源信息添加至索引文件中,得到目标索引文件,还可以将目标索引文件存储至本地缓存;进一步媒体文件获取单元304获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件,还可以将媒体文件存储至本地缓存。该方案通过改写索引文件,从而可以根据基于改写后的索引文件的媒体文件获取请求成功获取到媒体文件,提高了媒体文件获取的成功率;并且,将目标索引文件和媒体文件存储至本地缓存中,以方便后续客户端直接从本地缓存中获取到目标索引文件和媒体文件,降低了客户端的访问时延。
本发明实施例还提供一种服务器,该服务器可以是免流代理服务器,如图11所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图11中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
服务器还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取索引文件获取请求,索引文件获取请求中携带第一回源信息和索引文件标识;获取与索引文件标识对应的索引文件;将第一回源信息添加至索引文件中,得到目标索引文件;获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。
可选地,获取索引文件获取请求的步骤可以包括:接收客户端发送的索引文件获取请求;将第一回源信息添加至索引文件中,得到目标索引文件的步骤之前,媒体文件获取方法还可以包括:从索引文件获取请求中提取出客户端的客户端标识,当客户端标识在预设的白名单中时,确定客户端为免流客户端,并执行将第一回源信息添加至索引文件中,得到目标索引文件的步骤。
可选地,将第一回源信息添加至索引文件中,得到目标索引文件的步骤可以包括:解析索引文件,从解析后的索引文件中确定媒体文件标识所在的位置;确定索引文件获取请求中存在的第一字段标识和第二字段标识;根据第一字段标识和第二字段标识从索引文件获取请求中提取出第一回源信息;将第一回源信息添加至媒体文件标识所在的位置的尾部,得到目标索引文件。
由上可知,本发明实施例通过获取携带第一回源信息和索引文件标识的索引文件获取请求,以及获取与索引文件标识对应的索引文件;然后改写索引文件,即将第一回源信息添加至索引文件中,得到目标索引文件;进一步获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。该方案通过改写索引文件,从而可以根据基于改写后的索引文件的媒体文件获取请求成功获取到媒体文件,提高了媒体文件获取的成功率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对媒体文件获取方法的详细描述,此处不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种媒体文件获取方法中的步骤。例如,该指令可以执行如下步骤:
获取索引文件获取请求,索引文件获取请求中携带第一回源信息和索引文件标识;获取与索引文件标识对应的索引文件;将第一回源信息添加至索引文件中,得到目标索引文件;获取基于目标索引文件的媒体文件获取请求,根据媒体文件获取请求获取媒体文件。
可选地,获取与索引文件标识对应的索引文件的步骤可以包括:当本地缓存中不存在与索引文件标识对应的索引文件时,从与第一回源信息对应的第一源站中,获取与索引文件标识对应的索引文件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种媒体文件获取方法中的步骤,因此,可以实现本发明实施例所提供的任一种媒体文件获取方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种媒体文件获取方法方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种媒体文件获取方法,其特征在于,包括:
获取索引文件获取请求,所述索引文件获取请求中携带第一回源信息和索引文件标识;
获取与所述索引文件标识对应的索引文件;
将所述第一回源信息添加至所述索引文件中,得到目标索引文件;
获取基于所述目标索引文件的媒体文件获取请求,根据所述媒体文件获取请求获取媒体文件。
2.根据权利要求1所述的媒体文件获取方法,其特征在于,所述获取索引文件获取请求的步骤包括:
接收客户端发送的索引文件获取请求;
所述将所述第一回源信息添加至所述索引文件中,得到目标索引文件的步骤之前,所述方法还包括:从所述索引文件获取请求中提取出所述客户端的客户端标识,当所述客户端标识在预设的白名单中时,确定所述客户端为免流客户端,并执行将所述第一回源信息添加至所述索引文件中,得到目标索引文件的步骤。
3.根据权利要求2所述的媒体文件获取方法,其特征在于,所述将所述第一回源信息添加至所述索引文件中,得到目标索引文件的步骤包括:
解析所述索引文件,从解析后的索引文件中确定媒体文件标识所在的位置;
确定所述索引文件获取请求中存在的第一字段标识和第二字段标识;
根据所述第一字段标识和第二字段标识从所述索引文件获取请求中提取出第一回源信息;
将所述第一回源信息添加至所述媒体文件标识所在的位置的尾部,得到目标索引文件。
4.根据权利要求2所述的媒体文件获取方法,其特征在于,所述将所述第一回源信息添加至所述索引文件中,得到目标索引文件的步骤之后,所述方法还包括:
将所述目标索引文件发送给所述客户端;
所述获取基于所述目标索引文件的媒体文件获取请求的步骤包括:接收所述客户端基于接收到的所述目标索引文件发送的媒体文件获取请求;
所述根据所述媒体文件获取请求获取媒体文件的步骤之后,所述方法还包括:将所述媒体文件发送给所述客户端。
5.根据权利要求1所述的媒体文件获取方法,其特征在于,所述获取与所述索引文件标识对应的索引文件的步骤包括:
从与所述第一回源信息对应的第一源站中,获取与所述索引文件标识对应的索引文件。
6.根据权利要求5所述的媒体文件获取方法,其特征在于,所述从与所述第一回源信息对应的第一源站中,获取与所述索引文件标识对应的索引文件的步骤包括:
从所述索引文件获取请求中提取出第一回源信息,并确定与所述第一回源信息对应的第一源站;
将所述索引文件获取请求反向代理到所述第一源站;
接收所述第一源站基于所述索引文件获取请求返回的与所述索引文件标识对应的索引文件。
7.根据权利要求1至6任一项所述的媒体文件获取方法,其特征在于,所述媒体文件获取请求中携带第二回源信息和媒体文件标识,所述根据所述媒体文件获取请求获取媒体文件的步骤包括:
从与所述第二回源信息对应的第二源站中,获取与所述媒体文件标识对应的媒体文件。
8.根据权利要求1至6任一项所述的媒体文件获取方法,其特征在于,所述媒体文件获取请求中携带媒体文件标识,所述根据所述媒体文件获取请求获取媒体文件的步骤包括:
当本地缓存中存在与所述媒体文件标识对应的媒体文件时,从所述本地缓存中获取所述媒体文件。
9.根据权利要求1至6任一项所述的媒体文件获取方法,其特征在于,所述将所述第一回源信息添加至所述索引文件中,得到目标索引文件的步骤之后,所述方法还包括:
将所述目标索引文件存储至本地缓存;
当再次获取到所述索引文件获取请求时,从所述本地缓存中获取所述目标索引文件。
10.一种媒体文件获取装置,其特征在于,包括:
请求获取单元,用于获取索引文件获取请求,所述索引文件获取请求中携带第一回源信息和索引文件标识;
索引文件获取单元,用于获取与所述索引文件标识对应的索引文件;
添加单元,用于将所述第一回源信息添加至所述索引文件中,得到目标索引文件;
媒体文件获取单元,用于获取基于所述目标索引文件的媒体文件获取请求,根据所述媒体文件获取请求获取媒体文件。
11.根据权利要求10所述的媒体文件获取装置,其特征在于,所述请求获取单元具体用于:接收客户端发送的索引文件获取请求;
所述媒体文件获取装置还包括:
确定单元,用于从所述索引文件获取请求中提取出所述客户端的客户端标识,当所述客户端标识在预设的白名单中时,确定所述客户端为免流客户端;
所述添加单元具体用于:当所述客户端为免流客户端时,将所述第一回源信息添加至所述索引文件中,得到目标索引文件。
12.根据权利要求11所述的媒体文件获取装置,其特征在于,所述添加单元具体用于:
解析所述索引文件,从解析后的索引文件中确定媒体文件标识所在的位置;
确定所述索引文件获取请求中存在的第一字段标识和第二字段标识;
根据所述第一字段标识和第二字段标识从所述索引文件获取请求中提取出第一回源信息;
将所述第一回源信息添加至所述媒体文件标识所在的位置的尾部,得到目标索引文件。
13.根据权利要求10所述的媒体文件获取装置,其特征在于,所述索引文件获取单元包括:
获取子单元,用于从与所述第一回源信息对应的第一源站中,获取与所述索引文件标识对应的索引文件;
所述获取子单元具体用于:从所述索引文件获取请求中提取出第一回源信息,并确定与所述第一回源信息对应的第一源站;将所述索引文件获取请求反向代理到所述第一源站;接收所述第一源站基于所述索引文件获取请求返回的与所述索引文件标识对应的索引文件。
14.根据权利要求10至13任一项所述的媒体文件获取装置,所述媒体文件获取装置还包括:
存储单元,用于将所述目标索引文件存储至本地缓存;
获取单元,用于当再次获取到所述索引文件获取请求时,从所述本地缓存中获取所述目标索引文件。
15.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至9任一项所述的媒体文件获取方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810267285.3A CN110309342B (zh) | 2018-03-28 | 2018-03-28 | 一种媒体文件获取方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810267285.3A CN110309342B (zh) | 2018-03-28 | 2018-03-28 | 一种媒体文件获取方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309342A true CN110309342A (zh) | 2019-10-08 |
CN110309342B CN110309342B (zh) | 2023-11-10 |
Family
ID=68073881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810267285.3A Active CN110309342B (zh) | 2018-03-28 | 2018-03-28 | 一种媒体文件获取方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110309342B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049829A (zh) * | 2019-12-13 | 2020-04-21 | 南方科技大学 | 视频流传输方法、装置、计算机设备和存储介质 |
CN112597234A (zh) * | 2020-12-29 | 2021-04-02 | 拉卡拉支付股份有限公司 | 数据传输方法、装置、电子设备、存储介质及程序产品 |
CN115297095A (zh) * | 2022-08-08 | 2022-11-04 | 上海哔哩哔哩科技有限公司 | 回源处理方法、装置、计算设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104506493A (zh) * | 2014-12-04 | 2015-04-08 | 武汉市烽视威科技有限公司 | 一种实现hls内容回源和缓存的方法 |
US20160219094A1 (en) * | 2013-09-30 | 2016-07-28 | Telefonaktiebolaget L M Ericsson (Publ) | System and method of a link surfed http live streaming broadcasting system |
-
2018
- 2018-03-28 CN CN201810267285.3A patent/CN110309342B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160219094A1 (en) * | 2013-09-30 | 2016-07-28 | Telefonaktiebolaget L M Ericsson (Publ) | System and method of a link surfed http live streaming broadcasting system |
CN104506493A (zh) * | 2014-12-04 | 2015-04-08 | 武汉市烽视威科技有限公司 | 一种实现hls内容回源和缓存的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111049829A (zh) * | 2019-12-13 | 2020-04-21 | 南方科技大学 | 视频流传输方法、装置、计算机设备和存储介质 |
CN111049829B (zh) * | 2019-12-13 | 2021-12-03 | 南方科技大学 | 视频流传输方法、装置、计算机设备和存储介质 |
CN112597234A (zh) * | 2020-12-29 | 2021-04-02 | 拉卡拉支付股份有限公司 | 数据传输方法、装置、电子设备、存储介质及程序产品 |
CN115297095A (zh) * | 2022-08-08 | 2022-11-04 | 上海哔哩哔哩科技有限公司 | 回源处理方法、装置、计算设备及存储介质 |
WO2024032363A1 (zh) * | 2022-08-08 | 2024-02-15 | 上海哔哩哔哩科技有限公司 | 回源处理方法、装置、计算设备及存储介质 |
CN115297095B (zh) * | 2022-08-08 | 2024-03-08 | 上海哔哩哔哩科技有限公司 | 回源处理方法、装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110309342B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103023768B (zh) | 边缘路由节点以及其从多源预取内容的方法 | |
CN108540816B (zh) | 一种直播视频获取方法、装置及存储介质 | |
CN103685590B (zh) | 获取ip地址的方法及系统 | |
KR20200083608A (ko) | 비디오 라이브 방송 방법 및 장치 | |
US20100115565A1 (en) | Content and cm delivery system and content information server | |
EP3567813B1 (en) | Method, apparatus and system for determining content acquisition path and processing request | |
CN106454430B (zh) | Ndn/ccn中针对自治域内视频业务预先发布方法 | |
CN110309342A (zh) | 一种媒体文件获取方法、装置及存储介质 | |
CN109450911A (zh) | 一种跨网络流媒体数据传输系统和方法 | |
CN106713506A (zh) | 一种数据获取方法及系统 | |
CN106330997A (zh) | 一种用于移动终端应用的内容分发的方法和系统 | |
CN104394182A (zh) | 一种实现内容分发网络加速的方法及源服务器 | |
CN109729183A (zh) | 请求处理方法、装置、设备及存储介质 | |
CN109167850A (zh) | 一种确定cdn服务运营商的方法、装置和存储介质 | |
CN110139123A (zh) | 流媒体文件的播放、发送、处理方法和装置 | |
US7920581B2 (en) | Tree-type broadcast system, method of participating and withdrawing tree-type broadcast system, node device, and node process program | |
CN107438051A (zh) | 流媒体快速启动方法、装置和系统 | |
CN105721549A (zh) | 一种路由器广告推送方法及装置 | |
CN105978852A (zh) | 一种网络设备访问历史信息的确定方法、设备及交换机 | |
CN108076385A (zh) | 一种推广信息监测数据的上报方法及装置 | |
CN101184002A (zh) | 一种点对点流量深度监测方法和设备 | |
EP3355551B1 (en) | Data access method and device | |
CN114584808B (zh) | 一种视频流获取方法、装置、系统、设备和介质 | |
CN109788083A (zh) | 应用下载方法、装置、存储介质及电子装置 | |
CN106210779B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |