CN112333476B - 一种视频加载方法及装置 - Google Patents

一种视频加载方法及装置 Download PDF

Info

Publication number
CN112333476B
CN112333476B CN202110005271.6A CN202110005271A CN112333476B CN 112333476 B CN112333476 B CN 112333476B CN 202110005271 A CN202110005271 A CN 202110005271A CN 112333476 B CN112333476 B CN 112333476B
Authority
CN
China
Prior art keywords
video
downloading
state
speed
data
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
Application number
CN202110005271.6A
Other languages
English (en)
Other versions
CN112333476A (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.)
Zhizhe Sihai Beijing Technology Co Ltd
Original Assignee
Zhizhe Sihai Beijing 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 Zhizhe Sihai Beijing Technology Co Ltd filed Critical Zhizhe Sihai Beijing Technology Co Ltd
Priority to CN202110005271.6A priority Critical patent/CN112333476B/zh
Publication of CN112333476A publication Critical patent/CN112333476A/zh
Application granted granted Critical
Publication of CN112333476B publication Critical patent/CN112333476B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • 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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • 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/44Processing 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/44004Processing 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 buffer management, e.g. video decoder buffer or video display buffer
    • 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/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明涉及一种视频加载方法及装置,属于视频处理技术领域,用以解决现有技术中在保证视频观看体验时,出现的宽带过度消耗的问题。该方法包括:根据正在播放的视频已缓存的数据可播放的时长判断视频当前所处的播放状态,其次通过计时器周期性读取该播放状态,当播放状态为紧急状态时,全速下载当前播放视频的数据,当所述播放状态为非紧急状态时,启动预加载任务;这样既能够保证良好的视频观看体验,也能够避免带宽的过度消耗,从而节省宽带费用。

Description

一种视频加载方法及装置
技术领域
本发明涉及视频处理技术领域,更具体地,涉及一种视频加载方法及装置。
背景技术
近年来,随着网络硬件的快速发展,短视频越来越多地出现在各个 App中,观看短视频的体验对每个App的用户留存、DAU增长都起着越来越重要的作用。
为了保证良好的视频观看体验,大部分公司会将视频资源缓存到内容分发网络(英文全称:Content Delivery Network,简称:CDN)节点,CDN带宽费用的支出变得不可忽视。在视频领域,带宽和IP无疑是最为昂贵的支出,大部分公司为了保证良好的视频观看体验,会全速下载视频数据,这样无疑会加剧带宽的消耗。如果采用P2P技术进行下载,在移动设备上会产生大量的电力损耗。
发明内容
有鉴于此,本发明实施例的目的在于提供一种视频加载方法及装置,用以解决现有技术中在保证视频观看体验时,出现的宽带过度消耗的问题。
本发明实施例的第一方面,提供一种视频加载方法,所述方法包括:根据视频已加载时长判断视频当前所处的播放状态,所述视频已加载时长为正在播放的视频已缓存的数据可播放的时长;通过计时器周期性读取所述播放状态;当所述播放状态为紧急状态时,全速下载当前播放视频的数据;当所述播放状态为非紧急状态时,启动预加载任务。
在一个可能的实施例中,所述启动预加载任务,包括:按照视频列表,通过顺序预加载当前播放视频的上方视频和下方视频。
在一个可能的实施例中,所述启动预加载任务包括:确定所述预加载任务的预加载数据,所述预加载数据包括视频头文件和视频内容数据;根据所述视频头文件和所述视频内容数据确定所述预加载任务的加载量。
在一个可能的实施例中,所述根据所述视频头文件和所述视频内容数据确定所述预加载任务的加载量,包括:通过数据拟合视频头大小和视频长度的关系曲线,得到比例系数k;至少部分的根据所述比例系数K和所述视频内容数据确定所述预加载任务的加载量。
在一个可能的实施例中,所述紧急状态为所述预加载时长小于或等于第一设定值,所述非紧急状态为所述预加载时长大于或等于第二设定值,所述第二设定值大于第一设定值。
在一个可能的实施例中,所述方法还包括:根据模拟播放器的均匀时长T2和下载时长T3确定所述视频已加载时长。
在一个可能的实施例中,所述方法还包括:当所述播放状态为非紧急状态时,根据视频分片的实际下载速度和预期速度确定是否进入限速模式。
在一个可能的实施例中,所述根据视频分片的实际下载速度和预期速度确定是否进入限速模式,包括:根据所述视频分片的实际下载速度和所述预期速度确定下载状态,所述下载状态用于表示下载速度的快慢;根据所述下载状态确定是否进入限速模式。
在一个可能的实施例中,所述根据所述视频分片的实际下载速度和所述预期速度确定下载状态,包括:当所述实际下载速度大于期望速度,所述下载状态为快速下载;当所述实际下载速度小于或等于期望速度,所述下载状态为慢速下载。
在一个可能的实施例中,所述根据所述下载状态确定是否进入限速模式,包括:当所述下载状态为快速下载时,且计时器达到计时周期时,若当前时间大于或等于预期时间,则发送下一个视频分片请求;若当前时间小于预期时间,则该计时周期内不进行操作;当所述下载状态为慢速下载时,则发送下一个视频分片请求;其中,所述预期时间是一个视频分片通过预期速度下载所花费的时间。
在一个可能的实施例中,所述方法还包括:管理文件碎片,所述管理文件碎片包括:将整个文件按照固定长度划分,得到多个固定长度的分片,每个分片设置标志位;当搜索或者播放到一个片段时,根据所述标志位判断所述分片是否被下载;当所述分片已被下载,则从磁盘文件读取所述分片的数据;当所述分片未被下载,则发起分片下载请求。
在一个可能的实施例中,所述方法还包括:分别采用不同的线程将缓冲区的视频文件同时写入内存和磁盘文件;当视频文件写入完毕时,将下载状态设置为完成状态;若下载状态为未完成状态,则从内存中读取视频数据。
本发明实施例的第二方面,提供一种视频加载装置,所述装置包括:判断模块,被配置为根据视频已加载时长判断视频当前所处的播放状态,所述视频已加载时长为正在播放的视频已缓存的数据可播放的时长;读取模块,被配置为通过计时器周期性读取所述播放状态;下载模块,当所述播放状态为紧急状态时,被配置为全速下载当前播放视频的数据;启动模块,当所述播放状态为非紧急状态时,被配置为启动预加载任务。
在一个可能的实施例中,所述启动模块被具体配置为:按照视频列表,通过顺序预加载当前播放视频的上方视频和下方视频。
在一个可能的实施例中,所述启动模块包括第一确定模块和第二确定模块,所述第一确定模块被配置为确定所述预加载任务的预加载数据,所述预加载数据包括视频头文件和视频内容数据;所述第二确定模块被配置为根据所述视频头文件和所述视频内容数据确定所述预加载任务的加载量。
在一个可能的实施例中,所述第二确定模块具体被配置为:通过数据拟合视频头大小和视频长度的关系曲线,得到比例系数k;至少部分的根据所述比例系数K和所述视频内容数据确定所述预加载任务的加载量。
在一个可能的实施例中,所述装置还包括:第三确定模块,被配置为根据模拟播放器的均匀时长T2和下载时长T3确定所述视频已加载时长。
在一个可能的实施例中,所述装置还包括:第四确定模块,当所述播放状态为非紧急状态时,被配置为根据视频分片的实际下载速度和预期速度确定是否进入限速模式。
在一个可能的实施例中,所述第四确定模块具体被配置为:根据所述视频分片的实际下载速度和所述预期速度确定下载状态,所述下载状态用于表示下载速度的快慢;根据所述下载状态确定是否进入限速模式。
在一个可能的实施例中,所述第四确定模块具体还被配置为:当所述实际下载速度大于期望速度,所述下载状态为快速下载;当所述实际下载速度小于或等于期望速度,所述下载状态为慢速下载。
在一个可能的实施例中,所述第四确定模块具体还被配置为:当所述下载状态为快速下载时,且计时器达到计时周期时,若当前时间大于或等于预期时间,则发送下一个视频分片请求;若当前时间小于预期时间,则该计时周期内不进行操作;当所述下载状态为慢速下载时,则发送下一个视频分片请求;其中,所述预期时间是一个视频分片通过预期速度下载所花费的时间。
在一个可能的实施例中,所述装置还包括:管理模块,而被配置为管理文件碎片,所述管理模块具体被配置为:将整个文件按照固定长度划分,得到多个固定长度的分片,每个分片设置标志位;当搜索或者播放到一个片段时,根据所述标志位判断所述分片是否被下载;当所述分片已被下载,则从磁盘文件读取所述分片的数据;当所述分片未被下载,则发起分片下载请求。
在一个可能的实施例中,所述装置还包括:写入模块,被配置为分别采用不同的线程将缓冲区的视频文件同时写入内存和磁盘文件;设置模块,被配置为当视频文件写入完毕时,将下载状态设置为完成状态;第二读取模块,被配置为若下载状态为未完成状态,则从内存中读取视频数据。
本发明实施例的第三方面,提供一种电子设备,包括:存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如第一方面所述的方法。
本发明实施例的第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有可执行指令,该指令被处理器执行时使处理器执行如第一方面所述的方法。
本发明实施例提供的视频加载方法及装置,首先,根据正在播放的视频已缓存的数据可播放的时长判断视频当前所处的播放状态,其次通过计时器周期性读取该播放状态,当播放状态为紧急状态时,全速下载当前播放视频的数据,当所述播放状态为非紧急状态时,启动预加载任务;这样既能够保证良好的视频观看体验,也能够避免带宽的过度消耗,从而节省宽带费用。
本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例而了解。本发明的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本发明实施例提供的一种视频加载方法的流程图;
图2示出了本发明实施例提供的另一种视频加载方法的流程图;
图3示出了本发明实施例提供的模拟播放过程中出现的时间戳的示意图;
图4示出了本发明实施例提供的播放列表示意图;
图5示出了本发明实施例提供的在非紧急情况下进行限速的方法流程图;
图6示出了本发明实施例提供的存在文件空洞的MP4文件的示意图;
图7示出了本发明实施例提供的数据格式结构示意图;
图8示出了本发明实施例提供的一种视频文件读写的示意图;
图9示出了本发明实施例提供的一种视频加载装置的结构示意图;
图10示出了本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
需要说明的是本发明实施例中涉及的视频可以为短视频,中视频或者长视频。其中,短视频一般可以指5分钟以内的视频,中视频是指5-20分钟以内的视频,长视频是指大于30分钟以内的视频。本发明所涉及的视频加载方法均可以应用到以上三种视频中。
目前,在优化视频播放体验的时候,基本都是在视频即将播放结束前的一段时间内,开始加载下一个视频的开头部分,以达到播放下一个视频时快速起播的效果,或者从播放器层面,在不进行预加载的情况下,优化播放器的各个网络环节,例如去掉IPv6的连接处理,节省网络连接的准备时间,或者创建多个播放器实例,减少视频切换时创建播放器实例产生的耗时。
以上所述的方法,是业界通用的标准流程。预加载的时机固定,如果用户中途切换视频,就无法触发预加载效果;优化播放器连接环节节省的时间非常有限,大约只能节省十几毫秒,如果创建多个播放器实例,播放器的资源管理也很难处理,在视频频繁切换的情况下很容易造成内存泄漏。
基于此,本发明实施例提供一种视频加载方法及装置,首先,根据正在播放的视频已缓存的数据可播放的时长判断视频当前所处的播放状态,其次通过计时器周期性读取该播放状态,当播放状态为紧急状态时,全速下载当前播放视频的数据,当所述播放状态为非紧急状态时,启动预加载任务;这样既能够保证良好的视频观看体验,也能够避免带宽的过度消耗,从而节省宽带费用。
本发明的主要思想为通过视频播放时对应的网速来确定当前所处的播放状态,根据不同的播放状态设置不同的视频下载策略,在紧急状态时进行全速下载当前播放视频的数据,非紧急状态时启动预加载任务。以下将结合附图1-9对本发明实施的技术内容进行详细说明,具体可以参考下文。
如图1所示,为本发明实施例提供的一种视频加载方法的流程图,该方法包括:
101、根据视频已加载时长判断视频当前所处的播放状态。
上述的视频已加载时长为正在播放的视频已缓存的数据可播放的时长,播放状态用于指示正在播放的视频已缓存内容的多少。
作为一种优选的实现方式,可以根据视频已加载时长和设定值来确定当前所处的播放状态,如图2所示,上述的步骤101具体可以包括以下内容:
101a、当正在播放的视频已缓存的数据可播放的时长小于或等于第一设定值,则当前所处的播放状态为紧急状态。
101b、当正在播放的视频已缓存的数据可播放的时长大于或等于第二设定值,则当前所处的播放状态为非紧急状态。
上述的紧急状态为预加载时长小于或等于第一设定值,非紧急状态为所述预加载时长大于或等于第二设定值。
其中,上述的第一设定值和第二设置值可以根据实际需要进行调节,但需要满足第设定值大于第一设定值。例如,我们可以定义的紧急状态为正在播放的视频已缓存的数据可播放的时长不足2秒;非紧急状态为正在播放的视频已缓存的数据可播放的时长大于4秒。
作为一种优选的实现方式,该方法还包括:根据模拟播放器的均匀时长T2和下载时长T3确定视频已加载时长。
示例性的,上述的T2为从起播位置到当前下载位置模拟播放器均匀播放走过的时长,T3为从起播位置到当前下载位置所对应的缓存数据量与视频码率的比值。
示例性的,为了确定上述的视频已加载时长,即正在播放的视频已缓存的数据可播放的时长(以下可简称已缓冲可播放时长),需要确定视频当前的播放位置以及已经缓存到的视频位置。具体参见以下内容:
如图3所示,为本发明实施例提供的模拟播放过程中出现的时间戳的示意图,从图中可以得到:我们模拟播放器理想状态下的均匀播放,首先记录视频起播位置P0及当前的时间戳T0,每当接收到16K数据并写入内存时,记录当前文件数据下载位置P1,Size=P1-P0,即为从起播位置缓存的数据量,记录当前时间戳T1,T2=T1-T0即为模拟播放器均匀播放走过的时长;为了粗略估算Size对应的可播放时长,我们使用视频码率来计算,T3=Size/biterate,则已缓冲可播放时长可估算为T=T3-T2,将T值与上述的第一设定值和第二设定值进行比较,即可实时确定当前时间下,当前视频处于的播放状态。
102、通过计时器周期性读取播放状态。
示例性的,需要在主线程上,设定间隔(比如1秒)去检测播放状态,需要周期性的去读取该播放状态,以便于后期执行不同的任务。
103、当播放状态为紧急状态时,全速下载当前播放视频的数据;当播放状态为非紧急状态时,启动预加载任务。
示例性的,在紧急状态时,停止所有预加载操作,全速下载当前正在播放视频的数据;在非紧急状态时,启动预加载任务,可按照一定顺序对即将播放的视频进行预加载。
如图4所示,为本发明实施例提供的播放列表示意图。当处于非紧急状态时,通过按照顺序预加载当前播放视频的上方一个以及下方的视频,当用户在播放附近视频时,由于视频数据已经下载到本地,可以立即进行播放,达到答复提升起播速度的效果。
作为一种优选的实施方式,上述的步骤103中的启动预加载任务包括:103a、确定预加载任务的预加载数据,预加载数据包括视频头文件和视频内容数据;103b、根据视频头文件和视频内容数据确定预加载任务的加载量。
作为一种优选的实施方式,上述的步骤103b包括以下内容:通过数据拟合视频头大小和视频长度的关系曲线,得到比例系数k;以及至少部分的根据比例系数K和视频内容数据确定预加载任务的加载量。
示例性的,由于用户在seek时需要MP4头中的关键帧索引数据,所以预加载的数据中必须包含MP4头,由于MP4头的大小和视频长度呈正相关关系,所以我们可用通过统计一定量MP4文件时长与MP4头大小的关系,确定一个固定的比例系数k,通过k*duration的方式估算一个MP4文件的MP4头大小。此外,为了达到立即起播的效果,需要下载部分视频内容数据,这里我们可以预加载一定阈值的(预加载1秒)的数据量,这个数据量可以用bitrate*1来进行估算,因此,预加载的数据量可以为:k*duration+bitrate*1。
示例性的,这里是一个视频需要预加载的数据量:系数*文件播放时长+视频码率*1,在实际操作中需要预加载至少两个相邻视频(正在播放的上一个视频和下一个视频)的视频数据,从而方便用户在进行上下浏览时,能够流畅的播放视频内容。
在上文描述的基础上,为了进一步的避免带宽的浪费以及节省宽带费用,本发明实施例通过进行数据下载控制来节省CDN带宽,上述的方法还包括:104、当播放状态为非紧急状态时,根据视频分片的实际下载速度和预期速度确定是否进入限速模式。
示例性的,如图2所示,上述的步骤104可以包括以下内容:104a、根据视频分片的实际下载速度和预期速度确定下载状态,下载状态用于表示下载速度的快慢;104b、根据下载状态确定是否进入限速模式。
示例性的,上述的步骤104a可以包括以下内容:当实际下载速度大于期望速度,下载状态为快速下载;当实际下载速度小于或等于期望速度,下载状态为慢速下载。
示例性的,上述的步骤104b可以包括以下内容:当下载状态为快速下载时,且计时器达到计时周期时,若当前时间大于或等于预期时间,则发送下一个视频分片请求;若当前时间小于预期时间,则该计时周期内不进行操作;当下载状态为慢速下载时,则发送下一个视频分片请求。其中,预期时间是一个视频分片通过预期速度下载所花费的时间。
基于以上限速的实现方式,以下将详细陈述具体的限速实现过程及在该过程中涉及的测试情况,具体内容如下:
经过前面的经过前面的设计,我们可以在每个视频分片下载完毕后触发对应的策略。其限速的原则为:不对每一个视频分片的下载速度进行限制,而是限制分片请求的时间间隔,从而从平均值上对速度进行控制。
从单个用户的维度来看,单个视频分片请求速度峰值不会有变化,但是两个视频分片请求之间会存在速度为0的区间,从一个时间段上来说,平均速度是下降的。从所有用户的维度来看,因为多了大量速度为0的区间,所以总体的带宽峰值会降低。
经过测试,当数据下载速度为视频码率的1.2-1.5倍时,视频可以保证流畅播放不卡顿,基于此,我们的策略为:只下载保证视频流畅播放的必要数据量。由于我们将视频数据下载细化为视频分片的下载,因此我们可以对数据下载进行更为精细化的配置。
具体可以通过计时器来控制数据下载:在正常下载的情况下,每下载完一个数据分片就会自动触发下一个视频分片的下载任务(此时跳过已下载片段),即按顺序连续下载视频分片;在限速的情况下,暂停数据视频分片的连续下载,改为通过计时器触发下载过程。即通过计时器控制每一个视频分片请求的发送频率,从总体上进行降速。
可选的,对于已经下载的数据不再次进行下载,具体如下:当一个视频文件的视频分段已经保存到磁盘文件,在此播放时就不需要进行重复下载,由于文件组织形式为文件片段,因此相较于缓存整个文件,具有更小的力度,对数据下载的控制更为精确。
如图5所示,为本发明实施例提供的在非紧急情况下进行限速的方法流程图。下面将结合图5和以下的具体例子进行说明该方法流程图的主要内容。具体如下:
例如,当一个视频分片下载结束时,判断下一个视频分片请求是直接发出,还是等待计时器来触发,先定义一个预期速度Ve,用来表示我们期望的视频下载速度,这个速度下,视频播放不会卡顿且速度不会过大,假设为1.3倍视频码率。当一个视频分片下载结束时,我们知道视频分片请求发出时间T1,分片下载结束时间T2,分片大小为S,因此该分片的下载速度为V=S/(T2-T1)。视频分片实际下载速度V和Ve进行比较:当V>Ve时,下载速度过快,此时需要进行限速,计算该分片通过Ve速度进行下载时,应该在什么时间下载完,记这个时间为Te;当计时器到达计时周期时,判断当前时间T和Te的大小,如果T>=Te,则发送下一分片的请求;如果T<Te,则这一计时周期不做任何操作。当V<=Ve时,下载速度过慢,此时直接发送下一分片的请求。
当播放状态为非紧急状态时,根据视频分片的实际下载速度和预期速度确定是否进入限速模式,这样能够在保证视频播放流畅的情况下,进一步的降低下载速度,降低带宽使用。
进一步的,用户在观看过程中会频繁seek,在seek后需要从当前位置进行数据下载,多次seek后或者用户在进行拖动播放时会在MP4文件中会产生文件空洞,具体的文件空洞内容可以参见图5。
如图6所示,为本发明实施例提供的存在文件空洞的MP4文件的示意图。通常情况下,存在文件空洞的MP4文件中会出现文件大小不固定的情况,即对应图6中,c对应的已下载的文件大小明显大于其他a、b、d对应的已下载或未下载的文件大小,a-d对应的文件大小不相同也不固定。
为了解决seek后出现的文件空洞问题,本发明实施例提供的方法还包括:管理文件碎片的步骤,具体内容如下:
在存在文件空洞的情况下,文件很难组织(文件大小不固定,没法存储),需要用复杂的数据结构来描述这个文件。我们采用的方式为:以预加载数据为单位,将整个文件分为多段(假设预加载数据为300kB),具体的数据参见图7。
如图7所示,为本发明实施例提供的数据格式结构示意图。这种情况下,除了最后一段文件片段,前面的文件片段长度完全相同,即对应的图7中的f-j对应的文件片段大小完全相同,均为300K,并为每一个文件片段设置一个标志来标识是否已经下载过,当seek或正常播放到一个文件片段时,判断是否已经下载,已经下载的数据直接从磁盘文件中读取,未下载的文件片段则发起HTTP range请求进行下载,每个range请求只下载一个文件片段,每个文件片段从物理上保存为不同的文件,在这种情况下,每个片段文件并不是一个完整的MP4文件,是不可以直接进行播放的。
当下载的数据需要保存到本地时,如果播放进度已经播放到了当前片段,会存在边读边写的问题,我们通过设计两级缓存的方式达到读写分离的效果。
如图8所示,为本发明实施例提供的一种视频文件读写的示意图。我们设置下载缓冲区中数据,每收到16kB数据检测一次,并同时写入内存与磁盘文件,并将下载线程和写文件线程进行分离,下载线程将数据写入内存,写文件线程通过异步任务的方式将数据写到磁盘文件中,当文件写入完毕时置下载状态为完成,如果下载状态为未完成,则播放器读取数据时从内存中读取,避免文件同时进行数据读写产生问题。
下面将基于图1-2对应的视频加载方法的实施例中的相关描述对本发明实施例提供的一种视频加载置进行介绍。以下实施例中与上述实施例相关的技术术语、概念等的说明可以参照上述的实施例。
如图9所示,为本发明实施例提供的一种视频加载装置的结构示意图。该装置9包括:判断模块901、读取模块902、下载模块903以及启动模块904,其中:
判断模块901,被配置为根据视频已加载时长判断视频当前所处的播放状态,视频已加载时长为正在播放的视频已缓存的数据可播放的时长;读取模块902,被配置为通过计时器周期性读取播放状态;下载模块903,当播放状态为紧急状态时,被配置为全速下载当前播放视频的数据;启动模块904,当播放状态为非紧急状态时,被配置为启动预加载任务。
作为一种优选的实现方式,上述的判断模块901具体被配置为:当正在播放的视频已缓存的数据可播放的时长小于或等于第一设定值,则当前所处的播放状态为紧急状态;当正在播放的视频已缓存的数据可播放的时长大于或等于第二设定值,则当前所处的播放状态为非紧急状态。
上述的紧急状态为预加载时长小于或等于第一设定值,非紧急状态为预加载时长大于或等于第二设定值,第二设定值大于第一设定值。
其中,上述的第一设定值和第二设置值可以根据实际需要进行调节,但需要满足第设定值大于第一设定值。例如,我们可以定义的紧急状态为正在播放的视频已缓存的数据可播放的时长不足2秒;非紧急状态为正在播放的视频已缓存的数据可播放的时长大于4秒。
作为一种可选的实现方式,启动模块904被具体配置为:按照视频列表,通过顺序预加载当前播放视频的上方视频和下方视频。其中,视频列表的详细内容可以参照图4的内容。
作为一种优选的实现方式,启动模块904包括第一确定模块904a和第二确定模块904b,第一确定模块904a被配置为确定预加载任务的预加载数据,预加载数据包括视频头文件和视频内容数据;第二确定模块904b被配置为根据视频头文件和视频内容数据确定预加载任务的加载量。
作为一种优选的实现方式,第二确定模块904b具体被配置为:通过数据拟合视频头大小和视频长度的关系曲线,得到比例系数k;至少部分的根据比例系数K和视频内容数据确定预加载任务的加载量。
作为一种优选的实现方式,为了确定视频已加载时长,上述的装置8还包括:第三确定模块905,被配置为根据模拟播放器的均匀时长T2和下载时长T3确定视频已加载时长。
示例性的,上述的T2为从起播位置到当前下载位置模拟播放器均匀播放走过的时长,T3为从起播位置到当前下载位置所对应的缓存数据量与视频码率的比值。
作为一种优选的实现方式,为了进一步的避免带宽的浪费以及节省宽带费用,装置9还包括:第四确定模块906,当播放状态为非紧急状态时,被配置为根据视频分片的实际下载速度和预期速度确定是否进入限速模式。
作为一种可选的实现方式,第四确定模块906具体被配置为:根据视频分片的实际下载速度和预期速度确定下载状态,下载状态用于表示下载速度的快慢;根据下载状态确定是否进入限速模式。
作为一种可选的实现方式,第四确定模块906具体还被配置为:当实际下载速度大于期望速度,下载状态为快速下载;当实际下载速度小于或等于期望速度,下载状态为慢速下载。
作为一种可选的实现方式,第四确定模块906具体还被配置为:当下载状态为快速下载时,且计时器达到计时周期时,若当前时间大于或等于预期时间,则发送下一个视频分片请求;若当前时间小于预期时间,则该计时周期内不进行操作;当下载状态为慢速下载时,则发送下一个视频分片请求;其中,预期时间是一个视频分片通过预期速度下载所花费的时间。
作为一种可选的实现方式,为了解决seek后出现的文件空洞问题,装置9还包括:管理模块907,而被配置为管理文件碎片,管理模块907具体被配置为:将整个文件按照固定长度划分,得到多个固定长度的分片,每个分片设置标志位;当搜索或者播放到一个片段时,根据标志位判断分片是否被下载;当分片已被下载,则从磁盘文件读取分片的数据;当分片未被下载,则发起分片下载请求。
作为一种可选的实现方式,当下载的数据需要保存到本地时,如果播放进度已经播放到了当前片段,会存在边读边写的问题。装置9还包括:写入模块908,被配置为分别采用不同的线程将缓冲区的视频文件同时写入内存和磁盘文件;设置模块909,被配置为当视频文件写入完毕时,将下载状态设置为完成状态;第二读取模块910,被配置为若下载状态为未完成状态,则从内存中读取视频数据。
通过设计两级缓存的方式达到读写分离的效果,同时写入内存与磁盘文件,并将下载线程和写文件线程进行分离,下载线程将数据写入内存,写文件线程通过异步任务的方式将数据写到磁盘文件中,如果下载状态为未完成,则播放器读取数据时从内存中读取,避免文件同时进行数据读写产生问题。
如图10所示,为本发明实施例提供的一种电子设备的结构示意图,该电子设备1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行如图1-2所示的各种适当的动作和处理。在RAM 1003中,还存储有电子设备1000操作所需的各种程序和数据。CPU1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
本发明实施例提供一种计算机存储介质,包括计算机指令,当所述计算机指令在计算机上运行时,使得所述计算机执行如上所述的方法流程。示例性的,计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘,硬盘、磁带)、光介质(例如,DVD)或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种视频加载方法,其特征在于,所述方法包括:
根据视频已加载时长判断视频当前所处的播放状态,所述视频已加载时长为正在播放的视频已缓存的数据可播放的时长;
通过计时器周期性读取所述播放状态;
当所述播放状态为紧急状态时,全速下载当前播放视频的数据;
当所述播放状态为非紧急状态时,启动预加载任务;
其中,所述紧急状态为所述已加载时长小于或等于第一设定值,所述非紧急状态为所已加载时长大于或等于第二设定值,所述第二设定值大于所述第一设定值。
2.根据权利要求1所述的方法,其特征在于,所述启动预加载任务,包括:
按照视频列表,通过顺序预加载当前播放视频的上方视频和下方视频。
3.根据权利要求1所述的方法,其特征在于,所述启动预加载任务包括:
确定所述预加载任务的预加载数据,所述预加载数据包括视频头文件和视频内容数据;
根据所述视频头文件和所述视频内容数据确定所述预加载任务的加载量。
4.根据权利要求3所述的方法,其特征在于,所述根据所述视频头文件和所述视频内容数据确定所述预加载任务的加载量包括:
通过数据拟合视频头大小和视频长度的关系曲线,得到比例系数k;
至少部分的根据所述比例系数K和所述视频内容数据确定所述预加载任务的加载量。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据模拟播放器的均匀时长T2和下载时长T3确定所述视频已加载时长。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述播放状态为非紧急状态时,根据视频分片的实际下载速度和预期速度确定是否进入限速模式。
7.根据权利要求6所述的方法,其特征在于,所述根据视频分片的实际下载速度和预期速度确定是否进入限速模式,包括:
根据所述视频分片的实际下载速度和所述预期速度确定下载状态,所述下载状态用于表示下载速度的快慢;
根据所述下载状态确定是否进入限速模式。
8.根据权利要求7所述的方法,其特征在于,所述根据所述视频分片的实际下载速度和所述预期速度确定下载状态,包括:
当所述实际下载速度大于期望速度,所述下载状态为快速下载;
当所述实际下载速度小于或等于期望速度,所述下载状态为慢速下载。
9.根据权利要求7所述的方法,其特征在于,所述根据所述下载状态确定是否进入限速模式,包括:
当所述下载状态为快速下载时,且计时器达到计时周期时,若当前时间大于或等于预期时间,则发送下一个视频分片请求;若当前时间小于预期时间,则该计时周期内不进行操作;
当所述下载状态为慢速下载时,则发送下一个视频分片请求;
其中,所述预期时间是一个视频分片通过预期速度下载所花费的时间。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述方法还包括:管理文件碎片,所述管理文件碎片包括:
将整个文件按照固定长度划分,得到多个固定长度的分片,每个分片设置标志位;
当搜索或者播放到一个片段时,根据所述标志位判断所述分片是否被下载;
当所述分片已被下载,则从磁盘文件读取所述分片的数据;
当所述分片未被下载,则发起分片下载请求。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
分别采用不同的线程将缓冲区的视频文件同时写入内存和磁盘文件;
当视频文件写入完毕时,将下载状态设置为完成状态;
若下载状态为未完成状态,则从内存中读取视频数据。
12.一种视频加载装置,其特征在于,所述装置包括:
判断模块,被配置为根据视频已加载时长判断视频当前所处的播放状态,所述视频已加载时长为正在播放的视频已缓存的数据可播放的时长;
读取模块,被配置为通过计时器周期性读取所述播放状态;
下载模块,当所述播放状态为紧急状态时,被配置为全速下载当前播放视频的数据;
启动模块,当所述播放状态为非紧急状态时,被配置为启动预加载任务;
其中,所述紧急状态为所述预加载时长小于或等于第一设定值,所述非紧急状态为所述预加载时长大于或等于第二设定值,所述第二设定值大于所述第一设定值。
13.一种电子设备,包括:存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-11任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有可执行指令,该指令被处理器执行时使处理器执行如权利要求1-11任一项所述的方法。
CN202110005271.6A 2021-01-05 2021-01-05 一种视频加载方法及装置 Active CN112333476B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110005271.6A CN112333476B (zh) 2021-01-05 2021-01-05 一种视频加载方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110005271.6A CN112333476B (zh) 2021-01-05 2021-01-05 一种视频加载方法及装置

Publications (2)

Publication Number Publication Date
CN112333476A CN112333476A (zh) 2021-02-05
CN112333476B true CN112333476B (zh) 2021-05-07

Family

ID=74302186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110005271.6A Active CN112333476B (zh) 2021-01-05 2021-01-05 一种视频加载方法及装置

Country Status (1)

Country Link
CN (1) CN112333476B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114915849B (zh) * 2021-02-10 2023-06-13 北京字跳网络技术有限公司 视频的预加载方法、装置、设备和介质
CN113286189A (zh) * 2021-04-23 2021-08-20 北京奇艺世纪科技有限公司 视频播放方法、装置、服务器及存储介质
CN113810773B (zh) * 2021-09-17 2024-03-01 北京百度网讯科技有限公司 视频下载方法及装置、电子设备和存储介质
CN113891170B (zh) * 2021-11-23 2024-05-03 维沃移动通信有限公司 下载方法、装置、电子设备及存储介质
CN115065859B (zh) * 2022-06-07 2024-05-07 北京达佳互联信息技术有限公司 视频数据获取方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103957431A (zh) * 2014-04-30 2014-07-30 深圳创维数字技术股份有限公司 一种流媒体传输控制方法及流媒体服务器
CN105430475A (zh) * 2015-11-04 2016-03-23 北京奇虎科技有限公司 视频数据的缓冲方法及装置
CN106937163A (zh) * 2017-03-21 2017-07-07 微鲸科技有限公司 多媒体预加载方法和装置
CN107333143A (zh) * 2017-06-26 2017-11-07 南京邮电大学 5g多接入并发传输控制系统及方法
CN110996134A (zh) * 2019-12-23 2020-04-10 腾讯科技(深圳)有限公司 视频播放方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8600220B2 (en) * 2012-04-02 2013-12-03 JBF Interlude 2009 Ltd—Israel Systems and methods for loading more than one video content at a time

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103957431A (zh) * 2014-04-30 2014-07-30 深圳创维数字技术股份有限公司 一种流媒体传输控制方法及流媒体服务器
CN105430475A (zh) * 2015-11-04 2016-03-23 北京奇虎科技有限公司 视频数据的缓冲方法及装置
CN106937163A (zh) * 2017-03-21 2017-07-07 微鲸科技有限公司 多媒体预加载方法和装置
CN107333143A (zh) * 2017-06-26 2017-11-07 南京邮电大学 5g多接入并发传输控制系统及方法
CN110996134A (zh) * 2019-12-23 2020-04-10 腾讯科技(深圳)有限公司 视频播放方法、装置及存储介质

Also Published As

Publication number Publication date
CN112333476A (zh) 2021-02-05

Similar Documents

Publication Publication Date Title
CN112333476B (zh) 一种视频加载方法及装置
US10313761B2 (en) Media playback across multiple devices
KR100690804B1 (ko) 휴대단말기의 메모리 정리 방법
US20140298395A1 (en) Methods and systems for playing video on multiple terminals
US7529892B2 (en) File readahead method with the use of access pattern information attached to metadata
US10599353B2 (en) Techniques for managing storage space allocation within a storage device
US11182425B2 (en) Audio processing method, server, user equipment, and system
CN109698979B (zh) 一种视频播放的方法、装置及电子设备
CN111107438B (zh) 一种视频加载方法、装置及电子设备
KR20130020634A (ko) 네트워크 성능에 기초한 네트워크 기반 디지털 데이터 저장소로부터의 다운로드들의 관리
CN112051970A (zh) 混合驱动器的脏数据管理
CN113315810B (zh) 一种在线音频播放方法及设备
CN106791930B (zh) 一种视频处理方法和装置
US11163684B1 (en) Systems and methods that predictively read ahead different amounts of data for different content stored in a multi-client storage system
CN112672186A (zh) 视频预加载的方法和装置
CN111327956A (zh) 一种视频播放方法、装置及电子设备
CN106126335A (zh) 终端设备的媒体扫描方法及终端设备
CN104937891A (zh) 用于在电子设备中控制业务的方法和装置
He et al. LiveClip: towards intelligent mobile short-form video streaming with deep reinforcement learning
CN104601535B (zh) 视频处理方法和系统
CN104778172B (zh) 网页信息的预取处理方法、装置及对应的网页浏览装置
CN111045824A (zh) 应用控制方法、装置、电子设备以及计算机可读介质
CN113672748A (zh) 多媒体信息播放方法及装置
CN104239547A (zh) 浏览器页面资源的处理方法和装置
CN112380088A (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