CN110213643A - 一种流媒体缓存方法、装置及终端设备 - Google Patents

一种流媒体缓存方法、装置及终端设备 Download PDF

Info

Publication number
CN110213643A
CN110213643A CN201910502328.6A CN201910502328A CN110213643A CN 110213643 A CN110213643 A CN 110213643A CN 201910502328 A CN201910502328 A CN 201910502328A CN 110213643 A CN110213643 A CN 110213643A
Authority
CN
China
Prior art keywords
segment data
caching
data
logical address
memory block
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
Application number
CN201910502328.6A
Other languages
English (en)
Other versions
CN110213643B (zh
Inventor
熊泽东
费伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201910502328.6A priority Critical patent/CN110213643B/zh
Publication of CN110213643A publication Critical patent/CN110213643A/zh
Application granted granted Critical
Publication of CN110213643B publication Critical patent/CN110213643B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例提供了一种流媒体缓存方法、装置及终端设备,该方法包括:下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的所述预设数据量的数据作为一个分段数据;针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中;从所述第一缓存中读取所述至少一个目标分段数据;按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中。本发明可以在播放流媒体的过程中,提高下载和解码的并发度,提高用户对流媒体的观感体验。

Description

一种流媒体缓存方法、装置及终端设备
技术领域
本发明涉及数据处理技术领域,特别是涉及一种流媒体缓存方法、装置及终端设备。
背景技术
流媒体是指可以在网络上连续实时地播放的媒体格式,包括音频、视频或多媒体文件等。流媒体技术是把连续的视频和/或音频经过压缩处理后上传至网站服务器,由网站服务器向终端设备连续实时地传送各个压缩包,让终端设备一边下载一边播放流媒体内容的网络传输技术。其中,该网络传输技术的实现过程中,先在终端设备上创建一个缓冲区,在播放流媒体内容前预先下载一段数据作为缓冲,在网络带宽小于播放速度时,播放程序会取用一小段缓冲区内的数据,这样可以避免播放的中断,也使得播放品质得以保证。
然而,在实际应用中,一些终端设备,如机顶盒设备等,在播放流媒体时,下载流媒体内容和解码流媒体内容的并发度不高,导致解码器的解码速度直接依赖于网络的下载速度。因而,当网络宽度速度不佳、不稳定或CDN(Content Delivery Network,内容分发网络)服务器限速时,流媒体内容会出现开播成功率低,卡顿时间间隔短,视频不流畅,用户操作响应迟钝,网络超时等问题。这些问题严重影响了用户对流媒体内容的观感体验。
发明内容
本发明实施例的目的在于提供一种流媒体缓存方法、装置及终端设备,以在播放流媒体的过程中,提高下载和解码的并发度,提高用户对流媒体的观感体验。具体技术方案如下:
第一方面,本发明实施例提供了一种流媒体缓存方法,应用于终端设备,所述终端设备包括第一缓存和第二缓存,所述第一缓存用于存储下载的数据,所述第二缓存用于存储解码所需的数据,所述方法包括:
下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的所述预设数据量的数据作为一个分段数据;
针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中;
从所述第一缓存中读取所述至少一个目标分段数据,其中,所述至少一个目标分段数据为解码所需的分段数据;
按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中,其中,任一目标分段数据的逻辑地址为该目标分段数据在所述流媒体文件中的相对位置。
可选地,所述针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中,包括:
针对所下载的每一分段数据,根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块;
如果查询到,将该分段数据存储至查询到的存储块;
如果未查询到,按照预设分配规则在所述第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。
可选地,在所述按照预设分配规则在所述第一缓存中为该分段数据分配存储块之后,所述方法还包括:
建立该分段数据的逻辑地址和物理地址的映射关系,其中,所述物理地址为:为该分段数据分配的存储块的本地存储地址;
将所建立的映射关系保存在所述第一缓存中;
其中,所述根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块,包括:
根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块。
可选地,所述第一缓存中构建有自平衡二叉查找AVL树,所述AVL树的节点与所述第一缓存中的存储块一一对应;
所述将所建立的映射关系保存在所述第一缓存中,包括:
建立为该分段数据分配的存储块所对应的节点;
将所建立的映射关系保存在所建立的节点中;
所述根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块,包括:
在所述AVL树中查询存储有该分段数据的逻辑地址的节点;
从所查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址;
在所述第一缓存中,查找具有所读取的物理地址的存储块。
可选地,所述从所述第一缓存中读取所述至少一个目标分段数据,包括:
针对每一目标分段数据的逻辑地址,在所述AVL树中查询存储有该逻辑地址的节点;
从所查询到的节点中,读取该逻辑地址所对应的物理地址;
从所述第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
第二方面,本发明实施例提供了一种流媒体缓存装置,应用于终端设备,所述终端设备包括第一缓存和第二缓存,所述第一缓存用于存储下载的数据,所述第二缓存用于存储解码所需的数据,所述装置包括:
下载模块,用于下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的所述预设数据量的数据作为一个分段数据;
第一存储模块,用于针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中;
读取模块,用于从所述第一缓存中读取所述至少一个目标分段数据,其中,所述至少一个目标分段数据为解码所需的分段数据;
第二存储模块,用于按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中,其中,任一目标分段数据的逻辑地址为该目标分段数据在所述流媒体文件中的相对位置。
可选地,所述第一存储模块,包括:
第一查询子模块,用于针对所下载的每一分段数据,根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块,如果查询到,触发存储子模块,如果未查询到,触发分配子模块;
所述存储子模块,用于将该分段数据存储至查询到的存储块;
所述分配子模块,用于按照预设分配规则在所述第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。
可选地,所述装置还包括:
建立模块,用于在所述分配子模块按照预设分配规则在所述第一缓存中为该分段数据分配存储块之后,建立该分段数据的逻辑地址和物理地址的映射关系,其中,所述物理地址为:为该分段数据分配的存储块的本地存储地址;
保存模块,用于将所建立的映射关系保存在所述第一缓存中;
所述查询子模块,具体用于针对所下载的每一分段数据,根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块。
可选地,所述第一缓存中构建有自平衡二叉查找AVL树,所述AVL树的节点与所述第一缓存中的存储块一一对应;
所述建立模块,包括:
建立子模块,用于建立为该分段数据分配的存储块所对应的节点;
保存子模块,用于将所建立的映射关系保存在所建立的节点中;
所述第一查询子模块,包括:
查询单元,用于在所述AVL树中查询存储有该分段数据的逻辑地址的节点;
读取单元,用于从所查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址;
查找单元,用于在所述第一缓存中,查找具有所读取的物理地址的存储块。
可选地,所述读取模块,包括:
第二查询子模块,用于针对每一目标分段数据的逻辑地址,在所述AVL树中查询存储有该逻辑地址的节点;
第一读取子模块,用于从所查询到的节点中,读取该逻辑地址所对应的物理地址;
第二读取子模块,用于从所述第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
第三方面,本发明实施例提供了一种终端设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现如上第一方面所述的流媒体缓存的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如上第一方面所述的流媒体缓存的方法步骤。
第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上第一方面所述的流媒体缓存的方法步骤。
本发明实施例所提供的方案,在终端设备中设置两级缓存:用于存储下载的数据的第一缓存和用于存储解码所需的数据的第二缓存。这样,可以持续下载数据并分段存储至第一缓存,而不依赖于解码过程;同时,如果检测到存在解码需求,则直接从第一缓存中提取相应数据,而无需从网络侧下载。可见,本方案并行执行从网络侧下载数据和数据解码过程,因此,可以提高下载和解码的并发度,提高用户对流媒体的观感体验。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种流媒体缓存方法的流程图;
图2为本发明实施例提供的一种流媒体缓存装置的结构图;
图3本发明实施例提供的一种终端设备的结构示意图;
图4为本发明实施例提供的一种二级缓存结构的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
为了解决现有技术问题,本发明实施例提供了一种流媒体缓存方法、装置及终端设备。
需要说明的是,本发明实施例提供的流媒体缓存方法可以应用于终端设备。该终端设备可以是用于下载流媒体数据,并对所下载的流媒体数据进行解码播放的设备。例如,该终端设备可以是机顶盒等。为了解决现有技术问题,本发明实施例中,终端设备可以包括第一缓存和第二缓存。其中,第一缓存用于存储下载的数据,例如,存储从网络侧下载的流媒体数据。第二缓存用于存储解码所需的数据,例如,存储解码所需要的流媒体数据。示例性地,第二缓存可以是终端设备中的内存,内存的存储空间较小,但是存取速度较快。第一缓存可以是终端设备中的磁盘,磁盘的存储空间较大,存取速度相比于内存相对较慢。在实际应用中,为了保证较快的存取数据的速度,可以设定第一缓存和第二缓存的类型均为高速缓冲Cache存储器。
如图1所示,本发明实施例提供的一种流媒体缓存方法,可以包括如下步骤:
S101,下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的预设数据量的数据作为一个分段数据。
其中,流媒体文件是指采用流式传输的方式,通过互联网边传输边播放的媒体文件。示例性的,流媒体文件可以是视频文件或音频文件等。
当终端设备接收到针对流媒体文件的下载指令时,可以下载流媒体文件对应的数据。上述下载指令中可以携带有流媒体文件的标识,以及流媒体文件的下载起始位置。其中,流媒体文件的标识用于唯一标识流媒体文件,例如,可以是流媒体文件的ID(identity,身份标识)、URL(Uniform Resource Locator,统一资源定位符)等。而流媒体文件的下载起始位置是流媒体文件中的某个具体位置,例如,流媒体文件的大小为100M,下载起始位置为第10M的位置。
可以理解的是,下载流媒体文件对应的数据通常是指:通过互联网,从对应的服务器中下载流媒体文件对应的数据。所以,终端设备可以在接收到上述下载指令后,生成对应的下载请求,将该下载请求发送至服务器,以使服务器将下载请求针对的数据发送至终端设备。其中,下载请求针对的数据是指:从流媒体文件的下载起始位置开始,到流媒体文件的结束位置之间未被下载过的数据。也就是说,流媒体文件对应的数据只被下载一次即可,那么,相同的数据不会重复地进行下载。
本实施例中,下载的流媒体文件对应的数据会被存储至终端设备的第一缓存中,为了便于在第一缓存中存储和管理流媒体文件对应的数据,终端设备可以在每下载预设数据量的数据后,将所下载的预设数据量的数据作为一个分段数据。其中,预设数据量可以根据对数据的管理需要进行设定,本发明对此并不限定。例如,预设数据量为1M,0.5M等。可以理解的,下载请求针对的数据可能并不是预设数据量的整数倍,因而,最后一个分段数据的数据量可能会小于预设数据量。
S102,针对所下载的每一分段数据,将该分段数据存储至第一缓存中。
在介绍本步骤之前,先对流媒体文件的逻辑地址进行介绍。本实施例中,在服务器一侧,可以针对流媒体文件,生成该流媒体文件的多个逻辑地址。具体的,服务器可以将流媒体文件进行连续的区间划分,对于划分的每个区间,在该区间的起始位置标记一个逻辑地址,用该逻辑地址来表示该区间。对于相邻的两个区间,表示这两个区间的两个逻辑地址是连续的。例如,对于一个5M的视频,将该视频进行连续的区间划分,第1个区间为0~1M,第2个区间为1~2M,第3个区间为2~3M,第4个区间为3~4M,第5个区间为4~5M,在第1个区间的起始位置第0M标记一个逻辑地址0,用来表示第1个区间,以此类推,在第1M标记一个逻辑地址1表示第2个区间,在第2M标记一个逻辑地址2表示第3个区间,在第3M标记一个逻辑地址3表示第4个区间,在第4M标记一个逻辑地址4表示第5个区间。为了便于表述,可以将一个逻辑地址所表示的区间的数据称为:该逻辑地址对应的数据。
为了便于在第一缓存中存储和管理流媒体文件对应的数据,可以在第一缓存中划分出多个存储块,在不同的存储块中存储:流媒体文件中的、由不同的逻辑地址所表示的区间的数据。即不同的存储块对应于不同的逻辑地址,所以,存储块与流媒体文件的逻辑地址一一对应。由于服务器在流媒体文件中标记了多个逻辑地址,因而当终端设备从服务器下载流媒体文件对应的数据时,可以从所下载的数据中读取到包含的逻辑地址。进一步地,根据所读取的逻辑地址,将所下载的数据存储在第一缓存的存储块中。在本实施例中,任一存储块内所存储的数据是连续存储的,而相邻的两个存储块的本地存储地址虽然连续,但这两个存储块所存储的数据并非一定是连续存储的。
本实施例的一种方式中,针对所下载的每一分段数据,将该分段数据存储至第一缓存中,可以包括如下步骤:
步骤10,针对所下载的每一分段数据,根据该分段数据的逻辑地址,在第一缓存中查询该分段数据的逻辑地址对应的存储块,如果查询到,转到步骤11,如果未查询到,转到步骤12;
步骤11,将该分段数据存储至查询到的存储块;
步骤12,按照预设分配规则在第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。
对于终端设备所下载的每一分段数据来说,该分段数据的起始位置和结束位置与下载指令中的下载起始位置和预设数据量有关,而与流媒体文件的逻辑地址无关,所以,该分段数据可能包含1个逻辑地址,也可能包含多个逻辑地址。也就是说,该分段数据可能是1个逻辑地址对应的数据,也可能是多个逻辑地址对应的数据的组合。当该分段数据包含1个逻辑地址时,说明该分段数据包括在该逻辑地址所表示的区间内。当该分段数据包含多个逻辑地址时,说明该分段数据跨越在相邻的多个逻辑地址所表示的多个区间内。例如,该分段数据仅包括逻辑地址2,说明该分段数据包括在第3个区间2~3M内。又例如,该分段数据包括逻辑地址3和4,说明该分段数据跨越在第4个区间和第5个区间内,也就是,该分段数据的起始位置和结束位置分别在第4个区间和第5个区间内。
在本实现方式中,针对所下载的每一分段数据,考虑到第一缓存中可能存在该分段数据的逻辑地址对应的存储块,即在下载该分段数据之前,可能在第一缓存中存储有该分段数据的逻辑地址所对应的数据,因而,可以根据该分段数据的逻辑地址,在第一缓存中查询该分段数据的逻辑地址对应的存储块。这里,需要根据该分段数据的每个逻辑地址,在第一缓存中查询该逻辑地址对应的存储块。
如果查询到,则将该分段数据存储至查询到的存储块。具体的,如果该分段数据仅包含1个逻辑地址,则将该分段数据存储至查询到的存储块。如果该分段数据包含多个逻辑地址,且针对每个逻辑地址,均查询到该逻辑地址对应的存储块,则将该分段数据中的各个逻辑地址对应的数据分别存储至相应的存储块。
如果未查询到,说明第一缓存中不存在该分段数据包含的逻辑地址对应的存储块,那么可以按照预设分配规则在所述第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。具体的,当该分段数据包含1个逻辑地址,为该分段数据分配1个存储块。当该分段数据包含多个逻辑地址时,为该分段数据中每个逻辑地址对应的数据均分配一个存储块,也就是,为不同的逻辑地址对应的数据分配不同的存储块。
其中,预设分配规则可以为:分配当前未存储数据且所对应的本地存储地址最小的存储块。即先下载的分段数据的本地存储地址比后下载的分段数据的本地存储地址小。这样的分配方式,使得分配的效率更高效,也更便于管理第一缓存的存储空间。
当然,在实际应用中,也可以采用其他的分配方式,本发明对此并不限定。
可选地,在按照预设分配规则在第一缓存中为该分段数据分配存储块的步骤之后,上述方法还可以包括:
建立该分段数据的逻辑地址和物理地址的映射关系,其中,该物理地址为:为该分段数据分配的存储块的本地存储地址;
将所建立的映射关系保存在第一缓存中。
如果为该分段数据分配存储块,意味着:第一缓存中不存在该分段数据包含的逻辑地址对应的存储块。那么,在分配存储块之后,可以建立该分段数据的逻辑地址和物理地址的映射关系,并将该映射关系保存在第一缓存中。这样,当再下载分段数据后,可以根据第一缓存中保存的各个逻辑地址和物理地址的映射关系,查找再下载的分段数据对应的存储块。所以,相应地,步骤10中的根据该分段数据的逻辑地址,在第一缓存中查询该分段数据的逻辑地址对应的存储块,可以包括:
根据该分段数据的逻辑地址,以及第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块。
针对该分段数据,利用第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块,可以更快地进行查询,也可以准确地进行查询,从而便于更高效地对下载的分段数据进行存储管理。
S103,从第一缓存中读取至少一个目标分段数据,其中,至少一个目标分段数据为解码所需的分段数据。
由于在流媒体文件的播放过程中,是边传输边播放,所以负责解码播放流媒体文件的解码器会不断地请求解码所需的数据。那么,终端设备可以周期性地检测解码请求。当在一个周期内检测到解码请求时,终端设备可以确定解码请求针对的待解码数据在流媒体文件中的起止位置。也就是说,解码器每次请求解码所需的数据时,生成解码请求,在该解码请求中包括:此次解码所需的数据,即待解码数据,在流媒体文件中的起止位置。终端设备检测到该解码请求后,从该解码请求中读取待解码数据在流媒体文件中的起止位置。
确定了上述起止位置之后,需要从第一缓存中读取待解码数据。由于在第一缓存中,流媒体文件的数据以分段数据的形式存储在存储块中,因而,需要确定待解码数据对应的至少一个目标分段数据的逻辑地址,以便于从第一缓存的相应存储块中读取各个目标分段数据。具体的,可以根据待解码数据在流媒体文件中的起止位置,和服务器中存储的流媒体文件的逻辑地址,确定该起止位置中包含的至少一个逻辑地址,将所确定的至少一个逻辑地址作为至少一个目标分段数据的逻辑地址。
确定至少一个目标分段数据的逻辑地址之后,可以从第一缓存中读取至少一个目标分段数据。具体的,可以确定每个逻辑地址对应的存储块,从该存储块中读取具有该逻辑地址的目标分段数据。
S104,按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至第二缓存中,其中,任一目标分段数据的逻辑地址为该目标分段数据在流媒体文件中的相对位置。
介绍本步骤之前,先对第二缓存的数据存储和管理进行介绍。在本实施例,解码器会不断地从第二缓存中读取解码所需的数据,当第二缓存中的数据被读取后,直接从第二缓存中删除,即第二缓存不再存储已经被读取的数据。本实施例中,在第二缓存中可以构建有FIFO(First Input First Output,先入先出)队列来管理所存储的数据,而且,数据是顺序地存储在该队列中的。可以理解的,每次检测到解码请求后,如果第二缓存中存储有数据,则将第二缓存所存储的数据删除,以便于将此次解码所需的数据存储在第二缓存中。
由于数据是有序地存储在第二缓存的FIFO队列中的,所以,从第一缓存中读取各个目标分段数据后,需要按照各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中。具体的,将逻辑地址小的目标分段数据先存储至第二缓存中,将逻辑地址大的目标分段数据后存储至第二缓存中。也就是,将在流媒体文件中的相对位置靠前的目标分段数据先存储至第二缓存中,将在流媒体文件中的相对位置靠后的目标分段数据后存储至第二缓存中。例如,共有3个目标分段数据,其逻辑地址分别为3,4,5,那么,按照逻辑地址从3~5的顺序,将这3个目标分段数据存储至第二缓存中。
需要说明的是,在本发明实施例中,终端设备可以开启两个线程。其中,第一线程用于持续地下载流媒体文件对应的数据。第二线程用于检测解码请求,从第一缓存中读取解码所需的数据,并顺序地存储至第二缓存中。第二缓存中的数据可以根据解码请求被不断地推送至解码器。所以,解码过程并不会受到下载过程的影响,解码和下载的并发度高。
本发明实施例所提供的方案,在终端设备中设置两级缓存:用于存储下载的数据的第一缓存和用于存储解码所需的数据的第二缓存。这样,可以持续下载数据并分段存储至第一缓存,而不依赖于解码过程;同时,如果检测到存在解码需求,则直接从第一缓存中提取相应数据,而无需从网络侧下载。可见,本方案并行执行从网络侧下载数据和数据解码过程,因此,可以提高下载和解码的并发度,提高用户对流媒体的观感体验。
AVL(Adelson-Velskii and Landis,自平衡二叉查找)树是一种平衡二叉树。在AVL树中,任一节点的左子树和右子树的高度之差的绝对值不超过1,因此,被称为是平衡二叉树。由于AVL树具有平衡特性,所以在AVL树中进行插入节点、删除节点以及查找节点的操作时,都只需耗费O(log n)的时间。相比于非平衡二叉树,进行以上各种操作所耗费的时间更少。所以,采用AVL树对本发明实施例中的流媒体文件的数据的存储进行管理,可以减少以上各种操作所耗费的时间,也就可以尽快地从第一缓存中读取目标分段数据,以响应解码请求。
可选的,在上述实施例的一种实现方式中,第一缓存中构建有自平衡二叉查找AVL树,AVL树的节点与第一缓存中的存储块一一对应;
相应地,将所建立的映射关系保存在第一缓存中,可以包括:
建立为该分段数据分配的存储块所对应的节点;
将所建立的映射关系保存在所建立的节点中。
本实现方式中,可以利用AVL树对第一缓存中建立的各个逻辑地址和物理地址的映射关系进行管理。具体在本实现方式中,在为该分段数据分配存储块,且建立该分段数据的逻辑地址和物理地址的映射关系之后,可以建立与所分配的存储块对应的节点,然后,将所建立的该分段数据的逻辑地址与物理地址的映射关系保存在所建立的节点中。
进一步地,可以将保存有上述映射关系的节点,按照AVL树的构建规则插入AVL树中。其中,AVL树的构建规则是:任一节点的逻辑地址大于该节点的左子节点的逻辑地址,且小于该节点的右子节点的逻辑地址。基于AVL树的构建规则,实际上将各个节点按照所对应的逻辑地址的大小关系进行了连接。通过这样的连接,在读取一个目标分段数据时,可以根据该目标分段数据的逻辑地址,较快地从AVL树中确定出存储有该目标分段数据的存储块。
相应地,上述步骤10中的根据该分段数据的逻辑地址,以及第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块,可以包括:
在AVL树中查询存储有该分段数据的逻辑地址的节点;
从所查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址;
在第一缓存中,查找具有所读取的物理地址的存储块。
AVL树的每个节点中,存储有一组逻辑地址和物理地址的映射关系。也可以理解为:AVL树的每个节点中,存储有一个逻辑地址,也存储有一个物理地址,这个物理地址与这个逻辑地址具有映射关系。所以,针对一分段数据,在第一缓存中查询该分段数据的逻辑地址对应的存储块时,可以先从AVL树中查询存储有该分段数据的逻辑地址的节点,那么,该节点中存储的物理地址即为:该分段数据的逻辑地址对应的存储块的本地存储地址,进而,可以在第一缓存中,查找具有该物理地址的存储块。
可选地,相应于上述实现方式,上述S103中的从第一缓存中读取至少一个目标分段数据的步骤,可以包括:
针对每一目标分段数据的逻辑地址,在AVL树中查询存储有该逻辑地址的节点;
从所查询到的节点中,读取该逻辑地址所对应的物理地址;
从第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
对于待解码数据对应的至少一个目标分段数据来说,当从第一缓存中读取各个目标分段数据时,可以先确定各个目标分段数据的逻辑地址,然后,根据每一目标分段数据的逻辑地址,从AVL树中查询存储有该目标分段数据的逻辑地址的节点,那么,该节点中存储的物理地址即为:该目标分段数据的逻辑地址对应的存储块的本地存储地址,进而,可以在第一缓存中,查找具有该物理地址的存储块,最后,从查找到的存储块中读取该目标分段数据。
具体的,根据每一目标分段数据的逻辑地址,从AVL树中查询存储有该目标分段数据的逻辑地址的方式为:将该目标分段数据的逻辑地址LX与AVL树的根节点的逻辑地址L进行比较,若LX小于L,则在根节点的左子树中查找存储有该目标分段数据的逻辑地址的节点;若LX大于L,则在根节点的右子树中查找存储有该目标分段数据的逻辑地址的节点;若LX等于L,则将根节点作为查找到的存储有该目标分段数据的逻辑地址的节点。其中,在根节点的左子树中和右子树中的查询方式与在AVL树中的查询方式相同。
可选地,考虑到第一缓存的存储空间是有限的,为了将所下载的分段数据存储至第一缓存中,在针对所下载的每一分段数据,在上述步骤12中的按照预设分配规则在第一缓存中为该分段数据分配存储块之前,还包括步骤B1-B3:
步骤B1:判断第一缓存是否存在可用空间。
在第一缓存中为该分段数据分配存储块的步骤之前,可以先确定第一缓存是否存在可用空间。针对存在可用空间和不存在可用空间这两种情形,可以采用不同的方式为该分段数据分配存储块。
步骤B2:若第一缓存存在可用空间,则执行按照预设分配规则在第一缓存中为该分段数据分配存储块的步骤。
若第一缓存存在可用空间,则可以直接按照预设分配规则在第一缓存中为该分段数据分配存储块。
步骤B3:若第一缓存不存在可用空间,则按设定的回收规则确定出待回收存储空间的目标节点,删除目标节点中存储的数据,执行按照预设分配规则在第一缓存中为该分段数据分配存储块的步骤。
一种实现方式中,按设定的回收规则确定出待回收存储空间的目标节点,可以包括:
若任一节点的节点状态为:该节点中存储的数据均已被读取,则将该节点确定为待回收存储空间的目标节点。
若任一节点中存储的数据均已被读取,说明该节点中存储的数据已被存储至第二缓存中,用于被推送至解码器进行解码播放,所以,可以将该节点确定为待回收存储空间的目标节点。
为了便于理解本发明实施例中的二级缓存以及AVL树的存储结构,下面通过图4对本发明实施例中的二级缓存以及AVL树的存储结构进行介绍。
在图4中,高速缓冲存储器层是在网络应用层协议之上封装的一层,在该高速缓冲存储器层中,数据流可以分为在第一缓存中存储的数据和在第二缓存中存储的数据。所谓的在网络应用层协议之上封装一层高速缓冲存储器层,是指:解码器并不直接读取从网络下载的数据,而是待从网络下载的数据被存储在第一缓存中并根据解码的需要被存储在第二缓存中后,从第二缓存中读取数据。也就是说,解码器并不直接对接基于网络应用层协议所下载的数据,而是对接高速缓冲存储器层的数据。
高速缓冲存储器线程包括下载线程(图中未示出)和管理线程(图中未示出)。其中,下载线程从网络NET中,通过tcp/ip(Transmission Control Protocol/InternetProtocol,传输控制协议/因特网互联协议),再通过Http(HyperText Transfer Protocol,超文本传输协议)或者https(Hyper Text Transfer Protocol over Secure SocketLayer,安全套接字层超文本传输协议)下载流媒体文件对应的数据。管理线程将所下载的数据分段存储在第一缓存,每个分段数据按照其逻辑地址存储至相应的存储块中,不同存储块可以表示为:存储块01,存储块02,…,存储块N,N表示存储块的数量。第一缓存可以是终端设备中的磁盘。当解码器请求解码所需的数据时,管理线程从第一缓存的存储块中读取数据,并将所读取的数据按照逻辑地址从小到大的顺序,存储至第二缓存中。第二缓存可以是终端设备中的内存。在第二缓存中构建有先入先出FIFO队列来管理所存储的数据,也就是说,在第二缓存中,数据是有序存储的。解码器从第二缓存中读取数据后,所读取的数据先经过分路器,再经过解码后,在显示器中显示。图4中所示的图片是经过渲染后的流媒体文件中的一帧图像。
在第一缓存中,可以构建AVL树来对第一缓存中的数据的存储进行管理。在每个AVL树的节点中,存储有一组逻辑地址和物理地址的映射关系,也就是数据在流媒体文件中的相对位置与存储该数据的存储块的本地存储地址的映射关系。AVL树包括有节点,每个节点包括的信息有:基本元素、节点状态和孩子节点(即:左节点和右节点)的信息。其中,基本元素包括有:该节点对应的物理地址、逻辑地址和大小。逻辑地址表示该节点对应的存储块所存储的数据的逻辑地址。大小表示该节点的大小。节点状态是:该节点是否可用的状态。
为了便于理解上述的采用AVL树对本发明实施例中的分段数据进行管理的过程,下面结合一个对流媒体文件进行缓存以及读取的具体示例来说明。
在该具体示例中,设定流媒体文件为视频A,该视频A的大小为10M,那么,缓存以及读取视频A的过程为:
步骤1,终端设备接收用户针对视频A的下载指令后,生成对应的下载请求,并将该下载请求发送至服务器。
其中,终端设备包括第一缓存和第二缓存,第一缓存用于存储从服务器下载的视频A的数据,第二缓存用于存储解码所需的视频A的数据。下载请求中包括:视频A的文件标识:A,以及视频A的下载起始位置:视频A的第0M的位置。
步骤2,服务器接收到终端设备发送的下载请求后,根据此次请求的数据量,将视频A对应的从第0M开始的数据以流式传输的方式发送至终端设备。
例如,服务器将视频A对应的第0M至第10M的数据以流式传输的方式发送至终端设备。
步骤3,终端设备每接收服务器发送的视频A对应的1M数据后,将该1M数据作为一个分段数据,并根据该分段数据的逻辑地址,在AVL树中查询存储有该分段数据的逻辑地址的节点,从查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址,在第一缓存中,查找具有所读取的的物理地址的存储块。如果查找到,将该分段数据存储至查找到的存储块,转至步骤5。如果没有查找到,在第一缓存中为该分段数据分配一个存储块,并将该分段数据存储至该存储块,转至步骤4。
例如,终端设备下载了视频A的第0M至第10M的数据,每下载1M数据,将该1M数据作为一个分段数据。第0M至第10M的数据共有10个分段数,这10个分段数据的逻辑地址分别为0~9。在AVL树中查询存储有逻辑地址0~9的节点,均未查询到,那么,为这10个分段数据分配10个存储块,分别为存储块0~9,分别将逻辑地址为0~9的分段数据存储至存储块0~9中。
步骤4,新建一个节点,将该分段数据的逻辑地址和为该分段数据所分配的存储块的物理地址对应存储在该节点中,并将该节点按照AVL树的构建规则插入AVL树中。
例如,新建10个节点,将上述10个分段数据的逻辑地址和物理地址的映射关系存储在新建的不同的节点中,并将每个新建的节点插入AVL树中。
基于以上步骤1~步骤4,终端设备可以对视频A进行缓存并进行管理,基于此,可以通过以下步骤5~步骤6对视频A进行解码播放。
步骤5,终端设备周期性地检测针对视频A的解码请求,从该解码请求中读取待解码数据在视频A中的起止位置,根据该起止位置,确定待解码数据对应的至少一个目标分段数据的逻辑地址;针对每一目标分段数据,从AVL树中查询存储该分段数据的逻辑地址的节点,从所查询到的节点中,读取该逻辑地址所对应的物理地址,从第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
例如,待解码数据对应有3个目标分段数据,这3个目标分段数据的逻辑地址分别为1~3,从AVL树中查询存储有逻辑地址1~3的节点,分别为节点1~3,从节点1~3中分别读取逻辑地址1~3对应的物理地址为:物理地址1~3,从分别具有物理地址1~3的存储块1~3中,读取这3个目标分段数据。
步骤6,按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至第二缓存中。
其中,第二缓存中构建有FIFO队列来存储分段数据。例如,所读取的目标分段数据为:目标分段数据1~3,那么按照逻辑地址从1~3的顺序,将各个目标分段数据存储至第二缓存中。
至此,目标分段数据已存储至第二缓存中,解码器可以从第二缓存的FIFO队列来获取目标分段数据,并进行解码播放。
相应于图1所示方法实施例,本发明实施例提供了一种流媒体缓存装置,应用于终端设备,所述终端设备包括第一缓存和第二缓存,所述第一缓存用于存储下载的数据,所述第二缓存用于存储解码所需的数据,如图2所示,所述装置包括:
下载模块201,用于下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的所述预设数据量的数据作为一个分段数据;
第一存储模块202,用于针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中;
读取模块203,用于从所述第一缓存中读取所述至少一个目标分段数据,其中,所述至少一个目标分段数据为解码所需的分段数据;
第二存储模块204,用于按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中,其中,任一目标分段数据的逻辑地址为该目标分段数据在所述流媒体文件中的相对位置。
本发明实施例所提供的方案,在终端设备中设置两级缓存:用于存储下载的数据的第一缓存和用于存储解码所需的数据的第二缓存。这样,可以持续下载数据并分段存储至第一缓存,而不依赖于解码过程;同时,如果检测到存在解码需求,则直接从第一缓存中提取相应数据,而无需从网络侧下载。可见,本方案并行执行从网络侧下载数据和数据解码过程,因此,可以提高下载和解码的并发度,提高用户对流媒体的观感体验。
可选地,所述第一存储模块202,包括:
第一查询子模块,用于针对所下载的每一分段数据,根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块,如果查询到,触发存储子模块,如果未查询到,触发分配子模块;
所述存储子模块,用于将该分段数据存储至查询到的存储块;
所述分配子模块,用于按照预设分配规则在所述第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。
可选地,所述装置还包括:
建立模块(图2中未示出),用于在所述分配子模块按照预设分配规则在所述第一缓存中为该分段数据分配存储块之后,建立该分段数据的逻辑地址和物理地址的映射关系,其中,所述物理地址为:为该分段数据分配的存储块的本地存储地址;
保存模块(图2中未示出),用于将所建立的映射关系保存在所述第一缓存中;
所述查询子模块,具体用于针对所下载的每一分段数据,根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块。
可选地,所述第一缓存中构建有自平衡二叉查找AVL树,所述AVL树的节点与所述第一缓存中的存储块一一对应;
所述建立模块,包括:
建立子模块,用于建立为该分段数据分配的存储块所对应的节点;
保存子模块,用于将所建立的映射关系保存在所建立的节点中;
所述第一查询子模块,包括:
查询单元,用于在所述AVL树中查询存储有该分段数据的逻辑地址的节点;
读取单元,用于从所查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址;
查找单元,用于在所述第一缓存中,查找具有所读取的物理地址的存储块。
可选地,所述读取模块203,包括:
第二查询子模块,用于针对每一目标分段数据的逻辑地址,在所述AVL树中查询存储有该逻辑地址的节点;
第一读取子模块,用于从所查询到的节点中,读取该逻辑地址所对应的物理地址;
第二读取子模块,用于从所述第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
本发明实施例还提供了一种终端设备,如图3所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,实现上述实施例中任一的流媒体缓存方法,以获得相同的技术效果。
上述终端设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的流媒体缓存方法,以获得相同的技术效果。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的流媒体缓存方法,以获得相同的技术效果。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置/终端设备/存储介质/计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (11)

1.一种流媒体缓存方法,其特征在于,应用于终端设备,所述终端设备包括第一缓存和第二缓存,所述第一缓存用于存储下载的数据,所述第二缓存用于存储解码所需的数据,所述方法包括:
下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的所述预设数据量的数据作为一个分段数据;
针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中;
从所述第一缓存中读取所述至少一个目标分段数据,其中,所述至少一个目标分段数据为解码所需的分段数据;
按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中,其中,任一目标分段数据的逻辑地址为该目标分段数据在所述流媒体文件中的相对位置。
2.根据权利要求1所述的方法,其特征在于,所述针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中,包括:
针对所下载的每一分段数据,根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块;
如果查询到,将该分段数据存储至查询到的存储块;
如果未查询到,按照预设分配规则在所述第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。
3.根据权利要求2所述的方法,其特征在于,在所述按照预设分配规则在所述第一缓存中为该分段数据分配存储块之后,所述方法还包括:
建立该分段数据的逻辑地址和物理地址的映射关系,其中,所述物理地址为:为该分段数据分配的存储块的本地存储地址;
将所建立的映射关系保存在所述第一缓存中;
其中,所述根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块,包括:
根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块。
4.根据权利要求3所述的方法,其特征在于,所述第一缓存中构建有自平衡二叉查找AVL树,所述AVL树的节点与所述第一缓存中的存储块一一对应;
所述将所建立的映射关系保存在所述第一缓存中,包括:
建立为该分段数据分配的存储块所对应的节点;
将所建立的映射关系保存在所建立的节点中;
所述根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块,包括:
在所述AVL树中查询存储有该分段数据的逻辑地址的节点;
从所查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址;
在所述第一缓存中,查找具有所读取的物理地址的存储块。
5.根据权利要求4所述的方法,其特征在于,所述从所述第一缓存中读取所述至少一个目标分段数据,包括:
针对每一目标分段数据的逻辑地址,在所述AVL树中查询存储有该逻辑地址的节点;
从所查询到的节点中,读取该逻辑地址所对应的物理地址;
从所述第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
6.一种流媒体缓存装置,其特征在于,应用于终端设备,所述终端设备包括第一缓存和第二缓存,所述第一缓存用于存储下载的数据,所述第二缓存用于存储解码所需的数据,所述装置包括:
下载模块,用于下载流媒体文件对应的数据,并在每下载预设数据量的数据后,将所下载的所述预设数据量的数据作为一个分段数据;
第一存储模块,用于针对所下载的每一分段数据,将该分段数据存储至所述第一缓存中;
读取模块,用于从所述第一缓存中读取所述至少一个目标分段数据,其中,所述至少一个目标分段数据为解码所需的分段数据;
第二存储模块,用于按照所读取的各个目标分段数据的逻辑地址,将各个目标分段数据顺序存储至所述第二缓存中,其中,任一目标分段数据的逻辑地址为该目标分段数据在所述流媒体文件中的相对位置。
7.根据权利要求6所述的装置,其特征在于,所述第一存储模块,包括:
第一查询子模块,用于针对所下载的每一分段数据,根据该分段数据的逻辑地址,在所述第一缓存中查询该分段数据的逻辑地址对应的存储块,如果查询到,触发存储子模块,如果未查询到,触发分配子模块;
所述存储子模块,用于将该分段数据存储至查询到的存储块;
所述分配子模块,用于按照预设分配规则在所述第一缓存中为该分段数据分配存储块,并将该分段数据存储至该存储块。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
建立模块,用于在所述分配子模块按照预设分配规则在所述第一缓存中为该分段数据分配存储块之后,建立该分段数据的逻辑地址和物理地址的映射关系,其中,所述物理地址为:为该分段数据分配的存储块的本地存储地址;
保存模块,用于将所建立的映射关系保存在所述第一缓存中;
所述查询子模块,具体用于针对所下载的每一分段数据,根据该分段数据的逻辑地址,以及所述第一缓存中保存的逻辑地址和物理地址的映射关系,查询该分段数据的逻辑地址对应的存储块。
9.根据权利要求8所述的装置,其特征在于,所述第一缓存中构建有自平衡二叉查找AVL树,所述AVL树的节点与所述第一缓存中的存储块一一对应;
所述建立模块,包括:
建立子模块,用于建立为该分段数据分配的存储块所对应的节点;
保存子模块,用于将所建立的映射关系保存在所建立的节点中;
所述第一查询子模块,包括:
查询单元,用于在所述AVL树中查询存储有该分段数据的逻辑地址的节点;
读取单元,用于从所查询到的节点中,读取该分段数据的逻辑地址所对应的物理地址;
查找单元,用于在所述第一缓存中,查找具有所读取的物理地址的存储块。
10.根据权利要求9所述的装置,其特征在于,所述读取模块,包括:
第二查询子模块,用于针对每一目标分段数据的逻辑地址,在所述AVL树中查询存储有该逻辑地址的节点;
第一读取子模块,用于从所查询到的节点中,读取该逻辑地址所对应的物理地址;
第二读取子模块,用于从所述第一缓存中具有所读取到的各个物理地址的存储块中,读取各个目标分段数据。
11.一种终端设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
CN201910502328.6A 2019-06-11 2019-06-11 一种流媒体缓存方法、装置及终端设备 Active CN110213643B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910502328.6A CN110213643B (zh) 2019-06-11 2019-06-11 一种流媒体缓存方法、装置及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910502328.6A CN110213643B (zh) 2019-06-11 2019-06-11 一种流媒体缓存方法、装置及终端设备

Publications (2)

Publication Number Publication Date
CN110213643A true CN110213643A (zh) 2019-09-06
CN110213643B CN110213643B (zh) 2023-03-24

Family

ID=67791982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910502328.6A Active CN110213643B (zh) 2019-06-11 2019-06-11 一种流媒体缓存方法、装置及终端设备

Country Status (1)

Country Link
CN (1) CN110213643B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113767641A (zh) * 2019-09-28 2021-12-07 腾讯美国有限责任公司 分段数据流处理的先进先出功能
CN114189490A (zh) * 2021-11-26 2022-03-15 广州市百果园信息技术有限公司 一种用户列表处理方法、系统、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127989A (zh) * 2007-09-11 2008-02-20 中兴通讯股份有限公司 一种支持手机超文本传输流媒体业务的方法
WO2011121746A1 (ja) * 2010-03-31 2011-10-06 株式会社日立ソリューションズ ファイルサーバ装置、及びストレージシステムの管理方法、並びにプログラム
CN102521334A (zh) * 2011-12-07 2012-06-27 广东工业大学 一种基于分类特性和平衡二叉树的数据存储、查询方法
CN103929684A (zh) * 2013-01-14 2014-07-16 华为技术有限公司 一种基于流媒体选择码流分段的方法、播放器和终端
CN104506950A (zh) * 2014-12-29 2015-04-08 珠海全志科技股份有限公司 网络流媒体播放中的多线程下载方法、装置及下载设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101127989A (zh) * 2007-09-11 2008-02-20 中兴通讯股份有限公司 一种支持手机超文本传输流媒体业务的方法
WO2011121746A1 (ja) * 2010-03-31 2011-10-06 株式会社日立ソリューションズ ファイルサーバ装置、及びストレージシステムの管理方法、並びにプログラム
CN102521334A (zh) * 2011-12-07 2012-06-27 广东工业大学 一种基于分类特性和平衡二叉树的数据存储、查询方法
CN103929684A (zh) * 2013-01-14 2014-07-16 华为技术有限公司 一种基于流媒体选择码流分段的方法、播放器和终端
CN104506950A (zh) * 2014-12-29 2015-04-08 珠海全志科技股份有限公司 网络流媒体播放中的多线程下载方法、装置及下载设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113767641A (zh) * 2019-09-28 2021-12-07 腾讯美国有限责任公司 分段数据流处理的先进先出功能
CN114189490A (zh) * 2021-11-26 2022-03-15 广州市百果园信息技术有限公司 一种用户列表处理方法、系统、电子设备及存储介质
CN114189490B (zh) * 2021-11-26 2023-03-31 广州市百果园信息技术有限公司 一种用户列表处理方法、系统、电子设备及存储介质

Also Published As

Publication number Publication date
CN110213643B (zh) 2023-03-24

Similar Documents

Publication Publication Date Title
CN110147398B (zh) 一种数据处理方法、装置、介质和电子设备
JP6419173B2 (ja) プッシュメッセージ制御による適応型データストリーミング方法
KR101629338B1 (ko) 저스트-인-타임 분산 비디오 캐시
US8219711B2 (en) Dynamic variable rate media delivery system
US8745262B2 (en) Adaptive network content delivery system
US8880650B2 (en) System and method for storing streaming media file
US8489760B2 (en) Media file storage format and adaptive delivery system
EP2359536B1 (en) Adaptive network content delivery system
US8612668B2 (en) Storage optimization system based on object size
US20170164020A1 (en) Content delivery method for content delivery network platform and scheduling proxy server
CA2840106A1 (en) Offline download method, multimedia file download method and system thereof
WO2017096830A1 (zh) 用于cdn平台的内容分发方法及调度代理服务器
JP2016531466A5 (zh)
CN103096126B (zh) 协作式缓存集群中面向视频点播服务的协作式缓存方法及系统
WO2009143741A1 (zh) 媒体文件的点播方法、系统和设备
US10324980B2 (en) Method and system for caching of video files
CN110213643A (zh) 一种流媒体缓存方法、装置及终端设备
US20170364833A1 (en) Ranking video delivery problems
CN108924630A (zh) 一种显示缓存进度的方法和播放设备
CN116828237B (zh) 视频播放方法和视频播放系统、电子设备及存储介质
CN112243136A (zh) 内容播放方法、视频存储方法和设备
CN101958934A (zh) 一种电子节目指南增量内容同步方法、装置及系统
JP2007527067A (ja) Uiアセットの階層的配信
CN115412777A (zh) 流媒体数据的传输方法及装置、系统
CN113473247A (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