CN110620950A - 一种音视频文件的存储方法、装置及设备 - Google Patents
一种音视频文件的存储方法、装置及设备 Download PDFInfo
- Publication number
- CN110620950A CN110620950A CN201910959011.5A CN201910959011A CN110620950A CN 110620950 A CN110620950 A CN 110620950A CN 201910959011 A CN201910959011 A CN 201910959011A CN 110620950 A CN110620950 A CN 110620950A
- Authority
- CN
- China
- Prior art keywords
- audio
- video
- target
- data
- subfile
- 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 81
- 238000012544 monitoring process Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- AWSBQWZZLBPUQH-UHFFFAOYSA-N mdat Chemical compound C1=C2CC(N)CCC2=CC2=C1OCO2 AWSBQWZZLBPUQH-UHFFFAOYSA-N 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
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/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/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4335—Housekeeping operations, e.g. prioritizing content for deletion because of storage space restrictions
-
- 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/439—Processing of audio elementary streams
-
- 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
- H04N21/4405—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 involving video stream decryption
-
- 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
- H04N21/4408—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 involving video stream encryption, e.g. re-encrypting a decrypted video stream for redistribution in a home network
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本申请公开了一种音视频文件的存储方法、装置以及设备,包括:获取目标音视频文件;若目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据该moov字段对该目标音视频文件进行划分,得到多个音视频子文件,其中,划分得到的每个音视频文件的尺寸不超过预设尺寸,并且,播放器在播放预设尺寸的音视频文件时所存在的播放时延不超过预设时长,然后,可以存储划分得到的多个音视频子文件。可见,每个音视频子文件的尺寸均不超过该预设尺寸,从而播放器在播放每个音视频子文件时所具有的播放时延也不会超过该预设时延;根据目标音视频文件的moov字段划分目标音视频文件,可以避免一帧数据的不同部分分别位于两个音视频子文件中。
Description
技术领域
本申请涉及音视频处理技术领域,特别是涉及一种音视频文件的存储方法、装置及设备。
背景技术
实际应用中,为便于播放器播放音视频文件,通常可以预先下载并存储所要播放的音视频文件。当播放器需要播放该音视频文件时,可以先从该音视频文件的存储区域中读取出该音视频文件,然后播放器可以基于读取的音视频文件进行音视频的播放。
但是,若音视频文件较大,尤其是该音视频文件在存储过程中还进行了加密处理,则播放器在播放该音视频文件时可能会存在较高的时延,甚至是长时间无法响应的情况,这对于观看视频和/或聆听音频的用户而言,是无法接受的。
发明内容
本申请实施例提供了一种音视频文件的存储方法、装置及设备,以降低播放器播放该音视频文件时所产生的时延,避免播放器长时间无法响应播放,提高用户欣赏音视频的体验。
第一方面,本申请实施例提供了一种音视频文件的存储方法,所述方法包括:
获取目标音视频文件;
若所述目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据所述moov字段,对所述目标音视频文件进行划分,得到多个音视频子文件;其中,所述moov字段记录有所述目标音视频文件中每帧数据的位置,每个所述音视频子文件的尺寸不超过预设尺寸,播放器播放所述预设尺寸的音视频文件时所具有的播放时延不超过预设时长;
存储所述多个音视频子文件。
在一些可能的实施方式中,所述方法还包括:
若所述目标音视频文件的首部第一预设数量字节的数据中不包含所述moov字段,则按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件。
在一些可能的实施方式中,按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件之后,所述方法还包括:
从所述目标音视频文件的尾部第二预设数量字节的数据中查找出所述moov字段;
根据所述moov字段将第一音视频子文件中的目标数据划入第二音视频子文件,所述目标数据为所述第二音视频子文件中的目标帧所包括数据的一部分,所述第一音视频子文件与所述第二音视频子文件为所述多个音视频子文件中相邻的音视频子文件。
在一些可能的实施方式中,所述第一音视频子文件与所述第二音视频子文件为加密后的音视频子文件,所述第一音视频子文件与所述第二音视频子文件对应的加密密钥不同;
所述根据所述moov字段将第一音视频子文件中的目标数据划入第二音视频子文件,包括:
利用所述第一音视频子文件对应的加密密钥对所述目标数据进行解密,得到明文数据;
利用所述第二音视频子文件对应的加密密钥对所述明文数据进行加密,得到密文数据;
将所述密文数据划入第二音视频子文件。
在一些可能的实施方式中,存储所述多个音视频子文件之后,所述方法还包括:
响应于针对目标音视频文件的播放指令,读取所述多个音视频子文件中未播放的目标音视频子文件;
播放所述目标音视频子文件;
继续执行所述读取预先存储的多个音视频子文件中的目标音视频子文件,直至所述多个音视频子文件中不存在未播放的音视频子文件。
在一些可能的实施方式中,所述读取预先存储的多个音视频子文件中的目标音视频子文件,包括:
根据所述播放器所在设备的CPU利用率确定读取的所述目音视频子文件中数据的频率,并按照所述频率读取所述目标音视频子文件中的数据;
和/或,
根据所述播放器所在设备的空余内存确定读取的所述目标音视频子文件的数据量,并按照所述数据量读取所述目标音视频子文件的数据。
在一些可能的实施方式中,所述根据播放器所在设备的CPU利用率确定读取所述目标音视频子文件中数据的频率,包括:
根据预先确定的CPU利用率与频率之间的对应关系,确定所述播放器所在设备的CPU利用率所对应的读取所述目标音视频子文件中数据的频率。
在一些可能的实施方式中,根据播放器所在设备的空余内存确定读取所述目标音视频子文件的数据量,包括:
若所述播放器所在设备的空余内存大小不大于所述预设尺寸,则读取所述目标音视频子文件中第一目标尺寸的音视频数据,所述第一目标尺寸小于所述预设尺寸;
若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸大于所述预设尺寸时,读取所述目标音视频子文件中所述预设尺寸的音视频数据;
若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸不大于所述预设尺寸时,读取所述目标音视频子文件中所述第二目标尺寸的音视频数据;
其中,所述第二目标尺寸是根据所述空余内存大小进行确定的。
第二方面,本申请实施例还提供了一种音视频文件的存储装置,所述装置包括:
获取模块,用于获取目标音视频文件;
第一划分模块,用于若所述目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据所述moov字段,对所述目标音视频文件进行划分,得到多个音视频子文件;其中,所述moov字段记录有所述目标音视频文件中每帧数据的位置,每个所述音视频子文件的尺寸不超过预设尺寸,播放器播放所述预设尺寸的音视频文件时所具有的播放时延不超过预设时长;
存储模块,用于存储所述多个音视频子文件。
在一些可能的实施方式中,所述装置还包括:
第二划分模块,用于若所述目标音视频文件的首部第一预设数量字节的数据中不包含所述moov字段,则按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件。
在一些可能的实施方式中,所述装置还包括:
查找模块,用于在按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件之后,从所述目标音视频文件的尾部第二预设数量字节的数据中查找出所述moov字段;
划入模块,用于根据所述moov字段将第一音视频子文件中的目标数据划入第二音视频子文件,所述目标数据为所述第二音视频子文件中的目标帧所包括数据的一部分,所述第一音视频子文件与所述第二音视频子文件为所述多个音视频子文件中相邻的音视频子文件。
在一些可能的实施方式中,所述第一音视频子文件与所述第二音视频子文件为加密后的音视频子文件,所述第一音视频子文件与所述第二音视频子文件对应的加密密钥不同;
所述划入模块,包括:
解密单元,用于利用所述第一音视频子文件对应的加密密钥对所述目标数据进行解密,得到明文数据;
加密单元,用于利用所述第二音视频子文件对应的加密密钥对所述明文数据进行加密,得到密文数据;
划入单元,用于将所述密文数据划入第二音视频子文件。
在一些可能的实施方式中,所述装置还包括:
读取模块,用于在存储所述多个音视频子文件之后,响应于针对目标音视频文件的播放指令,读取所述多个音视频子文件中未播放的目标音视频子文件;
播放模块,用于播放所述目标音视频子文件;
继续执行模块,用于继续执行所述读取预先存储的多个音视频子文件中的目标音视频子文件,直至所述多个音视频子文件中不存在未播放的音视频子文件。
在一些可能的实施方式中,所述读取模块,包括:
第一读取单元,用于根据所述播放器所在设备的CPU利用率确定读取的所述目音视频子文件中数据的频率,并按照所述频率读取所述目标音视频子文件中的数据;
和/或,
第二读取单元,用于根据所述播放器所在设备的空余内存确定读取的所述目标音视频子文件的数据量,并按照所述数据量读取所述目标音视频子文件的数据。
在一些可能的实施方式中,所述第一读取单元,具体用于根据预先确定的CPU利用率与频率之间的对应关系,确定所述播放器所在设备的CPU利用率所对应的读取所述目标音视频子文件中数据的频率。
在一些可能的实施方式中,所述第二读取单元,包括:
第一读取子单元,用于若所述播放器所在设备的空余内存大小不大于所述预设尺寸,则读取所述目标音视频子文件中第一目标尺寸的音视频数据,所述第一目标尺寸小于所述预设尺寸;
第二读取子单元,用于若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸大于所述预设尺寸时,读取所述目标音视频子文件中所述预设尺寸的音视频数据;
第三读取子单元,用于若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸不大于所述预设尺寸时,读取所述目标音视频子文件中所述第二目标尺寸的音视频数据;
其中,所述第二目标尺寸是根据所述空余内存大小进行确定的。
第三方面,本申请实施例还提供了一种设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述第一方面中任一种实施方式所述的方法。
第四方面,本申请实施例还提供了一种存储介质,所述存储介质用于存储程序代码,所述程序代码用于执行执行上述第一方面中任一种实施方式所述的方法。
在本申请实施例的上述实现方式中,通过对音视频文件进行分段,得到该音视频文件的多个音视频子文件,从而播放器在播放该音视频文件时,可以逐段读取并播放每个音视频子文件,以降低播放器播放该音视频文件所存在的时延以及所需要占用的内存空间。具体的,可以先获取目标音视频文件,比如,在播放器播放该目标音视频文件之前,可以先将其下载至本地等,然后,在接收该目标音视频文件的过程中,若该目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据该moov字段对该目标音视频文件进行划分,得到多个音视频子文件,其中,所述moov字段记录有所述目标音视频文件中每帧数据的位置,根据该moov字段所划分得到的每个音视频文件的尺寸不超过预设尺寸,并且,播放器在播放预设尺寸的音视频文件时所存在的播放时延不超过预设时长,然后,可以存储划分得到的多个音视频子文件。
由此可知,在对目标音视频子文件按照预设尺寸进行划分后,所得到的每个音视频子文件的尺寸均不超过该预设尺寸,而播放器在播放预设尺寸的音视频文件时的播放时延不超过预设时延,从而播放器在播放每个音视频子文件时所具有的播放时延也不会超过该预设时延,因此,通过逐个播放音视频子文件的方式来完成目标音视频文件的播放,其所具有的播放时延,远小于直接播放整个目标音视频文件的所具有的播放时延;而且,因为音视频子文件的尺寸小于目标音视频文件的尺寸,因此,播放器在播放每个音视频子文件时所需占用的内存空间也会小于直接播放整个目标音视频文件所需占用的内存空间,从而可以降低播放目标音视频文件的过程中所需消耗的内存;同时,根据目标音视频文件的moov字段可以确定每一帧数据的具体位置,从而在划分目标音视频文件的过程中,可以避免一帧数据的不同部分分别位于两个音视频子文件中,从而在播放一个音视频子文件时,可以避免出现该一帧数据对应的播放画面不完整或者出现播放错误的情况发生。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一示例性应用场景示意图;
图2为本申请实施例中一种音视频文件的存储方法流程示意图;
图3为本申请实施例中一种存储多个音视频子文件的方法流程示意图;
图4为MP4格式的音视频文件的数据组成示意图;
图5为本申请实施例中一种音视频文件的播放方法流程示意图;
图6为本申请实施例中监控视频的存储以及播放方法的流程示意图;
图7为本申请实施例中一种音视频文件的存储装置的结构示意图;
图8为本申请实施例中一种设备的硬件结构示意图。
具体实施方式
目前,播放器在播放音视频文件时,通常是先读取存储区域中的音视频文件,并将其拷贝到缓存区;在拷贝完成后,播放器再基于缓存区中的音视频文件播放相应的音视频。而在一些场景中,为了保证音视频文件存储时的安全性,通常音视频文件在被下载至播放器所在设备时,还会对该音视频文件进行加密处理,因此,当播放器播放该音视频文件时,还需要对缓存区中的音视频文件的密文信息进行解密处理,并将解密得到的明文信息缓存至新的内存空间,从而播放器在得到整个音视频文件的明文信息后,基于该明文信息开始播放相应的音视频。
实际应用中,播放器在播放数据量较大的音视频文件时,经常会出现播放时延高,甚至是播放器长时间无法响应播放的情况。发明人经研究发现,播放器产生高播放时延的原因在于,播放器所在设备处理音视频数据的能力存在一定限制,如果音视频文件的数据量较大,那么读取整个音视频文件并将其拷贝到缓存区所需的时间较长,从而会使得播放器播放该音视频文件时产生较高的时延。尤其是当该数据量较大的音视频文件预先被加密时,还需要进一步耗费时间对其进行解密处理,从而进一步增加了该音视频文件的播放时延,甚至是导致该播放器长时间无法响应。而且,当音视频文件未加密时,播放器在播放该音视频文件时所需占用的内存空间至少为该音视频文件的数据量的两倍,而当该音视频文件预先进行了加密时,则播放该音视频文件所需占用的内存空间至少为该音视频文件的数据量的三倍,从而使得播放该音视频文件时的内存消耗也较大。
为此,本申请实施例提供了一种音视频文件的存储方法,通过对音视频文件进行分段,得到该音视频文件的多个音视频子文件,从而播放器在播放该音视频文件时,可以逐段读取并播放每个音视频子文件,以降低播放器播放该音视频文件所存在的时延以及所需要占用的内存空间。具体的,可以先获取目标音视频文件,比如,在播放器播放该目标音视频文件之前,可以先将其下载至本地等,然后,在接收该目标音视频文件的过程中,若该目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则可以根据该moov字段对该目标音视频文件进行划分,得到多个音视频子文件,其中,moov字段记录有该目标音视频文件中每帧数据的位置,根据moov字段所划分得到的每个音视频文件的尺寸不超过预设尺寸,并且,播放器在播放预设尺寸的音视频文件时所存在的播放时延不超过预设时长,然后,可以存储划分得到的多个音视频子文件。
由此可知,在对目标音视频子文件按照预设尺寸进行划分后,所得到的每个音视频子文件的尺寸均不超过该预设尺寸,而播放器在播放预设尺寸的音视频文件时的播放时延不超过预设时延,从而播放器在播放每个音视频子文件时所具有的播放时延也不会超过该预设时延,因此,通过逐个播放音视频子文件的方式来完成目标音视频文件的播放,其所具有的播放时延,远小于直接播放整个目标音视频文件的所具有的播放时延;而且,因为音视频子文件的尺寸小于目标音视频文件的尺寸,因此,播放器在播放每个音视频子文件时所需占用的内存空间也会小于直接播放整个目标音视频文件所需占用的内存空间,从而可以降低播放目标音视频文件的过程中所需消耗的内存。;同时,根据目标音视频文件的moov字段可以确定每一帧数据的具体位置,从而在划分目标音视频文件的过程中,可以避免一帧数据的不同部分分别位于两个音视频子文件中,从而在播放一个音视频子文件时,可以避免出现该一帧数据对应的播放画面不完整或者出现播放错误的情况发生。
作为一种示例,本申请实施例可以应用于如图1所示的示例性应用场景。在该场景中,用户101可以将服务器102中的目标音视频文件下载至终端103,并利用终端103上的音视频播放器播放来该目标音视频文件。具体的,终端103可以响应用户101获取目标音视频文件的操作,并向服务器102发送针对于该目标音视频文件的下载请求;服务器102基于该下载请求,将该目标音视频文件传输至终端103中,以使得终端103获取到该目标音视频文件;为了保证目标音视频文件存储的安全性,终端103可以对边下载该目标音视频文件边对其进行加密处理,并且,若目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据该moov字段可以将该目标音视频文件划分为多个音视频子文件,该moov字段记录有目标音视频文件中每帧数据的位置,根据该moov字段对目标音视频文件进行划分所得到的每个音视频子文件的尺寸不超过预设尺寸,并且,终端103上的播放器播放预设尺寸的音视频文件时所存在的播放时延不超过预设时长;然后,终端103可以将完成加密处理的、划分得到的音视频子文件进行存储。这样,当终端103上的播放器需要播放该目标音视频文件时,可以逐个读取该目标音视频文件中的每个音视频子文件,并对其进行解密处理得到该音视频子文件对应的明文信息,从而基于该明文信息播放该音视频子文件,以此完成整个目标音视频文件的播放。
可以理解,由于存储的每个音视频子文件的预设尺寸不超过预设尺寸,,因此,终端103上的播放器在播放每个音视频子文件时所具有的播放时延也不会超过预设时延,这相对于播放器直接播放整个目标音视频文件所具有的播放时延而言,播放时延大大减少,更容易被用户101所接受。
可以理解的是,上述场景仅是本申请实施例提供的一个场景示例,本申请实施例并不限于此场景。比如,在其它可能的应用场景中,终端103上的播放器也可以不对下载的目标音视频文件进行加密处理,即存储目标音视频文件的明文信息;又比如,终端103也可以是通过读取硬盘或者其它存储器中数据的方式获取目标音视频文件等。总之,本申请实施例可以应用于任何可适用的应用场景中,而不局限于图1所示的场景。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面将结合附图对本申请实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
参阅图2,图2示出了本申请实施例中一种音视频文件的存储方法的流程示意图,该方法可以应用于包含播放器的终端,或者独立的播放设备中,该方法具体可以包括:
S201:获取目标音视频文件。
可以理解,在对目标音视频文件进行存储时,首先需要获取到该目标音视频文件。作为一种示例,本实施例中,具体可以是通过下载的方式从服务器中获取到该目标音视频文件,也可以是通过拷贝、无线传输等方式从其它设备中获取。
值得注意的是,所获取的目标音视频文件,可以是预先进行了加密,即,获取到的是该目标音视频文件的密文信息;当然,也可以是未加密的目标音视频文件,即获取到的是该目标音视频文件的明文信息。
S202:若目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据该moov字段对该目标音视频文件进行划分,得到多个音视频子文件。其中,moov字段记录有目标音视频文件中每帧数据的位置,每个音视频子文件的尺寸不超过预设尺寸,播放器播放该预设尺寸的音视频文件时所具有的播放时延不超过预设时长。
实际应用中,播放器所在设备或者独立的播放设备所具有的数据处理能力有限,在播放数据量较小的音视频文件(比如,小于50兆字节的音视频文件等)时,播放时延可能较低,对于用户的影响并不明显。但是,在播放具有较大数据量的音视频文件(比如,大于600兆字节的音视频文件等)时,由于较大数据量的数据的读取过程以及数据解密过程需要耗费较长时间,因此,播放数据量较大的音视频文件时所具有的播放时延较高,而且音视频文件的读取以及解密过程中需要占用的内存空间较大,甚至会使得播放器长时间无法响应播放,这严重影响了用户欣赏音视频的体验。
因此,基于播放器播放数据量较小的音视频文件时所具有的播放时延较低的特点,本实施例中,在获取到播放器所要播放的目标音视频文件后,可以将该目标音视频文件划分为多个尺寸较小的音视频子文件。这样,当播放器需要播放目标音视频文件时,可以逐个读取(并解密)音视频子文件,具体可以是播放器首先读取(并解密)第一个音视频子文件,然后播放该第一个音视频子文件,当该第一个音视频子文件播放完毕或者即将播放完毕时,可以继续读取(并解密)第二个音视频子文件,以便播放该第二个音视频子文件,以此最终完成目标音视频文件的播放。可以理解,由于播放器播放每个音视频子文件所具有的播放时延较低,甚至是小于用户无感知的播放时延,因此,通过逐个播放音视频子文件的方式,可以使得在播放这个目标音视频文件的过程中,播放时延较低,从而有效提高了用户的体验,并且,每次读取(并解密)音视频字文件所需的内存相对较小,从而可以有效降低播放目标音视频文件所需消耗的内存。
在一种划分目标音视频文件的具体实施方式中,目标音视频文件中通常会在首部或者尾部附加由moov字段,该moov字段记录了目标音视频文件中的每一帧数据的位置,从而根据该moov字段可以计算出每一帧数据在存储时所对应的内存偏移地址,则,在存储目标音视频文件的过程中,若该目标音视频文件的首部第一预设数量字节的数据中包含该moov字段,则可以是根据该moov字段,将目标音视频文件划分成多个音视频子文件,每个音视频子文件的尺寸不超过预设尺寸,其中,该预设尺寸可以是通过实验测量或者理论计算(如决策树等)进行确定。举例来说,假设目标音视频文件具有230兆字节,预设尺寸为50兆,则可以将该目标音视频文件划分为5个音视频子文件,分别为4个具有50兆字节的音视频子文件以及1个具有30兆字节的音视频子文件。当然,若目标音视频文件的尺寸不超过预设尺寸时,可以只划分得到一个音视频子文件,即为该目标音视频文件本身。
其中,该预设尺寸可以是根据播放器播放音视频文件所产生的时延进行确定,具体的,当播放器播放尺寸大小为N个字节的音视频文件时所具有的播放时延小于用户所感知到的或者小于用户所能接受的播放时延,则将小于或者等于该音视频文件的尺寸N的值确定为预设尺寸。其中,N为大于0的正整数。比如,当播放器播放50兆字节的音视频文件时所具有的播放时延小于用户能够感知的播放时延,则可以将小于或者等于50兆的数值确定为预设尺寸(如50兆、45兆等)。
值得注意的是,本实施例中是根据moov字段将目标音视频文件划分成多个音视频子文件,由于根据moov字段可以确定每一帧数据在被存储时的内存偏移地址,因此,根据该moov字段对目标音视频文件进行划分时,可以将一帧数据划分在一个音视频子文件中,或者说每个音视频子文件中的每一帧数据均为完整的一帧数据,而可以避免一帧数据的不同部分分别位于两个不同的音视频子文件中。
S203:存储划分得到的多个音视频子文件。
在对目标音视频文件按照预设尺寸进行划分后,可以将该划分得到的多个音视频子文件进行存储,以便当播放器需要播放目标音视频文件时,可以从相应的存储区域中逐个读取(并解密)音视频子文件。
通过上述描述可知,在对目标音视频子文件按照预设尺寸进行划分后,所得到的每个音视频子文件的尺寸均不超过该预设尺寸,而播放器在播放预设尺寸的音视频文件时的播放时延不超过预设时延,从而播放器在播放每个音视频子文件时所具有的播放时延也不会超过该预设时延,因此,通过逐个播放音视频子文件的方式来完成目标音视频文件的播放,其所具有的播放时延,远小于直接播放整个目标音视频文件的所具有的播放时延;而且,因为音视频子文件的尺寸小于目标音视频文件的尺寸,因此,播放器在播放每个音视频子文件时所需占用的内存空间也会小于直接播放整个目标音视频文件所需占用的内存空间,从而可以降低播放目标音视频文件的过程中所需消耗的内存;同时,根据目标音视频文件的moov字段划分目标音视频文件,可以避免一帧数据的不同部分分别位于两个音视频子文件中,从而在播放一个音视频子文件时,可以避免出现该一帧数据对应的播放画面不完整或者出现播放错误的情况发生。
在本申请实施例的其它可能的实现方式中,在存储目标音视频文件时,可能该目标音视频文件的moov字段并不位于该目标音视频文件的首部,这使得在存储该目标音视频文件时,难以先获得moov字段并根据该moov字段在存储目标音视频文件的过程中将其划分成多个音视频子文件,为此,本申请还提供了另一种存储音视频子文件的实施例,以详细说明在moov字段位于目标音视频子文件的尾部时如何对目标音视频文件进行划分。具体的,参阅图3,图3示出了本申请实施例中又一种音视频文件的存储方法的流程示意图,该方法具体可以包括:
S301:获取目标音视频文件。
本实施例中步骤S301中获取目标音视频文件的具体实施方式与前述方法实施例中步骤S201的具体实施方式类似,可以参见前述方法实施例中的相关部分描述,在此不再赘述。
S302:若目标音视频文件的首部第一预设数量字节的数据中不包含moov字段,则按照预设尺寸对目标音视频文件进行划分,得到多个音视频子文件,其中,moov字段记录有目标音视频文件中每帧数据的位置,每个音视频子文件的尺寸不超过预设尺寸,播放器播放预设尺寸的音视频文件时所具有的播放时延不超过预设时长。
实际应用中,moov字段可能会位于目标音视频文件的首部,也可能会位于目标音视频文件的尾部。若moov字段位于尾部,则在存储目标音视频文件的前面部分的数据时,无法获得moov字段,从而无法根据moov字段对存储的前面部分的数据进行划分。为此,在存储目标音视频文件的过程中,可以按照预设尺寸对目标音视频文件进行划分,得到多个音视频子文件。这样,所划分得到的多个音视频子文件的尺寸大小仍然不大于预设尺寸,而在播放目标音视频文件时,逐个读取并播放该目标音视频文件的每个音视频子文件时,也不容易会出现因为播放文件过大而造成播放延时较高或者播放时延较高的问题。
S303:从目标音视频文件的尾部第二预设数量字节的数据中查找出moov字段。
可以理解,按照固定的预设尺寸对目标音视频文件进行划分,很容易出现划分的节点位于一帧数据中,即一帧数据的一部分数据可能被划分入一个音视频子文件中,而该帧数据的另一部分数据被划分入另一个音视频子文件中,从而造成一帧的完整数据不在同一音视频子文件,这使得在播放包括不完整数据帧的音视频子文件时,尤其是在播放该帧数据所对应的画面时,由于该帧数据不完整,容易造成播放画面不全甚至是产生播放错误的问题。
基于此,本实施例中,可以根据该目标音视频文件的moov字段确定目标音视频文件中每帧数据所对应的内存偏移地址,并据此对每个音视频子文件进行地址偏移,从而将一帧的完整数据全部划入同一个音视频子文件中。比如,假设第一音视频子文件的内存偏移地址范围为0至52428800(50*1024*1024),第二音视频子文件的内存偏移地址为52428800至104857600(100*1024*1024),则目标数据(数据量为1024字节)的内存偏移地址为52427777至52428800,则在将目标数据划入第二音视频子文件中后,第一音视频子文件的内存偏移地址被调整为0至52427776,而第二音视频子文件的内存偏移地址被调整为52427777至104857600。
而在存储目标音视频文件时,若未从目标音视频文件的首部第一预设数量字节的数据中查找出moov字段,表明该moov字段很可能是会位于目标音视频文件的尾部,此时可以从目标音视频文件的尾部第二预设数量字节的数据中查找出该moov字段。这样,在查找moov字段的过程中,无需从目标音视频文件的头部遍历至目标音视频文件的尾部,从而可以减少计算资源以及内存的消耗。
以MP4格式的目标音视频文件为例,该MP4格式的目标音视频文件中包含的moov字段,可以是位于MP4格式的目标音视频文件的头部中,或者是位于目标音视频文件的尾部,如图4所示。其中,ftype字段用于记录该MP4格式的编码相关信息,mDat字段用于记录真实的视频内容。因此,在从目标音视频文件中获取moov字段时,可以先从目标音视频文件的首部第一预设数量字节的数据中查找出moov字段,若查找到,即可获取到该moov字段,而若查找不到,则可以从目标音视频文件的尾部第二预设数量字节的数据中查找出该moov字段。这样,在查找moov字段时,无需从目标音视频文件的头部遍历至目标音视频文件的尾部,从而可以减少计算资源以及内存的消耗。
S304:根据moov字段将第一音视频子文件中的目标数据划入第二音视频子文件中,该目标数据为第二音视频子文件中的目标帧所包括数据的一部分,该第一音视频子文件与第二音视频子文件为多个音视频子文件中相邻的音视频子文件。
本实施例中,以对目标音视频文件中的两个相邻的音视频子文件为例,对音视频子文件的地址偏移进行示例性说明。具体的,对于目标音视频文件中的第一音视频子文件以及第二音视频子文件,若根据从查找出的moov字段,确定第一音视频子文件中某帧的一部分数据(以下称之为目标数据)属于第二音视频子文件中目标帧,则将该目标数据划入至第二音视频子文件中,以使得该目标帧的所有数据均位于第二音视频子文件中。
例如,对于目标音视频文件中的每一帧数据而言,其数据量大小通常一致,假设均为m。因此,若根据moov字段中的内存偏移地址确定第一音视频子文件中某帧数据的数据量小于m时,表明该帧数据存在另一部分数据位于与之相邻的第二音视频子文件中,从而可以将该第一音视频子文件中的该帧数据划入至第二音视频子文件。
可以理解,若直接存储音视频子文件的明文信息,一旦其发生数据泄露或者被恶意攻击,其数据存储的安全性较低,因此,本实施例中为了提高音视频子文件进行数据存储时的安全性,可以利用相应的密钥对其进行加密处理。这样,即使加密后的音视频子文件的数据发生泄露或者被恶意攻击,非法用户所得到的数据也是加密数据,从而在一定程度上可以保证数据的安全性。当然,若目标音视频文件本身为已被加密的音视频文件,此时也可以不用对其进行二次加密,而可以直接存储该目标音视频文件。
在一些可能的实施方式中,可以采用一个密钥对整个目标音视频文件进行加密,即对各个音视频子文件进行加密的密钥可以相同,这样,当存在一帧数据的两部分分别位于两个不同的音视频子文件中时,可以直接将第一音视频子文件中的目标数据划入第二音视频子文件。
而在本实施例的一些实施方式中,为了进一步提高数据存储的安全性,可以对不同的音视频子文件采用不同的密钥进行加密。这样,即使其中一个音视频子文件的加密密钥被破解,利用该加密密钥也不会轻易破解出其它音视频子文件的数据,从而可以进一步提高数据存储的安全性。值得注意的是,对于加密密钥的生成,现有技术中存在众多实施方式,在此不做过多赘述。进一步的,对于各个加密音视频子文件对应的加密密钥,可以进行对应保存。即,可以存储每个加密音视频子文件所对应的加密密钥,以便当需要对该加密音视频子文件进行解密时,根据该加密密钥完成相应的解密过程。
值得注意的是,本实施例中,为了进一步提高数据存储时的安全性,可以在存储音视频子文件之前对其进行加密处理,而在存储加密的音视频子文件后,再进行数据的调整,这相对于先存储音视频子文件的明文数据,再对每一音视频子文件进行帧数据的调整以及音视频子文件的加密处理这一实施方式而言,音视频子文件没有以明文信息进行存储,从而可以避免音视频子文件以明文信息进行存储的期间所存在的数据危险。
相应的,对于被按照不同加密密钥进行分别加密的第一音视频子文件以及第二音视频子文件,若直接将第一音视频子文件中的目标数据划入第二音视频子文件中,则第二音视频子文件中包含两种采用不同加密密码进行加密的数据,从而导致播放器在播放该帧数据所对应的音频或者视频图像时,需要针对于一帧数据请求两种解密方法,这可能会增加播放器播放音视频子文件时的播放时延,增加计算资源的消耗。
为此,本实施例中,在将加密后的第一音视频子文件中的目标数据划入第二音视频子文件中时,可以先利用第一音视频子文件对应的加密密钥对该目标数据进行解密,得到相应的明文数据,然后,可以再按照第二音视频子文件对应的加密密钥对所得到的明文数据进行加密,得到相应的密文数据。由于该密文数据的加密密钥与第二音视频子文件对应的加密密钥相同,因此可以直接将该密文数据划入至第二音视频子文件中。这样,播放器在播放该帧数据所对应的音频或者视频图像时,可以仅请求一种解密方法完成该该帧数据的解密,避免增加不必要的计算资源消耗。
上述实施方式中,是将第一音视频子文件中的目标数据调整至第二音视频子文件中,而在其它可能的实施方式中,也可以是将第二音视频子文件中属于目标帧的数据调整至第一音视频子文件中,以使得目标帧的所有数据被划入至第一加密音视频子文件中。
S305:存储多个音视频子文件。
本实施例中,目标音视频文件中的moov字段位于目标音视频文件的尾部时,可以先按照固定的预设尺寸向其划分成多个音视频子文件,然后,针对于每个音视频子文件中存在不完整的帧数据的情况,可以是通过对音视频子文件进行内存地址偏移的方式,将该不完整的帧数据划分入另一个音视频子文件中,以使得该帧的完整数据位于同一音视频子文件中,以便于播放器对于该帧数据的顺利播放。
可以理解,在将目标音视频文件划分成多个音视频子文件进行存储后,若播放器需要播放该目标音视频文件,则可以逐个读取并播放相应存储区域中音视频子文件。下面将结合附图5对播放器播放目标音视频文件的过程进行说明。
参阅图5,图5示出了本申请实施例中一种音视频文件的播放方法的流程示意图,该方法可以应用于包含播放器的终端,或者独立的播放设备中,该方法具体可以包括:
S501:响应于针对目标音视频文件的播放指令,读取所述多个音视频子文件中未播放的目标音视频子文件。
实际应用中,当需要播放目标音视频文件,比如用户当前点击播放该目标音视频文件时,可以生成针对于该目标音视频文件的播放指令。然后,播放器可以响应该播放指令,从预先存储的、对该目标音视频文件进行划分得到的多个音视频子文件中读取一个未播放的音视频子文件,即读取步骤S501中的目标音视频子文件。
其中,每个音视频子文件可以是根据moov字段对目标音视频文件进行划分所得到,并且,在划分目标音视频文件时,可以要求划分得到的每个音视频子文件的尺寸均不超过预设尺寸,并且,播放器播放该预设尺寸的音视频文件时所具有的播放时延不超过预设时长。这样,播放器在播放每个音视频子文件时所具有的播放时延也不会超过该预设时长。值得注意的是,预设尺寸可以是根据预设时长进行确定,具体可以参见前述方法实施例中确定预设尺寸以及预设时长的相关之处描述,在此不再赘述。
S502:播放该目标音视频子文件。
本实施例中,播放器在读取得到未播放的音视频子文件后,可以将其进行播放。当然,在进一步可能的实施方式中,若该目标音视频子文件预先进行了加密处理,则在播放该目标音视频子文件时,还可以先对其进行解密处理,得到解密后的目标音视频子文件,从而基于解密得到的该目标音视频子文件的明文信息,播放该目标音视频子文件。
S503:若目标音视频文件中还存在未播放的音视频子文件,则重复执行步骤S501与步骤S502,直至多个音视频子文件中不存在未播放的音视频子文件。
本实施例中,由于目标音视频文件包括多个音视频子文件,因此,在目标音视频子文件播放完毕或者即将播放完毕时,可以继续播放下一音视频子文件,即重复执行步骤S501与步骤S502,将下一未播放的音视频子文件确定为目标音视频子文件并进行读取和播放。本实施例中,通过重复执行步骤S501与S502,可以依次播放目标音视频文件的每个音视频子文件,直至该目标音视频文件的所有音视频子文件均完成播放。
由于每次读取和播放的音视频子文件的尺寸较小,因此,播放器在播放目标音视频文件的每个音视频子文件时,播放时延均较小,甚至是不被用户所感知,从而可以有效避免播放器播放数据量较大的音视频文件时所存在的高时延对用户欣赏音视频的影响。
上述实施例中中,用于划分目标音视频文件的moov字段可以是位于目标音视频文件的首部,这样,目标音视频文件在存储时,可以根据首部中的moov字段对目标音视频文件进行划分,得到多个音视频子文件。当然,在其它可能的实施例中,该moov字段也可以是位于目标音视频文件的尾部,则,在划分目标音视频时,可以先按照固定的预设尺寸对目标音视频文件进行划分,然后,可以再利用从尾部查找出的moov字段对划分得到的音视频子文件进行地址偏移,使得目标音视频文件中的每一帧数据位于同一音视频子文件中。
进一步的,若播放器所要播放的音视频子文件预先进行了加密,则在读取多个音视频子文件中需要进行播放的目标音视频子文件时,可以先对其进行解密处理,具体可以是利用该目标音视频子文件所对应的加密密钥对该目标音视频子文件进行解密,得到解密后的目标音视频子文件的明文数据,然后,可以通过播放器播放该解密得到的明文数据。
需要说明的是,实际应用中,播放器在播放视频时,可能会受到播放器所在设备的CPU利用率和/或空余内存大小的影响。比如,当播放器所在设备的CPU利用较高或者空余内存较少时,播放器播放每个音视频子文件时也可能会产生较高的时延。因此,在进一步可能的实施方式中,播放器每次在读取所需播放的目标音视频子文件时,还可以进一步根据播放器所在设备的CPU利用率确定读取目标音视频子文件中的数据的频率,并按照该频率读取数据;和/或,根据该设备的空余内存确定读取目标音视频子文件的数据量,并按照该数据量读取数据。这样,基于CPU的性能以及设备空余的内存来确定视频播放时的数据读取过程,可以进一步缓解视频播放时延较高的问题。
具体的,在确定播放器每次读取的音视频文件的数据量时,若播放器所在设备的当前空余内存大小不大于预设尺寸,则表明设备当前的内存资源较为紧张,可以读取并播放第一目标尺寸的音视频数据,如读取并播放10秒时长的音视频数据等,当然,该第一目标尺寸小于预设尺寸;而若当前空余内存大小大于预设尺寸,可以比较第二目标尺寸与预设尺寸的大小,并且,当第二目标尺寸大于预设尺寸时,播放器可以读取该预设尺寸大小的音视频数据,而当该第二目标尺寸不大于该预设尺寸时,播放器可以读取该第二目标尺寸大小的音视频数据。
其中,该第二目标尺寸可以是预先通过实验或者理论推算的方式进行确定。比如,播放器在读取2兆字节大小的音视频数据时,需要将先将其复制至缓存区中,并在对该音视频数据进行解密后,将明文数据存储于另一区域,从而播放器可以播放该区域中的明文数据,在此过程中,播放一份音视频数据可能需要消耗至少3份数据大小的内存空间,因此,为保证播放器能够顺利完成数据读取以及解密、播放过程,该目标尺寸可以是当前空余内存大小的三分之一、四分之一或者五分之一等,则,根据当前的空余内存大小可以计算出第二目标尺寸的大小。值得注意的是,播放器在读取音视频数据时,可以是以帧为单位进行读取,以避免所读取的数据中包含不完整的帧数据。
另外,由于播放器读取音视频数据的频率过高,相当于在单位时间内读取和解密音视频数据的次数越高,也就提升了设备的cpu利用率,从而会导致系统消耗过高,增加播放器播放音视频卡顿的可能性。因此,在播放器读取音视频的过程中,当播放器所在设备的CPU利用率较高时,可以增加播放器读取音视频数据的时间间隔,也即为降低音视频数据的读取频率,而在CPU的利用率较低时,可以减少播放器读取音视频数据的时间间隔,也即为提高音视频数据的读取频率。具体实现时,可以预先建立CPU利用率与读取数据的频率之间的对应关系,这样,在播放目标音视频文件的过程中,根据该预先建立的对应关系以及当前所获取的播放器所在设备的CPU利用率,可以确定当前的CPU利用率所对应的读取音视频数据的频率。
例如,当播放器的CPU利用率处于30%以下时,播放器读取音视频数据的频率可以为40Hz(赫兹),即每25ms(毫秒)读取一次音视频数据;而当播放器的CPU利用率在30%至60%之间时,播放器读取一视频数据的频率可以为20Hz,即每50ms读取一次音视频数据;当播放器的CPU利用率在60%以上时,播放器读取一视频数据的频率可以为10Hz,即每100ms读取一次音视频数据等。
为了便于理解本申请实施例的技术方案,下面结合具体应用场景对本申请实施例的技术方案进行详细描述。在该应用场景中,前述目标音视频文件具体可以是MP4格式的监控视频,由于监控视频的数据量通常较大,实际应用中播放该监控视频时可能会存在播放时延高或者播放卡顿的情况,为此,本实施例中通过对该监控视频的进行分段处理,并逐段播放分段的监控视频,以降低播放该监控视频时所具有的播放时延。具体的,参阅图6,图6示出了本申请实施例中监控视频的存储以及播放方法的流程示意图,该方法可以包括:
S601:minifilter驱动下载并存储MP4格式的监控视频。
本场景实施例中,针对于MP4格式的监控视频,可以先将其下载至本地进行存储。
S602:minifilter驱动对该监控视频按照预设尺寸进行分段加密,其中,播放器播放预设尺寸的监控视频所具有的播放时延小于预设时延,不同监控视频的分段对应于不同的加密密钥。
为了提高监控视频在进行存储时的安全性,可以对该监控视频进行加密。本实施例中,可以按照预设尺寸对该监控视频进行分段加密,即不同监控视频的分段可以采用不同的加密密钥进行加密,以进一步提高监控视频存储时的数据安全性。例如,可以将内存偏移地址为0至51200的内存空间用于存储该监控视频的第一分段,并利用密钥1对该第一分段的监控视频进行加密;将内存偏移地址为51200至102400的内存空间用于存储该监控视频的第二分段,并利用密钥2对第二分段进行加密等,依次类推,直至该监控视频的所有数据均完成加密存储。
其中,分段时的预设尺寸,可以是根据播放器所在设备的硬件配置进行确定,也可以是根据该设备当前的CPU利用率和/或空余内存确定该预设尺寸。
假设监控视频的数据量为SizeA,预设尺寸为SizeB,则该监控视频可以被划分为N段,其中,N=SizeA/SizeB+1,其中,N为大于等于1的正整数。如果N为1,则无需进行分段加密,而可以按照原有加密方式进行处理即可,如果N大于1,则监控视频可以被划分为N个分段,分别为chunk1,chunk2,…,chunkN-1,chunkN,其中,chunk1,chunk2,…,chunkN-1的尺寸大小可以相同,均为SizeB,chunkN为最后一个分段,其尺寸小于或者等于SizeB。不同的chunk对应于不同的加密密钥。
S603:minifilter驱动获取监控视频的moov字段,并根据该moov字段中的内容确定每个监控视频的分段中是否存在目标数据属于其它监控视频的分段中的目标帧。
本实施例中,可以根据该moov字段中所记录的每一帧数据的位置,计算出每一帧数据对应的内存偏移地址,也即可以确定出每个监控视频的分段的内存偏移地址,从而可以判断每个监控视频的分段中是否存在一帧数据,其一部分数据位于该分段中,另一部分数据位于其它分段中。若确定监控视频的分段中一帧数据的内存偏移地址跨越监控视频的两个分段对应的内存偏移地址,则表明该帧的所有数据并非均位于一个监控视频的分段,从而通过执行步骤S604可以将该帧的所有数据调整至一个监控视频的分段中。
值得注意的是,moov字段位于监控视频的文件头部或者尾部,如图4所示,因此,可以minifilter驱动可以读取该监控视频的文件头部的前M个字节,判断其文件头部是否包含moov字段,若不包含,则可以继续读取该监控视频的文件尾部的后P个字节,以获取到该moov字段。
S604:minifilter驱动若确定分段中存在目标数据属于其它分段的目标帧,则采用该分段对应的加密密钥对该目标数据进行解密,得到明文数据。
S605:minifilter驱动采用其它分段对应的加密密钥对该明文数据进行加密,得到加密数据。
S606:minifilter驱动将该加密数据划分至其它监控视频的分段中。
具体实现时,目标数据通常是位于该分段的第一帧或者最后一帧,因此,可以通过调整该分段的内存偏移地址,将该目标数据对应的加密数据划入至与该分段相邻的其它分段中。例如,可以是将分段的内存偏移地址向前移动一定字节数,以将加密数据的内存偏移地址划入至与该分段相邻的其它分段,从而实现将该加密数据(也即为目标数据)划入其它分段中。
S607:minifilter驱动读取监控视频的一个待播放分段,并采用相应的密钥对其进行解密,得到该待播放分段的明文信息。
本实施例中,播放器在需要播放该监控视频时,播可以向minifilter驱动发送数据播放请求,以便于minifilter驱动基于该请求,读取监控视频中一个待播放分段,并对其采用相应的密钥进行解密,从而得到该待播放分段的明文信息,并将其发送给播放器进行播放。
S608:播放器根据该待播放分段的明文信息播放该分段对应的监控视频。
S609:播放器在播放完或者即将播放完该分段对应的监控视频后,可以向minifilter驱动请求下一待播放的分段,以便于继续播放下一段监控视频。
值得注意的是,本实施例中播放器在读取并播放监控视频时,可以根据播放器所在设备的CPU利用率确定每次进行数据读取时的频率,根据播放器所在设备的空余内存确定每次读取的监控视频数据的大小,以进一步保障该监控视频的流畅播放。
S610:minifilter驱动判断当前是否存在未播放的分段,若存在,则返回执行步骤S607,若不存在,则执行步骤S611。
S611:minifilter驱动通知播放器无未播放的监控视频的分段,以便播放器结束播放。
此外,本申请实施例还提供了一种音视频文件的存储装置。参阅图7,图7示出了本申请实施例中一种音视频文件的存储装置的结构示意图,该装置700包括:
获取模块701,用于获取目标音视频文件;
第一划分模块702,用于若所述目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据所述moov字段,对所述目标音视频文件进行划分,得到多个音视频子文件;其中,每个所述音视频子文件的尺寸不超过预设尺寸,播放器播放所述预设尺寸的音视频文件时所具有的播放时延不超过预设时长;
存储模块703,用于存储所述多个音视频子文件。
在一些可能的实施方式中,所述装置700还包括:
第二划分模块,用于若所述目标音视频文件的首部第一预设数量字节的数据中不包含所述moov字段,则按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件。
在一些可能的实施方式中,所述装置700还包括:
查找模块,用于在按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件之后,从所述目标音视频文件的尾部第二预设数量字节的数据中查找出所述moov字段;
划入模块,用于根据所述moov字段将第一音视频子文件中的目标数据划入第二音视频子文件,所述目标数据为所述第二音视频子文件中的目标帧所包括数据的一部分,所述第一音视频子文件与所述第二音视频子文件为所述多个音视频子文件中相邻的音视频子文件。
在一些可能的实施方式中,所述第一音视频子文件与所述第二音视频子文件为加密后的音视频子文件,所述第一音视频子文件与所述第二音视频子文件对应的加密密钥不同;
所述划入模块,包括:
解密单元,用于利用所述第一音视频子文件对应的加密密钥对所述目标数据进行解密,得到明文数据;
加密单元,用于利用所述第二音视频子文件对应的加密密钥对所述明文数据进行加密,得到密文数据;
划入单元,用于将所述密文数据划入第二音视频子文件。
在一些可能的实施方式中,该装置700还包括:
读取模块,用于在存储所述多个音视频子文件之后,响应于针对目标音视频文件的播放指令,读取所述多个音视频子文件中未播放的目标音视频子文件;
播放模块,用于播放所述目标音视频子文件;
继续执行模块,用于继续执行所述读取预先存储的多个音视频子文件中的目标音视频子文件,直至所述多个音视频子文件中不存在未播放的音视频子文件。
在一些可能的实施方式中,所述读取模块,包括:
第一读取单元,用于根据所述播放器所在设备的CPU利用率确定读取的所述目音视频子文件中数据的频率,并按照所述频率读取所述目标音视频子文件中的数据;
和/或,
第二读取单元,用于根据所述播放器所在设备的空余内存确定读取的所述目标音视频子文件的数据量,并按照所述数据量读取所述目标音视频子文件的数据。
在一些可能的实施方式中,所述第一读取单元,具体用于根据预先确定的CPU利用率与频率之间的对应关系,确定所述播放器所在设备的CPU利用率所对应的读取所述目标音视频子文件中数据的频率。
在一些可能的实施方式中,所述第二读取单元,包括:
第一读取子单元,用于若所述播放器所在设备的空余内存大小不大于所述预设尺寸,则读取所述目标音视频子文件中第一目标尺寸的音视频数据,所述第一目标尺寸小于所述预设尺寸;
第二读取子单元,用于若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸大于所述预设尺寸时,读取所述目标音视频子文件中所述预设尺寸的音视频数据;
第三读取子单元,用于若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸不大于所述预设尺寸时,读取所述目标音视频子文件中所述第二目标尺寸的音视频数据;
其中,所述第二目标尺寸是根据所述空余内存大小进行确定的。
值得注意的是,本实施例所述的音视频文件的播放装置,对应于上述方法实施例中所述的音视频文件的播放方法,本实施例中的各模块、单元的具体实施方式,可参见前述方法实施例中的相关之处描述即可,在此不做赘述。
另外,本申请实施例还提供了一种设备。参阅图8,于8示出了本申请实施例中一种设备的硬件结构示意图,该设备800包括处理器801以及存储器802:
所述存储器802用于存储程序代码,并将所述程序代码传输给所述处理器801;
所述处理器801用于根据所述程序代码中的指令执行上述方法实施例中所述的音视频文件的存储方法和/或音视频文件的播放方法。
此外,本申请实施例还提供了一种存储介质,所述存储介质用于存储程序代码,所述程序代码用于执行上述方法实施例中所述的音视频文件的存储方法和/或音视频文件的播放方法。
本申请实施例中提到的“第一音视频子文件”、“第一划分模块”、“第一读取单元”、“第一读取子单元”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请示例性的实施方式,并非用于限定本申请的保护范围。
Claims (10)
1.一种音视频文件的存储方法,其特征在于,所述方法包括:
获取目标音视频文件;
若所述目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据所述moov字段,对所述目标音视频文件进行划分,得到多个音视频子文件;其中,所述moov字段记录有所述目标音视频文件中每帧数据的位置,每个所述音视频子文件的尺寸不超过预设尺寸,播放器播放所述预设尺寸的音视频文件时所具有的播放时延不超过预设时长;
存储所述多个音视频子文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标音视频文件的首部第一预设数量字节的数据中不包含所述moov字段,则按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件。
3.根据权利要求2所述的方法,其特征在于,按照所述预设尺寸对所述目标音视频文件进行划分,得到多个音视频子文件之后,所述方法还包括:
从所述目标音视频文件的尾部第二预设数量字节的数据中查找出所述moov字段;
根据所述moov字段将第一音视频子文件中的目标数据划入第二音视频子文件,所述目标数据为所述第二音视频子文件中的目标帧所包括数据的一部分,所述第一音视频子文件与所述第二音视频子文件为所述多个音视频子文件中相邻的音视频子文件。
4.根据权利要求3所述的方法,其特征在于,所述第一音视频子文件与所述第二音视频子文件为加密后的音视频子文件,所述第一音视频子文件与所述第二音视频子文件对应的加密密钥不同;
所述根据所述moov字段将第一音视频子文件中的目标数据划入第二音视频子文件,包括:
利用所述第一音视频子文件对应的加密密钥对所述目标数据进行解密,得到明文数据;
利用所述第二音视频子文件对应的加密密钥对所述明文数据进行加密,得到密文数据;
将所述密文数据划入第二音视频子文件。
5.根据权利要求1所述的方法,其特征在于,存储所述多个音视频子文件之后,所述方法还包括:
响应于针对目标音视频文件的播放指令,读取所述多个音视频子文件中未播放的目标音视频子文件;
播放所述目标音视频子文件;
继续执行所述读取预先存储的多个音视频子文件中的目标音视频子文件,直至所述多个音视频子文件中不存在未播放的音视频子文件。
6.根据权利要求5所述的方法,其特征在于,读取所述多个音视频子文件中未播放的目标音视频子文件,包括:
根据播放器所在设备的CPU利用率确定读取所述目标音视频子文件中数据的频率,并按照所述频率读取所述目标音视频子文件中的数据;
和/或,
根据播放器所在设备的空余内存确定读取所述目标音视频子文件的数据量,并按照所述数据量读取所述目标音视频子文件的数据。
7.根据权利要求6所述的方法,其特征在于,根据播放器所在设备的空余内存确定读取所述目标音视频子文件的数据量,包括:
若所述播放器所在设备的空余内存大小不大于所述预设尺寸,则读取所述目标音视频子文件中第一目标尺寸的音视频数据,所述第一目标尺寸小于所述预设尺寸;
若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸大于所述预设尺寸时,读取所述目标音视频子文件中所述预设尺寸的音视频数据;
若所述播放器所述设备的空余内存大小大于所述预设尺寸,且第二目标尺寸不大于所述预设尺寸时,读取所述目标音视频子文件中所述第二目标尺寸的音视频数据;
其中,所述第二目标尺寸是根据所述空余内存大小进行确定的。
8.一种音视频文件的存储装置,其特征在于,所述装置包括:
获取模块,用于获取目标音视频文件;
第一划分模块,用于若所述目标音视频文件的首部第一预设数量字节的数据中包含moov字段,则根据所述moov字段,对所述目标音视频文件进行划分,得到多个音视频子文件;其中,所述moov字段记录有所述目标音视频文件中每帧数据的位置,每个所述音视频子文件的尺寸不超过预设尺寸,播放器播放所述预设尺寸的音视频文件时所具有的播放时延不超过预设时长;
存储模块,用于存储所述多个音视频子文件。
9.一种设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1至7任一项所述的方法。
10.一种存储介质,所述存储介质用于存储程序代码,所述程序代码用于执行权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910959011.5A CN110620950B (zh) | 2019-10-10 | 2019-10-10 | 一种音视频文件的存储方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910959011.5A CN110620950B (zh) | 2019-10-10 | 2019-10-10 | 一种音视频文件的存储方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110620950A true CN110620950A (zh) | 2019-12-27 |
CN110620950B CN110620950B (zh) | 2022-03-15 |
Family
ID=68925235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910959011.5A Active CN110620950B (zh) | 2019-10-10 | 2019-10-10 | 一种音视频文件的存储方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110620950B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113473039A (zh) * | 2021-06-18 | 2021-10-01 | 苏州浪潮智能科技有限公司 | 一种多路视频存储方法及系统 |
CN113672757A (zh) * | 2021-08-23 | 2021-11-19 | 北京字跳网络技术有限公司 | 一种音频播放方法及装置 |
CN114205628A (zh) * | 2020-09-02 | 2022-03-18 | 中国电信股份有限公司 | 一种mp4文件的编码方法、装置和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1559119A (zh) * | 2001-09-24 | 2004-12-29 | ��˹��ŵ�� | 包括元数据和媒体数据的多媒体文件的流播 |
CN101227602A (zh) * | 2007-01-18 | 2008-07-23 | 中兴通讯股份有限公司 | 文件存储方法和文件播放方法 |
US20150163283A1 (en) * | 2013-12-05 | 2015-06-11 | Samsung Electronics Co., Ltd. | Data reuse method and electronic device |
CN105578276A (zh) * | 2015-12-24 | 2016-05-11 | 杭州当虹科技有限公司 | 一种支持mp4文件逐行下载实时转换的方法 |
-
2019
- 2019-10-10 CN CN201910959011.5A patent/CN110620950B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1559119A (zh) * | 2001-09-24 | 2004-12-29 | ��˹��ŵ�� | 包括元数据和媒体数据的多媒体文件的流播 |
CN101227602A (zh) * | 2007-01-18 | 2008-07-23 | 中兴通讯股份有限公司 | 文件存储方法和文件播放方法 |
US20150163283A1 (en) * | 2013-12-05 | 2015-06-11 | Samsung Electronics Co., Ltd. | Data reuse method and electronic device |
CN105578276A (zh) * | 2015-12-24 | 2016-05-11 | 杭州当虹科技有限公司 | 一种支持mp4文件逐行下载实时转换的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114205628A (zh) * | 2020-09-02 | 2022-03-18 | 中国电信股份有限公司 | 一种mp4文件的编码方法、装置和系统 |
CN113473039A (zh) * | 2021-06-18 | 2021-10-01 | 苏州浪潮智能科技有限公司 | 一种多路视频存储方法及系统 |
CN113473039B (zh) * | 2021-06-18 | 2022-12-02 | 苏州浪潮智能科技有限公司 | 一种多路视频存储方法及系统 |
CN113672757A (zh) * | 2021-08-23 | 2021-11-19 | 北京字跳网络技术有限公司 | 一种音频播放方法及装置 |
CN113672757B (zh) * | 2021-08-23 | 2024-01-16 | 北京字跳网络技术有限公司 | 一种音频播放方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110620950B (zh) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11238165B2 (en) | File encryption method, file decryption method, electronic device, and storage medium | |
CN110620950B (zh) | 一种音视频文件的存储方法、装置及设备 | |
US7146507B2 (en) | Information recording apparatus having function of encrypting information | |
KR101013716B1 (ko) | 기억된 암호화 콘텐츠용 키 삽입을 위한 방법 및 시스템 | |
US20180183581A1 (en) | Arrangements for datalink security | |
CA2771187C (en) | Encoding video streams for adaptive video streaming | |
CN107222759B (zh) | 媒体文件加解密的方法、系统、设备和介质 | |
US8595492B2 (en) | On-demand protection and authorization of playback of media assets | |
KR100940202B1 (ko) | 일방향 함수를 사용하여 계층적으로 암호화하는 장치 및방법 | |
CN108881966B (zh) | 一种信息处理方法以及相关设备 | |
CN111698576B (zh) | 信息加密方法、解密方法、服务器、客户端及介质 | |
US11968246B2 (en) | Playback mode determining method and apparatus | |
JP2005151529A (ja) | データ伝送方法、データ伝送装置及びデータ受信装置 | |
US12010372B2 (en) | Content recording and group encryption | |
CN111432287A (zh) | 音视频文件的切片化加密方法及系统、解密方法及系统 | |
US20090282250A1 (en) | Communication apparatus, server, and computer program product therefor | |
CN106709380A (zh) | 一种针对磁盘数据存储区的加解密方法及系统 | |
US20150256333A1 (en) | Asymmetrical encryption of storage system to protect copyright and personal information | |
US10284529B2 (en) | Information processing apparatus and information processing method | |
WO2019085243A1 (zh) | 一种音视频数据播放方法以及服务器和客户端 | |
JP2006203887A (ja) | Vodシステム及びvodシステムの再構成方法 | |
CN114996747B (zh) | 加密文件离线播放方法和系统 | |
CN110912941A (zh) | 组播数据的传输处理方法及装置 | |
CN110380843B (zh) | 一种信息处理方法及相关设备 | |
CN113014956B (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 |