CN108737908B - 一种媒体播放方法、装置及存储介质 - Google Patents
一种媒体播放方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108737908B CN108737908B CN201810490840.9A CN201810490840A CN108737908B CN 108737908 B CN108737908 B CN 108737908B CN 201810490840 A CN201810490840 A CN 201810490840A CN 108737908 B CN108737908 B CN 108737908B
- Authority
- CN
- China
- Prior art keywords
- media
- playing
- file
- frame
- key
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 239000012634 fragment Substances 0.000 claims abstract description 152
- 238000012216 screening Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000006854 communication Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 102100037812 Medium-wave-sensitive opsin 1 Human genes 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005484 gravity Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Television Signal Processing For Recording (AREA)
Abstract
本发明实施例公开了一种媒体播放方法、装置及存储介质,本发明实施例获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值;当接收到播放进度调节指令时,确定所述播放进度调节指令对应的播放位置所在的目标媒体分片文件;从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧;根据所述关键帧在所述目标媒体分片文件中查找与所述播放位置对应的媒体数据帧,并以所述媒体数据帧为起始播放所述待播放媒体文件。该方案可以基于与播放位置的时间戳之间的差值小于播放时间值的关键帧及播放位置对应的媒体数据帧,对待播放媒体文件的播放进度进行精准调节,提高了媒体播放的精确性。
Description
技术领域
本发明涉及媒体数据处理技术领域,具体涉及一种媒体播放方法、装置及存储介质。
背景技术
随着信息技术的发展,人们的生活越来越丰富,例如,用户可以在终端上点播媒体文件进行观看,此时终端可以通过终端基于超文本传输协议(HyperText TransferProtocol,HTTP)的流媒体网络传输协议(HTTP Live Streaming,HLS)从服务器上拉取媒体文件,并播放该媒体文件,其中,HLS协议可以把媒体文件对应的整个媒体流分成一个个小的媒体分片文件(即TS文件)进行传输。
现有技术中,在对媒体播放进行播放的过程中,用户可以根据自己的需求对播放进度进行调节,当终端接收到用户输入的对播放进度调节指令时,可以获取播放进度调节指令对应的位置,并基于HLS协议的结构找到该位置所在的TS分片,然后,直接获取该TS分片开头的关键帧(即I帧)数据,以TS分片为单位从该关键帧数据开始播放媒体文件。
在对现有技术的研究和实践过程中,本发明的发明人发现,由于现有是以TS分片为单位对媒体文件进行播放,TS分片开头的关键帧的数据与播放进度调节指令的实际位置的数据之间距离可能相差较大,甚至有可能相差一个TS分片的时长,导致播放的过程中会出现重复播放的问题,使得播放进度调节的精确较低。
发明内容
本发明实施例提供一种媒体播放方法、装置及存储介质,旨在提高对媒体进行播放的精确性。
为解决上述技术问题,本发明实施例提供以下技术方案:
一种媒体播放方法,包括:
获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值;
当接收到播放进度调节指令时,确定所述播放进度调节指令对应的播放位置所在的目标媒体分片文件;
从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧;
根据所述关键帧在所述目标媒体分片文件中查找与所述播放位置对应的媒体数据帧,并以所述媒体数据帧为起始播放所述待播放媒体文件。
一种媒体播放装置,包括:
第一获取单元,用于获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值;
确定单元,用于当接收到播放进度调节指令时,确定所述播放进度调节指令对应的播放位置所在的目标媒体分片文件;
第二获取单元,用于从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧;
播放单元,用于根据所述关键帧在所述目标媒体分片文件中查找与所述播放位置对应的媒体数据帧,并以所述媒体数据帧为起始播放所述待播放媒体文件。
可选地,所述确定单元具体用于:
当接收到播放进度调节指令时,获取所述播放进度调节指令对应的播放位置的时间戳;
获取待播放媒体文件中各个媒体分片文件的时间长度;
根据所述播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的目标媒体分片文件。
可选地,所述第二获取单元具体用于:
将所述目标媒体分片文件中的第一帧数据作为当前媒体数据帧;
若当前媒体数据帧为关键帧,则获取所述关键帧对应的时间戳;
计算所述关键帧对应的时间戳与所述播放位置对应的时间戳之间的差值;
当所述差值大于或等于所述播放时间值时,将所述目标媒体分片文件中的第二帧数据作为当前媒体数据帧,返回执行若当前媒体数据帧为关键帧,则获取所述关键帧对应的时间戳的步骤,直至所述差值小于所述播放时间值,得到与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧。
一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种媒体播放方法中的步骤。
本发明实施例通过获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值,以及当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件,然后从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,此时,可以根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。该方案在需要对播放进度进行调节时,可以基于与播放位置的时间戳之间的差值小于播放时间值的关键帧,及播放位置对应的媒体数据帧,对待播放媒体文件进行播放,相对于现有以媒体分片文件为单位进行播放,可以精准对播放进度进行调节,提高了对媒体进行播放的精确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的媒体播放方法的场景示意图;
图2是本发明实施例提供的媒体播放方法的流程示意图;
图3是本发明实施例提供的终端进行媒体播放的架构示意图;
图4是本发明实施例提供的媒体播放方法的另一流程示意图;
图5是本发明实施例提供的确定距离播放位置最近的关键帧的示意图;
图6是本发明实施例提供的媒体播放装置的结构示意图;
图7是本发明实施例提供的媒体播放装置的另一结构示意图;
图8是本发明实施例提供的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种媒体播放方法、装置及存储介质。
请参阅图1,图1为本发明实施例所提供的媒体播放方法的场景示意图,该媒体播放装置11具体可以集成在平板电脑、手机、笔记本电脑、台式电脑及照相机等具备储存单元并安装有微处理器而具有运算能力的终端12中,该终端12可以具有播放媒体文件的功能,还可以包括其他的功能,具体功能在此处不作限定,例如,该终端12可以通过预先安装的媒体播放应用对媒体文件进行播放。其中,媒体文件可以包括视频文件或音视频文件等。
例如,该终端12可以向服务器13发送索引文件获取请求,并接收服务器13基于索引文件获取请求返回的索引文件,此时终端12可以基于索引文件向服务器13发送媒体文件获取请求,并接收服务器13基于媒体文件获取请求返回的媒体文件,得到待播放媒体文件。终端12可以获取待播放媒体文件的预设媒体分片文件(例如,已播放的媒体分片文件)中,相邻两个关键帧之间的播放时间值,以及,当接收到用户输入的播放进度调节指令时,确定播放进度调节指令对应的播放位置,并确定该播放位置所在的目标媒体分片文件。然后,获取与播放位置对应的时间戳,并从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,此时,可以根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并基于关键帧及播放位置对应的媒体数据帧,以媒体数据帧为起始播放待播放媒体文件;等等。
需要说明的是,图1所示的媒体播放方法的场景示意图仅仅是一个示例,本发明实施例描述的媒体播放方法的场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着媒体播放方法的系统演变和新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
以下分别进行详细说明。
在本实施例中,将从媒体播放装置的角度进行描述,该媒体播放装置具体可以集成在平板电脑、手机、笔记本电脑、台式电脑及照相机等具备储存单元并安装有微处理器而具有运算能力的终端中。
一种媒体播放方法,包括:获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值;当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件;从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧;根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。
请参阅图2,图2是本发明一实施例提供的媒体播放方法的流程示意图。该媒体播放方法可以包括:
在步骤S101中,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值。
其中,媒体文件可以是视频文件或音视频文件等,该媒体文件可以是基于HLS协议传输的媒体文件,也可以是基于其他协议传输的媒体文件,具体内容在此处不作限定。
以HLS协议为例,由于基于HLS协议的媒体文件传输的过程中,HLS协议把媒体文件对应的整个媒体流分成一个个小的媒体分片文件(也可以称为TS文件),因此一个媒体文件中可以包括多个媒体分片文件,可以用于存储媒体流,每个媒体分片文件之间存在前后依赖关系,即各个媒体分片文件之间需要按照先后顺序组成一个完整的媒体流,该媒体流可以封装成媒体文件。
为了能够方便获取到媒体文件,可以用索引文件(也可以称为m3u8文件)存储媒体文件的各个媒体分片文件的配置信息、顺序信息和地址信息等信息。因此,在获取媒体文件时,可以先获取索引文件,再根据索引文件中存储的信息获取媒体文件,当播放媒体文件时,可以根据索引文件里的信息逐个请求并播放组成媒体文件的媒体分片文件。
例如,媒体播放装置可以向服务器发送索引文件获取请求,并接收服务器基于索引文件获取请求返回的索引文件,此时媒体播放装置可以基于索引文件中各个媒体分片文件的地址向服务器发送媒体文件获取请求,并接收服务器基于媒体文件获取请求返回的媒体文件(包括各个媒体分片文件),得到待播放媒体文件。
媒体播放装置可以获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧(也可以称为I帧)之间的播放时间值。其中,预设媒体分片文件可以是已播放的媒体分片文件,或者是待播放媒体文件中的某个媒体分片文件等。该I帧可以是一帧画面的完整数据记录,是帧间压缩编码的最重要帧,例如,动态图像专家组(Moving Picture Experts Group,MPEG)编码可以将画面(即帧)分为I帧、P帧和B帧等,其中,I帧是内部编码帧,P帧是前向预测帧,B帧是双向内插帧,该I帧是一个完整的画面,而P帧和B帧记录的是相对于I帧的变化,没有I帧,P帧和B帧就无法解码。
相邻两个关键帧可以是在一个媒体分片文件中两两相邻的关键帧,例如,当媒体分片文件2.ts中按照先后顺序依次包括关键帧1、关键帧2和关键帧3时,关键帧1和关键帧2为一对相邻两个关键帧,关键帧2和关键帧3为一对相邻两个关键帧。
该播放时间值可以是画面组(Group of Pictures,GOP)时间值,一个GOP就是一组连续的画面,其中,媒体文件由一系列帧组成,每一帧就是媒体文件中的一个画面或图像,可以称为媒体数据帧。媒体文件的编码可以按照组进行,每一个组叫作GOP,GOP与GOP之间可以没有联系,编码关系只在GOP之间产生。每一个GOP都是由关键帧开始,关键帧是一幅完整的画面,GOP中的非关键帧都是不完整的,需要由关键帧、前面帧以及后面帧等一起运算得到。
在某些实施方式中,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤可以包括:
(1)当待播放媒体文件中存在已播放的媒体分片文件时,将已播放的媒体分片文件设置为预设媒体分片文件;
(2)对预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计每相邻两个关键帧之间存在非关键帧的个数;
(3)根据非关键帧的个数计算相邻两个关键帧之间的播放时间值。
可选地,根据非关键帧的个数计算每个关键帧之间的播放时间值的步骤可以包括:
当存在多对相邻两个关键帧时,计算多对相邻两个关键帧之间非关键帧的个数的平均值,并根据平均值计算相邻两个关键帧之间的播放时间值;当存在一对相邻两个关键帧时,根据相邻两个关键帧之间非关键帧的个数,计算相邻两个关键帧之间的播放时间值。
具体地,媒体播放装置在获取播放时间值的过程中,可以先判断待播放媒体文件中是否存在已播放的媒体分片文件,该已播放的媒体分片文件可以是基于索引文件中媒体分片文件的地址向服务器发送媒体分片文件获取请求,并接收服务器基于媒体分片文件获取请求返回的媒体分片文件。若存在已播放的媒体分片文件,则将已播放的媒体分片文件设置为预设媒体分片文件,以基于已播放的媒体分片文件计算播放时间值。
媒体播放装置可以对预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,该预设媒体分片文件可以包括一个或多个媒体分片文件,一个媒体分片文件中可以包括多帧媒体数据(即数据包),一个媒体分片文件中可以包括多个关键帧,此时可以包括多对相邻两个关键帧。
例如,当预设媒体分片文件包括一个媒体分片文件时,可以从该媒体分片文件中的第一帧媒体数据开始,从第一帧媒体数据(即数据包)的头文件中提取出类型字段,该类型字段用于存储数据包的类型(例如I帧、P帧或B帧等),此时,媒体播放装置可以根据类型字段中存储的类型确定该帧是否为关键帧。当第一帧媒体数据是关键帧时,可以记录该第一个关键帧,然后读取第二帧媒体数据,从第一帧媒体数据的头文件中提取出类型字段,根据类型字段中存储的类型确定该帧是否为关键帧。当第二帧媒体数据不是关键帧时,可以统计该非关键帧的个数(例如将统计非关键帧的全局变量设置为1),然后读取第三帧媒体数据进行判断,直至到第二个关键帧,此时可以统计得到第一个关键帧与第二个关键帧之间的存在非关键帧的个数(也可以称为GOP值,即两个I帧间隔的帧个数)。当第二个关键帧后还存在媒体数据时,读取第二个关键帧后的数据包继续统计,直至到第三个关键帧,此时可以统计得到第二个关键帧与第三个关键帧之间的存在非关键帧的个数,依次类推,直至遍历完该媒体分片文件中的每一帧媒体数据,最终可以得到一对相邻两个关键帧或多对相邻两个关键帧之间存在非关键帧的个数。
当仅得到一对相邻两个关键帧之间非关键帧的个数时,可以根据该非关键帧的个数计算相邻两个关键帧之间的播放时间值。例如,当每秒播放25帧,对应的是1帧播放40毫秒时,如果相邻两个关键帧之间存在非关键帧的个数为10帧,则这两相邻两个关键帧之间的播放时间值为400毫秒。
当得到多对相邻两个关键帧之间非关键帧的个数时,可以将每对相邻两个关键帧之间存在非关键帧的个数进行累加,得到总帧数,根据总帧数计算平均值,得到每对相邻两个关键帧之间存在非关键帧的个数的平均值,再根据平均值计算相邻两个关键帧之间的播放时间值。例如,当一个媒体分片文件中存在三对相邻两个关键帧时,若第一对相邻两个关键帧之间存在非关键帧的个数为10帧,第二对相邻两个关键帧之间存在非关键帧的个数为11帧,第三对相邻两个关键帧之间存在非关键帧的个数为9帧,则这三对相邻两个关键帧之间存在非关键帧的个数的平均值为10帧。当每秒播放25帧,对应的是1帧播放40毫秒时,这三对相邻两个关键帧之间的播放时间值为400毫秒。
又例如,当预设媒体分片文件包括多个媒体分片文件时,可以按照上述计算一个媒体分片文件对应的播放时间值的方法,计算每一个媒体分片文件对应播放时间值,然后将每一个媒体分片文件对应播放时间值进行累加,得到总的播放时间值,在根据总的播放时间值取每一个媒体分片文件的平均播放时间值,得到相邻两个关键帧之间的播放时间值。或者是,先计算每一个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的个数,再计算每一个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的平均个数,最后根据平均个数计算相邻两个关键帧之间的播放时间值。例如,当预设媒体分片文件包括两个媒体分片文件时,若第一个媒体分片文件计算得到相邻两个关键帧之间存在非关键帧的个数为8,第二个媒体分片文件计算得到相邻两个关键帧之间存在非关键帧的个数为12,则这两个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的平均个数为10,当每秒播放25帧,对应的是1帧播放40毫秒时,这两个媒体分片文件对应的相邻两个关键帧之间的播放时间值为400毫秒。
需说明的是,当媒体文件在播放的过程中一直未接收到播放进度调节指令时,媒体播放装置可以按照上述方法一直统计相邻两个关键帧之间存在非关键帧的个数来计算播放时间值,并进行存储,例如,可以之前计算得到的播放时间值与当前计算得到的播放时间值取平均值,然后保存到内存中,依次执行上述步骤,通过多次的训练与统计,得到较优的播放时间值,为后续对媒体播放进行进度调节时提供可靠的先验知识。
在某些实施方式中,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤可以包括:
当待播放媒体文件中未存在已播放的媒体分片文件时,根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数;
根据数据帧的个数计算目标播放时间值,将目标播放时间值设置为相邻两个关键帧之间的播放时间值。
其中,预设编码规则是指对媒体文件进行编码的规则,例如,预设编码规则可以是每个媒体分片文件的时间长度为10秒,为了保证视频的质量,在片源编码过程中可以每间隔5秒或6秒设置有一个关键帧,每秒播放25帧等,该预设编码规则可以根据实际需要进行灵活设置,具体内容在此处不作限定。具体地,媒体播放装置在获取播放时间值的过程中,可以先判断待播放媒体文件中是否存在已播放的媒体分片文件,若未存在已播放的媒体分片文件,则可以根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数,此时,该预设媒体分片文件可以是待播放媒体文件中任一个媒体分片文件,当预设编码规则对应的每个媒体分片文件的时间长度为10秒,且每间隔6秒设置有一个关键帧,每秒播放25帧时,可以得到一个媒体分片文件中数据帧的个数为250帧,然后根据数据帧的个数计算目标播放时间值,例如,可以取一个媒体分片文件中数据帧的个数的一半,得到125帧,将125帧设置为相邻两个关键帧之间存在非关键帧的个数,根据该个数计算目标播放时间值为5秒。或者是,可以取相邻两个关键帧之间的时间间隔为6秒,得到相邻两个关键帧之间存在非关键帧的个数为150帧。
在步骤S102中,当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件。
在对媒体播放的过程中,用户可以根据自己的需求对媒体播放进度进行调节,例如,用户可以通过媒体播放显示界面内的进度条调节播放进度,或者通过预置的物理按键调节播放进度等,从而产生播放进度调节指令,此时,媒体播放装置可以接收用户输入的播放进度调节指令,确定播放进度调节指令对应的播放位置(也可以称为SEEK位置),并确定该播放位置所在的目标媒体分片文件。
在某些实施方式中,当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件的步骤可以包括:
(1)当接收到播放进度调节指令时,获取播放进度调节指令对应的播放位置的时间戳;
(2)获取待播放媒体文件中各个媒体分片文件的时间长度;
(3)根据播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的目标媒体分片文件。
具体地,当接收到播放进度调节指令时,媒体播放装置可以确定该播放进度调节指令对应的播放位置,并确定该播放位置对应的时间戳,以及从索引文件中,获取待播放媒体文件中各个媒体分片文件的时间长度,然后可以根据播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的媒体分片文件,得到目标媒体分片文件。
例如,当待播放媒体文件中已播放30秒的媒体分片文件时,若接收到快进到50秒的播放进度调节指令,此时,媒体播放装置可以确定该播放进度调节指令对应的播放位置的时间戳为45秒,以及基于索引文件确定待播放媒体文件中各个媒体分片文件1.ts至n.ts(其中n的取值可以根据实际需要进行灵活设置)的时间长度均为10秒,可以计算出45秒播放位置所在的媒体分片文件为第五个媒体分片文件,此时目标媒体分片文件为5.ts。由于第45秒所在目标媒体分片文件为5.ts还未播放,因此,媒体播放装置可以确定该目标媒体分片文件的序列号,该序列号可以是媒体分片文件的标识、编号或名称等,然后从索引文件中获取与该序列号对应的地址,该地址可以是获取媒体分片文件的地址,可以基于该地址向服务器发送媒体分片文件的获取请求,并接收服务器基于该获取请求返回的媒体分片文件5.ts。
又例如,当待播放媒体文件中已播放30秒的媒体分片文件时,若接收到后退到15秒的播放进度调节指令,此时,媒体播放装置可以确定该播放进度调节指令对应的播放位置的时间戳为15秒,以及基于索引文件确定待播放媒体文件中各个媒体分片文件1.ts至n.ts(其中n的取值可以根据实际需要进行灵活设置)的时间长度均为10秒,可以计算出15秒播放位置所在的媒体分片文件为第二个媒体分片文件,此时目标媒体分片文件为2.ts。由于第15秒所在目标媒体分片文件为2.ts已经播放,此时,可以直接从本地获取到该媒体分片文件2.ts。
在步骤S103中,从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
在确定目标媒体分片文件后,媒体播放装置可以从目标媒体分片文件中查找在播放附近较合适的关键帧,即获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
在某些实施方式中,从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧的步骤可以包括:
(1)从目标媒体分片文件中的第一帧数据与播放位置之间查找关键帧,得到关键帧集;
(2)获取关键帧集中每个关键帧对应的时间戳;
(3)获取每个关键帧对应的时间戳与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,得到关键帧集;
(4)从关键帧集中筛选出差值最小所对应的关键帧。
具体地,媒体播放装置可以从目标媒体分片文件中的第一帧数据与播放位置之间查找关键帧,得到关键帧集,该关键帧集中可以包括一个或多个关键帧。例如,当目标媒体分片文件为2.ts,且目标媒体分片文件的时间长度为10秒时,若播放位置在目标媒体分片文件2.ts中的第4秒,每秒播放25帧目标媒体分片文件2.ts中的第100帧,此时可以在目标媒体分片文件2.ts中的第一帧数据包的头文件中提取出类型字段,根据类型字段确定该帧是否为关键帧,一直遍历到第100帧,从而可以得到第一帧与第100帧之间的关键帧。
在得到关键帧集后,可以从该关键帧的头文件中提取出时间戳字段,根据时间戳字段确定该关键帧对应的时间戳,依次对关键帧集中每个关键帧进行相应的处理,可以得到关键帧集中每个关键帧对应的时间戳。然后计算每个关键帧对应的时间戳与播放位置对应的时间戳之间的差值,得到差值集,从该差值集中筛选出差值小于播放时间值的关键帧,得到关键帧集,该关键帧集中可以包括一个或多个关键帧。此时,可以从关键帧集中筛选出差值最小所对应的关键帧。
在某些实施方式中,从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧的步骤可以包括:
将目标媒体分片文件中的第一帧数据作为当前媒体数据帧;
若当前媒体数据帧为关键帧,则获取关键帧对应的时间戳;
计算关键帧对应的时间戳与播放位置对应的时间戳之间的差值;
当差值大于或等于播放时间值时,将目标媒体分片文件中的第二帧数据作为当前媒体数据帧,返回执行若当前媒体数据帧为关键帧,则获取关键帧对应的时间戳的步骤,直至差值小于播放时间值,得到与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
具体地,媒体播放装置可以顺序去读取该目标媒体分片文件中的每一帧数据,首先将目标媒体分片文件中的第一帧数据作为当前媒体数据帧,判断当前媒体数据帧是否是关键帧,例如,从当前媒体数据帧的头文件中提取出类型字段,根据类型字段确定该帧是否为关键帧。若当前媒体数据帧为关键帧,则获取到该关键帧的时间戳,例如,可以从该关键帧的头文件中提取出时间戳字段,根据时间戳字段确定该关键帧对应的时间戳。计算该关键帧的时间戳与播放位置(即SEEK位置)对应的时间戳之间的差值Δpts,并判断该差值Δpts是否小于播放时间值。当差值Δpts大于或等于播放时间值时,将目标媒体分片文件中的第二帧数据作为当前媒体数据帧,继续顺序查找关键帧,依次按照上述步骤进行判断,返回执行若当前媒体数据帧为关键帧,则获取关键帧对应的时间戳的步骤,直至得到关键帧的时间戳与播放位置对应的时间戳之间的差值Δpts小于播放时间值,得到与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,即将该关键帧作为播放位置最合适的关键帧。
在步骤S104中,根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。
在得到与播放位置对应的时间戳之间的差值小于播放时间值的关键帧后,媒体播放装置可以将从关键帧所在位置开始,往关键帧所在位置的后续数据帧中查找与播放位置对应的媒体数据帧。在得到播放位置对应的媒体数据帧后,可以以媒体数据帧为起始,结合该关键帧播放待播放媒体文件。例如,可以在媒体文件播放的显示界面内,显示基于关键帧及播放位置对应的媒体数据帧得到图像数据,并以播放位置对应的媒体数据帧为起始,拉取该播放位置后的媒体数据帧进行播放,从而可以让用户精准观看到播放位置的图像。
在某些实施方式中,根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件的步骤可以包括:
(1)确定关键帧在目标媒体分片文件中的位置,获取位置及其后的每个数据帧的时间值;
(2)依次将每个数据帧的时间值与播放位置的时间戳进行比对;
(2)当存在数据帧的时间值等于播放位置的时间戳时,将数据帧设置为播放位置对应的媒体数据帧;
(4)基于关键帧及播放位置对应的媒体数据帧,以媒体数据帧为起始播放待播放媒体文件。
具体地,媒体播放装置可以根据关键帧的时间戳及目标标媒体分片文件的时间长度,确定关键帧在目标媒体分片文件中的位置,依次快速解码关键帧及其后续的每一帧,对解码后的关键帧进行存储,并每解码一帧数据,判断解码的该数据帧的时间值是否等于播放位置的时间戳,若不等于,则丢弃当前解码的该数据帧,继续解码下一帧数据;若等于,则说明找到了播放位置对应的媒体数据帧。
例如,可以将目标媒体分片文件中的该关键帧作为当前数据帧,解码当前数据帧,关键帧的时间戳即为当前数据帧的时间值,将当前数据帧对应的时间值与播放位置对应的时间戳进行对比。如果当前数据帧对应的时间值与播放位置对应的时间戳相等,则确定当前数据帧为播放位置对应的媒体数据帧;如果当前数据帧对应的时间戳与播放位置对应的时间戳不相等,则将目标媒体分片文件中的该关键帧的后一帧作为当前数据帧,解码当前数据帧,返回执行将当前数据帧对应的时间值与播放位置对应的时间戳进行对比的步骤,直至找到当前数据帧对应的时间值与播放位置对应的时间戳相等,将当前数据帧设置为播放位置对应的媒体数据帧。
由于在解码关键帧后,可以对解码后的关键帧进行存储,而将关键帧与播放位置之间的数据丢弃,此时,在解码到播放位置,得到播放位置对应的媒体数据帧后,可以基于解码后的关键帧及解码后的媒体数据帧得到图像数据,并在媒体文件播放的显示界面内显示该图像数据,并以播放位置对应的媒体数据帧为起始,拉取该播放位置后的媒体数据帧进行播放。
由上可知,本发明实施例通过获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值,以及当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件,然后从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,此时,可以根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。该方案在需要对播放进度进行调节时,可以基于与播放位置的时间戳之间的差值小于播放时间值的关键帧,及播放位置对应的媒体数据帧,对待播放媒体文件进行播放,相对于现有以媒体分片文件为单位进行播放,可以精准对播放进度进行调节,提高了对媒体进行播放的精确性。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
本实施例以媒体播放装置为终端为例,例如,如图3所示,该终端可以包括先验估计模块、关键帧确定模块、及定位模块等,其中,先验评估模块可以用于根据预设媒体分片文件(例如,已播放的媒体分片文件),通过多次的训练与统计,得到HLS片源的GOP值,并基于GOP值计算GOP时间值,为后续关键帧确定模块提供先验知识。关键帧确定模块可以用于通过先验评估模块提供的GOP时间值,在播放进度调节指令对应的播放位置所在的目标媒体分片文件内,查找播放位置附近合适的关键帧,并将得到的关键帧提供给定位模块。定位模块可以基于关键帧确定模块提供的该关键帧进行处理,得到播放位置最适合的媒体数据帧,并结合该关键帧及媒体数据帧得到精确的图像数据,将该图像数据展示给用户。
请参阅图4,图4为本发明实施例提供的媒体播放方法的流程示意图。该方法流程可以包括:
S201、终端获取待播放媒体文件的预设媒体分片文件中相邻两个关键帧之间的存在非关键帧的个数,并根据非关键帧的个数计算相邻两个关键帧之间的播放时间值。
其中,预设媒体分片文件可以是已播放的媒体分片文件,或者是待播放媒体文件中的某个媒体分片文件等。例如,当待播放媒体文件中存在已播放的媒体分片文件1.ts、2.ts和3.ts时,该预设媒体分片文件可以是已播放的媒体分片文件1.ts、2.ts和3.ts;当待播放媒体文件中不存在已播放的媒体分片文件时,由于待播放的媒体文件对应的编码规则中,所默认的每一个媒体分片文件时间长度或关键帧的个数等均相同,因此该预设媒体分片文件可以是待播放的媒体文件中任一媒体分片文件。
相邻两个关键帧可以是在一个媒体分片文件中两两相邻的关键帧,例如,当媒体分片文件1.ts中按照先后顺序依次包括关键帧1、关键帧2和关键帧3时,关键帧1和关键帧2为一对相邻两个关键帧,关键帧2和关键帧3为一对相邻两个关键帧。
终端在通过先验估计模块获取播放时间值的过程中,可以先判断待播放媒体文件中是否存在已播放的媒体分片文件,若存在已播放的媒体分片文件,则终端可以将已播放的媒体分片文件设置为预设媒体分片文件,以基于已播放的媒体分片文件计算播放时间值。该预设媒体分片文件可以包括一个或多个媒体分片文件,一个媒体分片文件中可以包括多帧媒体数据,一个媒体分片文件中可以包括多个关键帧,此时可以包括多对相邻两个关键帧。
例如,当预设媒体分片文件包括一个媒体分片文件时,终端可以对该媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计该媒体分片文件中一对或多对相邻两个关键帧之间的存在非关键帧的个数。当仅得到一对相邻两个关键帧之间非关键帧的个数时,终端可以根据该非关键帧的个数计算相邻两个关键帧之间的播放时间值。当得到多对相邻两个关键帧之间非关键帧的个数时,终端可以取多对相邻两个关键帧之间非关键帧的个数的平均值再根据平均值计算相邻两个关键帧之间的播放时间值。
例如,当存在6对相邻两个关键帧时,这6对相邻两个关键帧之间非关键帧的个数分别为9、8、11、9、12和11,计算这6对相邻两个关键帧之间非关键帧的个数的平均值为10,若每秒播放25帧,对应的是1帧播放40毫秒,则根据平均值计算相邻两个关键帧之间的播放时间值为400毫秒。当存在一对相邻两个关键帧时,该相邻两个关键帧之间非关键帧的个数为12,若每秒播放25帧,对应的是1帧播放40毫秒,则计算相邻两个关键帧之间的播放时间值为480毫秒。
当预设媒体分片文件包括多个媒体分片文件时,终端可以计算每一个媒体分片文件对应播放时间值,然后取各个媒体分片文件对应播放时间值的平均播放时间值,得到相邻两个关键帧之间的播放时间值。或者是,先计算每一个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的个数,再取各个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的平均个数,最后根据平均个数计算相邻两个关键帧之间的播放时间值。
若未存在已播放的媒体分片文件,则终端可以根据对待播放媒体文件的编码规则获取待播放媒体文件的任一个媒体分片文件中数据帧的个数,然后根据数据帧的个数计算目标播放时间值。从而可以针对用户在播放开始就选择拖动播放的场景,由于没有播放任何媒体分片文件,无法通过实际已获取的媒体分片文件得到播放时间值,因此需要设置一个默认的值,按照预设编码规则对应的一个媒体分片文件的时间长度来计算,例如,一个媒体分片文件的时间长度为10秒,在编码过程中大概没间隔6秒有一个关键帧,意味着GOP值为150帧,因此则可设置默认的GOP值为150帧,GOP时间值为6秒。
S202、当接收到播放进度调节指令时,终端获取播放进度调节指令对应的播放位置的时间戳,以及获取待播放媒体文件中各个媒体分片文件的时间长度。
在对媒体播放的过程中,用户可以根据自己的需求对媒体播放进度进行调节,例如,用户可以通过媒体播放显示界面内的进度条调节播放进度,或者通过预置的物理按键调节播放进度等,从而产生播放进度调节指令,此时,终端可以接收用户输入的播放进度调节指令,确定播放进度调节指令对应的播放位置(也可以称为SEEK位置),并确定该播放位置对应的时间戳。例如,当待播放媒体文件中已播放30分钟的媒体分片文件时,可以将播放进度快进到50分钟,即播放位置对应的时间戳为50分钟,也可以将播放进度后退到20分钟,即播放位置对应的时间戳为20分钟。
以及,终端可以从索引文件中,获取待播放媒体文件中各个媒体分片文件的时间长度。
S203、终端根据播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的目标媒体分片文件。
终端可以根据播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的媒体分片文件,得到目标媒体分片文件。
例如,当待播放媒体文件中已播放60秒的媒体分片文件时,若接收到快进到90秒的播放进度调节指令,此时,终端可以确定该播放进度调节指令对应的播放位置的时间戳为90秒,以及基于索引文件确定待播放媒体文件中各个媒体分片文件1.ts至n.ts(其中n的取值可以根据实际需要进行灵活设置)的时间长度均为10秒,可以计算出85秒播放位置所在的媒体分片文件为第九个媒体分片文件,此时目标媒体分片文件为9.ts。
又例如,当待播放媒体文件中已播放60秒的媒体分片文件时,若接收到后退到35秒的播放进度调节指令,此时,媒体播放装置可以确定该播放进度调节指令对应的播放位置的时间戳为35秒,以及基于索引文件确定待播放媒体文件中各个媒体分片文件1.ts至n.ts(其中n的取值可以根据实际需要进行灵活设置)的时间长度均为10秒,可以计算出35秒播放位置所在的媒体分片文件为第四个媒体分片文件,此时目标媒体分片文件为4.ts。
S204、终端获取目标媒体分片文件中的第一帧数据与播放位置之间的关键帧对应的时间戳。
在确定目标媒体分片文件后,终端可以从目标媒体分片文件中查找在播放附近最合适的关键帧,首先终端可以从目标媒体分片文件中的第一帧数据与播放位置之间查找关键帧,得到关键帧集,该关键帧集中可以包括一个或多个关键帧。例如,当目标媒体分片文件为3.ts,且目标媒体分片文件的时间长度为10秒时,若播放位置在目标媒体分片文件3.ts中的第4秒,每秒播放25帧目标媒体分片文件3.ts中的第100帧,此时可以在目标媒体分片文件3.ts中的第一帧数据包的头文件中提取出类型字段,根据类型字段确定该帧是否为关键帧,一直遍历到第100帧,从而可以得到第一帧与第100帧之间的关键帧。
在得到关键帧集后,可以从关键帧集中每个关键帧的头文件中提取出时间戳字段,根据时间戳字段确定每个关键帧对应的时间戳。
S205、终端获取关键帧对应的时间戳与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
终端在通过关键帧确定模块确定关键帧的过程中,可以计算每个关键帧对应的时间戳与播放位置对应的时间戳之间的差值,得到差值集,从该差值集中筛选出差值小于播放时间值的关键帧,得到关键帧集,该关键帧集中可以包括一个或多个关键帧。此时,可以从关键帧集中筛选出差值最小所对应的关键帧。
或者是,终端可以顺序去读取该目标媒体分片文件中第一帧数据与播放位置之间的每一帧数据,若读取到的当前数据帧为关键帧,则可以计算该关键帧对应的时间戳与播放位置对应的时间戳之间的差值,并判断该差值是否小于播放时间值,若该差值小于播放时间值,则确定该关键帧为最适合的关键帧,不需要继续计算后续的数据帧;若该差值是否大于或等于播放时间值,则继续计算后续的数据帧,直至得到差值小于播放时间值的关键帧。
例如,如图5所示,当播放进度调节指令对应的播放位置的时间戳为15秒,且每个媒体分片文件的时间长度为10秒时,可以根据播放位置(即SEEK位置)的时间戳及每个媒体分片文件的时间长度,确定播放位置落入在第二个媒体分片文件2.ts中。然后,读取第二个媒体分片文件2.ts,读取的第一帧数据就是I帧a,此时计算I帧a的时间戳与SEEK位置的时间戳之间的差值ta,判断ta值是否小于播放时间值(即GOP时间值),此时,ta值是否大于GOP时间值,说明I帧a不是最合适的I帧。接着,继续读取数据直到读取到I帧b,计算I帧b的时间戳与SEEK位置的时间戳之间的差值tb,此时,判定差值tb大于GOP时间值,说明I帧b也不是最合适的I帧。继续读取数据直到读取到I帧c,计算I帧c的时间戳与SEEK位置的时间戳之间的差值tc,差值tc小于GOP时间值,说明该I帧c为离SEEK位置最近且最合适的I帧数据。
S206、终端确定关键帧在目标媒体分片文件中的位置,获取位置及其后的每个数据帧的时间值。
终端在通过定位模块确定播放位置对应的媒体数据帧的过程中,可以根据关键帧的时间戳及目标标媒体分片文件的时间长度,确定关键帧在目标媒体分片文件中的位置,依次快速解码关键帧及其后续的每一帧,对解码后的关键帧进行存储,并每解码一帧数据,即可获取该数据帧的时间值,判断解码的该数据帧的时间值是否等于播放位置的时间戳。
S207、终端将时间值等于播放位置的时间戳的数据帧设置为播放位置对应的媒体数据帧。
若解码的该数据帧的时间值不等于播放位置的时间戳,则丢弃当前解码的该数据帧,继续解码下一帧数据;若解码的该数据帧的时间值等于播放位置的时间戳,则说明找到了播放位置对应的媒体数据帧,即将时间值等于播放位置的时间戳的数据帧设置为播放位置对应的媒体数据帧。
S208、终端基于关键帧及播放位置对应的媒体数据帧,以媒体数据帧为起始播放待播放媒体文件。
由于在解码关键帧后,可以对解码后的关键帧进行存储,而将关键帧与播放位置之间的数据丢弃,此时,在解码到播放位置,得到播放位置对应的媒体数据帧后,可以基于解码后的关键帧及解码后的媒体数据帧得到图像数据,并在媒体文件播放的显示界面内显示该图像数据,并以播放位置对应的媒体数据帧为起始,拉取该播放位置后的媒体数据帧进行播放,从而可以让用户精准观看到播放位置的图像。
本发明实施例中针对可以获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值,在需要对播放进度进行调节时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件,然后从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,以及确定播放位置对应的媒体数据帧,可以基于该关键帧及播放位置对应的媒体数据帧,对待播放媒体文件进行播放,可以精准对播放进度进行调节,提高了对媒体进行播放的精确性。
为便于更好的实施本发明实施例提供的媒体播放方法,本发明实施例还提供一种基于上述媒体播放方法的装置。其中名词的含义与上述媒体播放方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图6,图6为本发明实施例提供的媒体播放装置的结构示意图,其中该媒体播放装置可以包括第一获取单元301、确定单元302、第二获取单元303及播放单元304等。
其中,第一获取单元301,用于获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值。
该媒体文件可以是视频文件或音视频文件等,该媒体文件可以是基于HLS协议传输的媒体文件,也可以是基于其他协议传输的媒体文件,具体内容在此处不作限定。
第一获取单元301可以获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值。其中,预设媒体分片文件可以是已播放的媒体分片文件,或者是待播放媒体文件中的某个媒体分片文件等。该播放时间值可以是GOP时间值,一个GOP就是一组连续的画面。
相邻两个关键帧可以是在一个媒体分片文件中两两相邻的关键帧,例如,当媒体分片文件2.ts中按照先后顺序依次包括关键帧1、关键帧2和关键帧3时,关键帧1和关键帧2为一对相邻两个关键帧,关键帧2和关键帧3为一对相邻两个关键帧。
在某些实施方式中,如图7所示,第一获取单元301可以包括设置子单元3011、统计子单元3012和计算子单元3013等,具体可以如下:
设置子单元3011,用于当待播放媒体文件中存在已播放的媒体分片文件时,将已播放的媒体分片文件设置为预设媒体分片文件;
统计子单元3012,用于对预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计每相邻两个关键帧之间存在非关键帧的个数;
计算子单元3013,用于根据非关键帧的个数计算相邻两个关键帧之间的播放时间值。
可选地,计算子单元3013具体可以用于:
当存在多对相邻两个关键帧时,计算多对相邻两个关键帧之间非关键帧的个数的平均值,并根据平均值计算相邻两个关键帧之间的播放时间值;当存在一对相邻两个关键帧时,根据相邻两个关键帧之间非关键帧的个数,计算相邻两个关键帧之间的播放时间值。
具体地,在获取播放时间值的过程中,可以设置子单元3011先判断待播放媒体文件中是否存在已播放的媒体分片文件,该已播放的媒体分片文件可以是基于索引文件中媒体分片文件的地址向服务器发送媒体分片文件获取请求,并接收服务器基于媒体分片文件获取请求返回的媒体分片文件。若存在已播放的媒体分片文件,则设置子单元3011将已播放的媒体分片文件设置为预设媒体分片文件,以基于已播放的媒体分片文件计算播放时间值。
统计子单元3012可以对预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,该预设媒体分片文件可以包括一个或多个媒体分片文件,一个媒体分片文件中可以包括多帧媒体数据(即数据包),一个媒体分片文件中可以包括多个关键帧,此时可以包括多对相邻两个关键帧。
例如,当预设媒体分片文件包括一个媒体分片文件时,可以从该媒体分片文件中的第一帧媒体数据开始,从第一帧媒体数据(即数据包)的头文件中提取出类型字段,该类型字段用于存储数据包的类型(例如I帧、P帧或B帧等),此时,统计子单元3012可以根据类型字段中存储的类型确定该帧是否为关键帧。当第一帧媒体数据是关键帧时,可以记录该第一个关键帧,然后读取第二帧媒体数据,从第一帧媒体数据的头文件中提取出类型字段,根据类型字段中存储的类型确定该帧是否为关键帧。当第二帧媒体数据不是关键帧时,可以统计该非关键帧的个数(例如将统计非关键帧的全局变量设置为1),然后读取第三帧媒体数据进行判断,直至到第二个关键帧,此时统计子单元3012可以统计得到第一个关键帧与第二个关键帧之间的存在非关键帧的个数(也可以称为GOP值,即两个I帧间隔的帧个数)。当第二个关键帧后还存在媒体数据时,读取第二个关键帧后的数据包继续统计,直至到第三个关键帧,此时可以统计得到第二个关键帧与第三个关键帧之间的存在非关键帧的个数,依次类推,直至遍历完该媒体分片文件中的每一帧媒体数据,最终可以得到一对相邻两个关键帧或多对相邻两个关键帧之间存在非关键帧的个数。
当仅得到一对相邻两个关键帧之间非关键帧的个数时,计算子单元3013可以根据该非关键帧的个数计算相邻两个关键帧之间的播放时间值。例如,当每秒播放25帧,对应的是1帧播放40毫秒时,如果相邻两个关键帧之间存在非关键帧的个数为10帧,则这两相邻两个关键帧之间的播放时间值为400毫秒。
当得到多对相邻两个关键帧之间非关键帧的个数时,计算子单元3013可以将每对相邻两个关键帧之间存在非关键帧的个数进行累加,得到总帧数,根据总帧数计算平均值,得到每对相邻两个关键帧之间存在非关键帧的个数的平均值,再根据平均值计算相邻两个关键帧之间的播放时间值。
又例如,当预设媒体分片文件包括多个媒体分片文件时,可以按照上述计算一个媒体分片文件对应的播放时间值的方法,计算每一个媒体分片文件对应播放时间值,然后将每一个媒体分片文件对应播放时间值进行累加,得到总的播放时间值,在根据总的播放时间值取每一个媒体分片文件的平均播放时间值,得到相邻两个关键帧之间的播放时间值。或者是,先计算每一个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的个数,再计算每一个媒体分片文件对应的相邻两个关键帧之间存在非关键帧的平均个数,最后根据平均个数计算相邻两个关键帧之间的播放时间值。
在某些实施方式中,第一获取单元301具体可以用于:
当待播放媒体文件中未存在已播放的媒体分片文件时,根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数;根据数据帧的个数计算目标播放时间值,将目标播放时间值设置为相邻两个关键帧之间的播放时间值。
其中,预设编码规则是指对媒体文件进行编码的规则,例如,预设编码规则可以是每个媒体分片文件的时间长度为10秒,为了保证视频的质量,在片源编码过程中可以每间隔5秒或6秒设置有一个关键帧,每秒播放25帧等,该预设编码规则可以根据实际需要进行灵活设置,具体内容在此处不作限定。具体地,第一获取单元301在获取播放时间值的过程中,可以先判断待播放媒体文件中是否存在已播放的媒体分片文件,若未存在已播放的媒体分片文件,则可以根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数,此时,该预设媒体分片文件可以是待播放媒体文件中任一个媒体分片文件,当预设编码规则对应的每个媒体分片文件的时间长度为10秒,且每间隔6秒设置有一个关键帧,每秒播放25帧时,可以得到一个媒体分片文件中数据帧的个数为250帧,然后根据数据帧的个数计算目标播放时间值,例如,可以取一个媒体分片文件中数据帧的个数的一半,得到125帧,将125帧设置为相邻两个关键帧之间存在非关键帧的个数,根据该个数计算目标播放时间值为5秒。或者是,可以取相邻两个关键帧之间的时间间隔为6秒,得到相邻两个关键帧之间存在非关键帧的个数为150帧。
确定单元302,用于当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件。
在对媒体播放的过程中,用户可以根据自己的需求对媒体播放进度进行调节,例如,用户可以通过媒体播放显示界面内的进度条调节播放进度,或者通过预置的物理按键调节播放进度等,从而产生播放进度调节指令,此时,确定单元302可以接收用户输入的播放进度调节指令,确定播放进度调节指令对应的播放位置(也可以称为SEEK位置),并确定该播放位置所在的目标媒体分片文件。
在某些实施方式中,确定单元302具体用于:
当接收到播放进度调节指令时,获取播放进度调节指令对应的播放位置的时间戳;
获取待播放媒体文件中各个媒体分片文件的时间长度;
根据播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的目标媒体分片文件。
具体地,当接收到播放进度调节指令时,确定单元302可以确定该播放进度调节指令对应的播放位置,并确定该播放位置对应的时间戳,以及从索引文件中,获取待播放媒体文件中各个媒体分片文件的时间长度,然后可以根据播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的媒体分片文件,得到目标媒体分片文件。
例如,当待播放媒体文件中已播放30秒的媒体分片文件时,若接收到快进到50秒的播放进度调节指令,此时,确定单元302可以确定该播放进度调节指令对应的播放位置的时间戳为45秒,以及基于索引文件确定待播放媒体文件中各个媒体分片文件1.ts至n.ts(其中n的取值可以根据实际需要进行灵活设置)的时间长度均为10秒,可以计算出45秒播放位置所在的媒体分片文件为第五个媒体分片文件,此时目标媒体分片文件为5.ts。由于第45秒所在目标媒体分片文件为5.ts还未播放,因此,确定单元302可以确定该目标媒体分片文件的序列号,该序列号可以是媒体分片文件的标识、编号或名称等,然后从索引文件中获取与该序列号对应的地址,该地址可以是获取媒体分片文件的地址,可以基于该地址向服务器发送媒体分片文件的获取请求,并接收服务器基于该获取请求返回的媒体分片文件5.ts。
又例如,当待播放媒体文件中已播放30秒的媒体分片文件时,若接收到后退到15秒的播放进度调节指令,此时,确定单元302可以确定该播放进度调节指令对应的播放位置的时间戳为15秒,以及基于索引文件确定待播放媒体文件中各个媒体分片文件1.ts至n.ts(其中n的取值可以根据实际需要进行灵活设置)的时间长度均为10秒,可以计算出15秒播放位置所在的媒体分片文件为第二个媒体分片文件,此时目标媒体分片文件为2.ts。由于第15秒所在目标媒体分片文件为2.ts已经播放,此时,可以直接从本地获取到该媒体分片文件2.ts。
第二获取单元303,用于从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
在确定目标媒体分片文件后,第二获取单元303可以从目标媒体分片文件中查找在播放附近较合适的关键帧,即获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
在某些实施方式中,第二获取单元303具体可以用于:
从目标媒体分片文件中的第一帧数据与播放位置之间查找关键帧,得到关键帧集;
获取关键帧集中每个关键帧对应的时间戳;
获取每个关键帧对应的时间戳与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,得到关键帧集;
从关键帧集中筛选出差值最小所对应的关键帧。
具体地,第二获取单元303可以从目标媒体分片文件中的第一帧数据与播放位置之间查找关键帧,得到关键帧集,该关键帧集中可以包括一个或多个关键帧。例如,当目标媒体分片文件为2.ts,且目标媒体分片文件的时间长度为10秒时,若播放位置在目标媒体分片文件2.ts中的第4秒,每秒播放25帧目标媒体分片文件2.ts中的第100帧,此时可以在目标媒体分片文件2.ts中的第一帧数据包的头文件中提取出类型字段,根据类型字段确定该帧是否为关键帧,一直遍历到第100帧,从而可以得到第一帧与第100帧之间的关键帧。
在得到关键帧集后,第二获取单元303可以从该关键帧的头文件中提取出时间戳字段,根据时间戳字段确定该关键帧对应的时间戳,依次对关键帧集中每个关键帧进行相应的处理,可以得到关键帧集中每个关键帧对应的时间戳。然后计算每个关键帧对应的时间戳与播放位置对应的时间戳之间的差值,得到差值集,从该差值集中筛选出差值小于播放时间值的关键帧,得到关键帧集,该关键帧集中可以包括一个或多个关键帧。此时,可以从关键帧集中筛选出差值最小所对应的关键帧。
在某些实施方式中,第二获取单元303具体用于:
将目标媒体分片文件中的第一帧数据作为当前媒体数据帧;
若当前媒体数据帧为关键帧,则获取关键帧对应的时间戳;
计算关键帧对应的时间戳与播放位置对应的时间戳之间的差值;
当差值大于或等于播放时间值时,将目标媒体分片文件中的第二帧数据作为当前媒体数据帧,返回执行若当前媒体数据帧为关键帧,则获取关键帧对应的时间戳的步骤,直至差值小于播放时间值,得到与播放位置对应的时间戳之间的差值小于播放时间值的关键帧。
具体地,第二获取单元303可以顺序去读取该目标媒体分片文件中的每一帧数据,首先将目标媒体分片文件中的第一帧数据作为当前媒体数据帧,判断当前媒体数据帧是否是关键帧,例如,从当前媒体数据帧的头文件中提取出类型字段,根据类型字段确定该帧是否为关键帧。若当前媒体数据帧为关键帧,则获取到该关键帧的时间戳,例如,可以从该关键帧的头文件中提取出时间戳字段,根据时间戳字段确定该关键帧对应的时间戳。计算该关键帧的时间戳与播放位置(即SEEK位置)对应的时间戳之间的差值Δpts,并判断该差值Δpts是否小于播放时间值。当差值Δpts大于或等于播放时间值时,将目标媒体分片文件中的第二帧数据作为当前媒体数据帧,继续顺序查找关键帧,依次按照上述步骤进行判断,返回执行若当前媒体数据帧为关键帧,则获取关键帧对应的时间戳的步骤,直至得到关键帧的时间戳与播放位置对应的时间戳之间的差值Δpts小于播放时间值,得到与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,即将该关键帧作为播放位置最合适的关键帧
播放单元304,用于根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。
在得到与播放位置对应的时间戳之间的差值小于播放时间值的关键帧后,播放单元304可以将从关键帧所在位置开始,往关键帧所在位置的后续数据帧中查找与播放位置对应的媒体数据帧。在得到播放位置对应的媒体数据帧后,可以以媒体数据帧为起始,结合该关键帧播放待播放媒体文件。例如,可以在媒体文件播放的显示界面内,显示基于关键帧及播放位置对应的媒体数据帧得到图像数据,并以播放位置对应的媒体数据帧为起始,拉取该播放位置后的媒体数据帧进行播放,从而可以让用户精准观看到播放位置的图像。
在某些实施方式中,播放单元304具体可以用于:
确定关键帧在目标媒体分片文件中的位置,获取位置及其后的每个数据帧的时间值;
依次将每个数据帧的时间值与播放位置的时间戳进行比对;
当存在数据帧的时间值等于播放位置的时间戳时,将数据帧设置为播放位置对应的媒体数据帧;
基于关键帧及播放位置对应的媒体数据帧,以媒体数据帧为起始播放待播放媒体文件。
具体地,播放单元304可以根据关键帧的时间戳及目标标媒体分片文件的时间长度,确定关键帧在目标媒体分片文件中的位置,依次快速解码关键帧及其后续的每一帧,对解码后的关键帧进行存储,并每解码一帧数据,判断解码的该数据帧的时间值是否等于播放位置的时间戳,若不等于,则丢弃当前解码的该数据帧,继续解码下一帧数据;若等于,则说明找到了播放位置对应的媒体数据帧。
例如,可以将目标媒体分片文件中的该关键帧作为当前数据帧,解码当前数据帧,关键帧的时间戳即为当前数据帧的时间值,将当前数据帧对应的时间值与播放位置对应的时间戳进行对比。如果当前数据帧对应的时间值与播放位置对应的时间戳相等,则确定当前数据帧为播放位置对应的媒体数据帧;如果当前数据帧对应的时间戳与播放位置对应的时间戳不相等,则将目标媒体分片文件中的该关键帧的后一帧作为当前数据帧,解码当前数据帧,返回执行将当前数据帧对应的时间值与播放位置对应的时间戳进行对比的步骤,直至找到当前数据帧对应的时间值与播放位置对应的时间戳相等,将当前数据帧设置为播放位置对应的媒体数据帧。
由于在解码关键帧后,可以对解码后的关键帧进行存储,而将关键帧与播放位置之间的数据丢弃,此时,在解码到播放位置,得到播放位置对应的媒体数据帧后,可以基于解码后的关键帧及解码后的媒体数据帧得到图像数据,并在媒体文件播放的显示界面内显示该图像数据,并以播放位置对应的媒体数据帧为起始,拉取该播放位置后的媒体数据帧进行播放。
由上可知,本发明实施例通过第一获取单元301获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值,以及当接收到播放进度调节指令时,由确定单元302确定播放进度调节指令对应的播放位置所在的目标媒体分片文件,然后第二获取单元303从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧,此时,播放单元304可以根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。该方案在需要对播放进度进行调节时,可以基于与播放位置的时间戳之间的差值小于播放时间值的关键帧,及播放位置对应的媒体数据帧,对待播放媒体文件进行播放,相对于现有以媒体分片文件为单位进行播放,可以精准对播放进度进行调节,提高了对媒体进行播放的精确性。
相应的,本发明实施例还提供一种终端,如图8所示,该终端可以包括射频(RF,Radio Frequency)电路601、包括有一个或一个以上计算机可读存储介质的存储器602、输入单元603、显示单元604、传感器605、音频电路606、无线保真(WiFi,Wireless Fidelity)模块607、包括有一个或者一个以上处理核心的处理器608、以及电源609等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路601可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器608处理;另外,将涉及上行的数据发送给基站。通常,RF电路601包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路601还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器602可用于存储软件程序以及模块,处理器608通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器608和输入单元603对存储器602的访问。
输入单元603可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元603可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器608,并能接收处理器608发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元603还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元604可用于显示由用户输入的信息或提供给用户的信息以及终端的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元604可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器608以确定触摸事件的类型,随后处理器608根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图8中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
终端还可包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在终端移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路606、扬声器,传声器可提供用户与终端之间的音频接口。音频电路606可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路606接收后转换为音频数据,再将音频数据输出处理器608处理后,经RF电路601以发送给比如另一终端,或者将音频数据输出至存储器602以便进一步处理。音频电路606还可能包括耳塞插孔,以提供外设耳机与终端的通信。
WiFi属于短距离无线传输技术,终端通过WiFi模块607可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图8示出了WiFi模块607,但是可以理解的是,其并不属于终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器608是终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器608可包括一个或多个处理核心;优选的,处理器608可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器608中。
终端还包括给各个部件供电的电源609(比如电池),优选的,电源可以通过电源管理系统与处理器608逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源609还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端中的处理器608会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器608来运行存储在存储器602中的应用程序,从而实现各种功能:
获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值;当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件;从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧;根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。
可选地,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤可以包括:当待播放媒体文件中存在已播放的媒体分片文件时,将已播放的媒体分片文件设置为预设媒体分片文件;对预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计每相邻两个关键帧之间存在非关键帧的个数;根据非关键帧的个数计算相邻两个关键帧之间的播放时间值。
可选地,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤可以包括:当待播放媒体文件中未存在已播放的媒体分片文件时,根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数;根据数据帧的个数计算目标播放时间值,将目标播放时间值设置为相邻两个关键帧之间的播放时间值。
可选地,根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件的步骤可以包括:确定关键帧在目标媒体分片文件中的位置,获取位置及其后的每个数据帧的时间值;依次将每个数据帧的时间值与播放位置的时间戳进行比对;当存在数据帧的时间值等于播放位置的时间戳时,将数据帧设置为播放位置对应的媒体数据帧;基于关键帧及播放位置对应的媒体数据帧,以媒体数据帧为起始播放待播放媒体文件。
由上可知,本发明实施例在需要对播放进度进行调节时,可以基于与播放位置的时间戳之间的差值小于播放时间值的关键帧,及播放位置对应的媒体数据帧,对待播放媒体文件进行播放,相对于现有以媒体分片文件为单位进行播放,可以精准对播放进度进行调节,提高了对媒体进行播放的精确性。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对媒体播放方法的详细描述,此处不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种媒体播放方法中的步骤。例如,该指令可以执行如下步骤:
获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值;当接收到播放进度调节指令时,确定播放进度调节指令对应的播放位置所在的目标媒体分片文件;从目标媒体分片文件中,获取与播放位置对应的时间戳之间的差值小于播放时间值的关键帧;根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件。
可选地,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤可以包括:当待播放媒体文件中存在已播放的媒体分片文件时,将已播放的媒体分片文件设置为预设媒体分片文件;对预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计每相邻两个关键帧之间存在非关键帧的个数;根据非关键帧的个数计算相邻两个关键帧之间的播放时间值。
可选地,获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤可以包括:当待播放媒体文件中未存在已播放的媒体分片文件时,根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数;根据数据帧的个数计算目标播放时间值,将目标播放时间值设置为相邻两个关键帧之间的播放时间值。
可选地,根据关键帧在目标媒体分片文件中查找与播放位置对应的媒体数据帧,并以媒体数据帧为起始播放待播放媒体文件的步骤可以包括:确定关键帧在目标媒体分片文件中的位置,获取位置及其后的每个数据帧的时间值;依次将每个数据帧的时间值与播放位置的时间戳进行比对;当存在数据帧的时间值等于播放位置的时间戳时,将数据帧设置为播放位置对应的媒体数据帧;基于关键帧及播放位置对应的媒体数据帧,以媒体数据帧为起始播放待播放媒体文件。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种媒体播放方法中的步骤,因此,可以实现本发明实施例所提供的任一种媒体播放方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种媒体播放方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种媒体播放方法,其特征在于,包括:
获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值,所述播放时间值为画面组GOP时间值,所述GOP时间值为基于预设媒体分片文件,通过多次的训练与统计,得到待播放媒体文件的GOP值,并基于GOP值计算的GOP时间值,所述GOP时间值用于为关键帧的确定提供先验知识;
当接收到播放进度调节指令时,确定所述播放进度调节指令对应的播放位置所在的目标媒体分片文件;
从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧;
确定所述关键帧在所述目标媒体分片文件中的位置,获取所述位置及其后的每个数据帧的时间值;
依次将每个数据帧的时间值与所述播放位置的时间戳进行比对;
当存在数据帧的时间值等于所述播放位置的时间戳时,将所述数据帧设置为所述播放位置对应的媒体数据帧;
基于所述关键帧及所述播放位置对应的媒体数据帧,以所述媒体数据帧为起始播放所述待播放媒体文件。
2.根据权利要求1所述的媒体播放方法,其特征在于,所述获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤包括:
当待播放媒体文件中存在已播放的媒体分片文件时,将已播放的媒体分片文件设置为预设媒体分片文件;
对所述预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计每相邻两个关键帧之间存在非关键帧的个数;
根据所述非关键帧的个数计算相邻两个关键帧之间的播放时间值。
3.根据权利要求2所述的媒体播放方法,其特征在于,所述根据所述非关键帧的个数计算每个关键帧之间的播放时间值的步骤包括:
当存在多对相邻两个关键帧时,计算多对相邻两个关键帧之间非关键帧的个数的平均值,并根据所述平均值计算相邻两个关键帧之间的播放时间值;
当存在一对相邻两个关键帧时,根据所述相邻两个关键帧之间非关键帧的个数,计算相邻两个关键帧之间的播放时间值。
4.根据权利要求1所述的媒体播放方法,其特征在于,所述获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值的步骤包括:
当待播放媒体文件中未存在已播放的媒体分片文件时,根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数;
根据所述数据帧的个数计算目标播放时间值,将所述目标播放时间值设置为相邻两个关键帧之间的播放时间值。
5.根据权利要求1所述的媒体播放方法,其特征在于,所述当接收到播放进度调节指令时,确定所述播放进度调节指令对应的播放位置所在的目标媒体分片文件的步骤包括:
当接收到播放进度调节指令时,获取所述播放进度调节指令对应的播放位置的时间戳;
获取待播放媒体文件中各个媒体分片文件的时间长度;
根据所述播放位置的时间戳和各个媒体分片文件的时间长度,确定播放位置所在的目标媒体分片文件。
6.根据权利要求1至5任一项所述的媒体播放方法,其特征在于,所述从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧的步骤包括:
从所述目标媒体分片文件中的第一帧数据与所述播放位置之间查找关键帧,得到关键帧集;
获取所述关键帧集中每个关键帧对应的时间戳;
获取所述每个关键帧对应的时间戳与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧,得到关键帧集;
从所述关键帧集中筛选出差值最小所对应的关键帧。
7.根据权利要求1至5任一项所述的媒体播放方法,其特征在于,所述从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧的步骤包括:
将所述目标媒体分片文件中的第一帧数据作为当前媒体数据帧;
若当前媒体数据帧为关键帧,则获取所述关键帧对应的时间戳;
计算所述关键帧对应的时间戳与所述播放位置对应的时间戳之间的差值;
当所述差值大于或等于所述播放时间值时,将所述目标媒体分片文件中的第二帧数据作为当前媒体数据帧,返回执行若当前媒体数据帧为关键帧,则获取所述关键帧对应的时间戳的步骤,直至所述差值小于所述播放时间值,得到与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧。
8.一种媒体播放装置,其特征在于,包括:
第一获取单元,用于获取待播放媒体文件的预设媒体分片文件中,相邻两个关键帧之间的播放时间值,所述播放时间值为画面组GOP时间值,所述GOP时间值为基于预设媒体分片文件,通过多次的训练与统计,得到待播放媒体文件的GOP值,并基于GOP值计算的GOP时间值,所述GOP时间值用于为关键帧的确定提供先验知识;
确定单元,用于当接收到播放进度调节指令时,确定所述播放进度调节指令对应的播放位置所在的目标媒体分片文件;
第二获取单元,用于从所述目标媒体分片文件中,获取与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧;
播放单元,用于确定所述关键帧在所述目标媒体分片文件中的位置,获取所述位置及其后的每个数据帧的时间值,依次将每个数据帧的时间值与所述播放位置的时间戳进行比对;当存在数据帧的时间值等于所述播放位置的时间戳时,将所述数据帧设置为所述播放位置对应的媒体数据帧,基于所述关键帧及所述播放位置对应的媒体数据帧,以所述媒体数据帧为起始播放所述待播放媒体文件。
9.根据权利要求8所述的媒体播放装置,其特征在于,所述第一获取单元包括:
设置子单元,用于当待播放媒体文件中存在已播放的媒体分片文件时,将已播放的媒体分片文件设置为预设媒体分片文件;
统计子单元,用于对所述预设媒体分片文件中的每一帧媒体数据按顺序依次遍历,统计每相邻两个关键帧之间存在非关键帧的个数;
计算子单元,用于根据所述非关键帧的个数计算相邻两个关键帧之间的播放时间值。
10.根据权利要求9所述的媒体播放装置,其特征在于,所述计算子单元具体用于:
当存在多对相邻两个关键帧时,计算多对相邻两个关键帧之间非关键帧的个数的平均值,并根据所述平均值计算相邻两个关键帧之间的播放时间值;
当存在一对相邻两个关键帧时,根据所述相邻两个关键帧之间非关键帧的个数,计算相邻两个关键帧之间的播放时间值。
11.根据权利要求8所述的媒体播放装置,其特征在于,所述第一获取单元具体用于:
当待播放媒体文件中未存在已播放的媒体分片文件时,根据预设编码规则获取待播放媒体文件的预设媒体分片文件中数据帧的个数;
根据所述数据帧的个数计算目标播放时间值,将所述目标播放时间值设置为相邻两个关键帧之间的播放时间值。
12.根据权利要求8至11任一项所述的媒体播放装置,其特征在于,所述第二获取单元具体用于:
从所述目标媒体分片文件中的第一帧数据与所述播放位置之间查找关键帧,得到关键帧集;
获取所述关键帧集中每个关键帧对应的时间戳;
获取所述每个关键帧对应的时间戳与所述播放位置对应的时间戳之间的差值小于所述播放时间值的关键帧,得到关键帧集;
从所述关键帧集中筛选出差值最小所对应的关键帧。
13.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的媒体播放方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810490840.9A CN108737908B (zh) | 2018-05-21 | 2018-05-21 | 一种媒体播放方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810490840.9A CN108737908B (zh) | 2018-05-21 | 2018-05-21 | 一种媒体播放方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108737908A CN108737908A (zh) | 2018-11-02 |
CN108737908B true CN108737908B (zh) | 2021-11-30 |
Family
ID=63937882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810490840.9A Active CN108737908B (zh) | 2018-05-21 | 2018-05-21 | 一种媒体播放方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108737908B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109862423B (zh) * | 2019-01-03 | 2021-06-22 | 珠海亿智电子科技有限公司 | 一种视频seek方法、装置、终端及计算机可读存储介质 |
CN111436004B (zh) * | 2019-01-11 | 2023-02-21 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置和设备、计算机可读存储介质 |
CN111436005B (zh) * | 2019-01-15 | 2022-03-08 | 北京字节跳动网络技术有限公司 | 用于显示图像的方法和装置 |
CN110418186B (zh) * | 2019-02-01 | 2022-03-29 | 腾讯科技(深圳)有限公司 | 音视频播放方法、装置、计算机设备和存储介质 |
CN109862391B (zh) * | 2019-03-18 | 2021-10-19 | 网易(杭州)网络有限公司 | 视频分类方法、介质、装置和计算设备 |
CN109960731B (zh) * | 2019-03-28 | 2022-11-18 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种数据处理方法、设备及存储介质 |
CN110139157B (zh) * | 2019-05-16 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 一种精确定位播放方法、装置、设备及介质 |
CN110213642A (zh) * | 2019-05-23 | 2019-09-06 | 腾讯音乐娱乐科技(深圳)有限公司 | 视频的断点播放方法、装置、存储介质及电子设备 |
CN110677736B (zh) * | 2019-10-08 | 2022-11-11 | 烽火通信科技股份有限公司 | 一种hls点播快速起播方法及系统 |
CN110677737A (zh) * | 2019-10-08 | 2020-01-10 | 烽火通信科技股份有限公司 | 一种hls直播快速起播方法及系统 |
CN110719524B (zh) * | 2019-10-16 | 2022-02-01 | 腾讯科技(深圳)有限公司 | 一种视频播放方法、装置、智能播放设备和存储介质 |
CN110913272A (zh) * | 2019-12-03 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 视频播放方法、装置、计算机可读存储介质和计算机设备 |
CN113141522B (zh) * | 2020-01-17 | 2022-09-20 | 北京达佳互联信息技术有限公司 | 资源传输方法、装置、计算机设备及存储介质 |
CN112423140A (zh) * | 2020-12-16 | 2021-02-26 | 富盛科技股份有限公司 | 视频播放方法、装置、电子设备和存储介质 |
CN113556620A (zh) * | 2021-07-20 | 2021-10-26 | 湖南快乐阳光互动娱乐传媒有限公司 | 媒体播放方法、装置和系统 |
CN113726778A (zh) * | 2021-08-30 | 2021-11-30 | 咪咕视讯科技有限公司 | 流媒体seek方法、装置、计算设备及计算机存储介质 |
CN117278811A (zh) * | 2022-06-14 | 2023-12-22 | 中兴通讯股份有限公司 | 视频播放方法、终端设备、服务器、存储介质和程序产品 |
CN117376648A (zh) * | 2022-06-29 | 2024-01-09 | 杭州海康威视数字技术股份有限公司 | 一种进度条时间更新方法、装置及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106637A (zh) * | 2006-07-13 | 2008-01-16 | 中兴通讯股份有限公司 | 通过机顶盒实现对外接存储设备的媒体文件播放的方法 |
CN102131085A (zh) * | 2010-01-20 | 2011-07-20 | 苏州尚嘉信息技术有限公司 | 一种二次差分预测编码方法、文件格式及该文件定位方法 |
CN103634616A (zh) * | 2012-08-27 | 2014-03-12 | 中兴通讯股份有限公司 | 一种基于云存储的流媒体点播方法和装置 |
CN104618794A (zh) * | 2014-04-29 | 2015-05-13 | 腾讯科技(北京)有限公司 | 播放视频的方法和装置 |
CN105549422A (zh) * | 2016-01-06 | 2016-05-04 | 深圳华强智能技术有限公司 | 基于Maya软件的机构运动轨迹规划方法 |
CN106331840A (zh) * | 2016-08-31 | 2017-01-11 | 青岛海信宽带多媒体技术有限公司 | 一种基于hls协议的音视频的跳转播放方法及装置 |
CN106550284A (zh) * | 2015-09-21 | 2017-03-29 | 北京国双科技有限公司 | 一种播放分片视频的方法及装置 |
CN107277563A (zh) * | 2017-05-12 | 2017-10-20 | 成都虚拟世界科技有限公司 | 一种生成和播放视频文件的方法、服务器及终端 |
CN107484039A (zh) * | 2017-08-22 | 2017-12-15 | 四川长虹电器股份有限公司 | 一种流媒体点播seek画面快速显示的方法 |
CN107801092A (zh) * | 2017-09-15 | 2018-03-13 | 青岛海信移动通信技术股份有限公司 | 一种视频倍速播放方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5147278B2 (ja) * | 2007-04-09 | 2013-02-20 | 株式会社日立製作所 | 映像配信装置およびキーフレーム配信方法 |
CN101888540B (zh) * | 2009-05-13 | 2012-09-05 | 中兴通讯股份有限公司 | 一种在流媒体文件中承载ts流的方法及装置 |
CN105681874A (zh) * | 2015-06-02 | 2016-06-15 | 深圳Tcl数字技术有限公司 | 网络视频在线播放的方法和装置 |
CN106803999A (zh) * | 2017-02-14 | 2017-06-06 | 北京时间股份有限公司 | 一种视频缓存处理方法、装置及服务器 |
-
2018
- 2018-05-21 CN CN201810490840.9A patent/CN108737908B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101106637A (zh) * | 2006-07-13 | 2008-01-16 | 中兴通讯股份有限公司 | 通过机顶盒实现对外接存储设备的媒体文件播放的方法 |
CN102131085A (zh) * | 2010-01-20 | 2011-07-20 | 苏州尚嘉信息技术有限公司 | 一种二次差分预测编码方法、文件格式及该文件定位方法 |
CN103634616A (zh) * | 2012-08-27 | 2014-03-12 | 中兴通讯股份有限公司 | 一种基于云存储的流媒体点播方法和装置 |
CN104618794A (zh) * | 2014-04-29 | 2015-05-13 | 腾讯科技(北京)有限公司 | 播放视频的方法和装置 |
CN106550284A (zh) * | 2015-09-21 | 2017-03-29 | 北京国双科技有限公司 | 一种播放分片视频的方法及装置 |
CN105549422A (zh) * | 2016-01-06 | 2016-05-04 | 深圳华强智能技术有限公司 | 基于Maya软件的机构运动轨迹规划方法 |
CN106331840A (zh) * | 2016-08-31 | 2017-01-11 | 青岛海信宽带多媒体技术有限公司 | 一种基于hls协议的音视频的跳转播放方法及装置 |
CN107277563A (zh) * | 2017-05-12 | 2017-10-20 | 成都虚拟世界科技有限公司 | 一种生成和播放视频文件的方法、服务器及终端 |
CN107484039A (zh) * | 2017-08-22 | 2017-12-15 | 四川长虹电器股份有限公司 | 一种流媒体点播seek画面快速显示的方法 |
CN107801092A (zh) * | 2017-09-15 | 2018-03-13 | 青岛海信移动通信技术股份有限公司 | 一种视频倍速播放方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108737908A (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108737908B (zh) | 一种媒体播放方法、装置及存储介质 | |
CN107454416B (zh) | 视频流发送方法和装置 | |
CN110278449B (zh) | 一种视频检测方法、装置、设备及介质 | |
US9924205B2 (en) | Video remote-commentary synchronization method and system, and terminal device | |
CN106791958B (zh) | 位置标记信息生成方法及装置 | |
CN104618794B (zh) | 播放视频的方法和装置 | |
US9979772B2 (en) | Data streaming method of an electronic device and the electronic device thereof | |
US20180014043A1 (en) | Method, apparatus, and system for switching from video live stream to video-on-demand data | |
CN111131884B (zh) | 一种视频剪辑的方法、相关装置、设备以及存储介质 | |
WO2017016339A1 (zh) | 视频分享方法和装置、视频播放方法和装置 | |
CN109121008B (zh) | 一种视频预览方法、装置、终端及存储介质 | |
CN106507204B (zh) | 一种视频倒放方法和装置 | |
US11202066B2 (en) | Video data encoding and decoding method, device, and system, and storage medium | |
CN111866433B (zh) | 视频源切换方法、播放方法、装置、设备和存储介质 | |
CN108900855B (zh) | 直播内容录制方法、装置、计算机可读存储介质及服务器 | |
WO2015058590A1 (zh) | 一种视频直播控制方法、设备及系统和存储介质 | |
CN109168013B (zh) | 一种抽帧的方法、装置、设备及计算机可读存储介质 | |
CN109151494B (zh) | 多媒体数据传输方法、多媒体采集设备及服务器 | |
US11297328B2 (en) | Video coding method, device, device and storage medium | |
CN110248233B (zh) | 一种音视频播放方法、装置、设备及存储介质 | |
US9781380B2 (en) | Method, apparatus and terminal for playing multimedia content | |
CN110636337B (zh) | 视频图像的截取方法、装置及系统 | |
CN105513098B (zh) | 一种图像处理的方法和装置 | |
CN116939212A (zh) | 视频处理方法、装置、计算机可读存储介质及计算机设备 | |
CN108810596B (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 |