CN111327941B - 一种离线视频播放方法、装置、设备及介质 - Google Patents

一种离线视频播放方法、装置、设备及介质 Download PDF

Info

Publication number
CN111327941B
CN111327941B CN202010162807.0A CN202010162807A CN111327941B CN 111327941 B CN111327941 B CN 111327941B CN 202010162807 A CN202010162807 A CN 202010162807A CN 111327941 B CN111327941 B CN 111327941B
Authority
CN
China
Prior art keywords
video
data
cache
offline
playing
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
CN202010162807.0A
Other languages
English (en)
Other versions
CN111327941A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010162807.0A priority Critical patent/CN111327941B/zh
Publication of CN111327941A publication Critical patent/CN111327941A/zh
Application granted granted Critical
Publication of CN111327941B publication Critical patent/CN111327941B/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/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
    • H04N21/4334Recording operations
    • 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
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • 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/4402Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing 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 reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4
    • 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

Landscapes

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

Abstract

本申请提供一种离线视频播放方法,可用于人工智能领域,包括:获取存储在本地的第一数据,第一数据为记录有第一视频的第一部分的信息数据;根据第一数据获取第二数据,其中,第二数据为视频播放器播放的数据格式;按照第二数据的数据格式,通过视频播放器对第一视频中第一部分的信息数据进行播放。本申请还一种装置、设备及介质,通过获取本地缓存中离线视频的部分数据,之后对该部分数据进行转格式得到播放格式的视频数据,最后对该视频数据进行播放。实现离线视频的切片播放,每次仅从本地缓存中获取部分数据,不需将整个视频资源从磁盘中读取到内存中缓冲,提升了读取稳定性,能适用于不同类型视频播放软件实现离线视频的播放。

Description

一种离线视频播放方法、装置、设备及介质
技术领域
本发明涉及电子技术领域,更具体地说,涉及一种离线视频播放方法、装置、设备及介质。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。在软件层面上,直播软件可以在智能终端(手机、平板电脑)、电脑等不同的终端运行,为用户提供多元娱乐的直播服务。直播软件除了为用户提供视频直播以外,还可以将直播视频缓存在本地,供未能实时观看直播的用户回看直播内容。
现有技术中,由于缓存在本地的视频资源都会比较大,一下子将整个视频资源从磁盘中读取到内存中缓冲起来是不现实的,因此,不同的直播软件开发商针对自身的软件情况设计了不同的离线视频播放方案,由于这些方案都是根据自身软件情况订制的,并不具备通用性,造成了重复开发。
发明内容
有鉴于此,为解决上述问题,本发明提供的技术方案如下:
一种离线视频播放方法,包括:
获取存储在本地的第一数据,该第一数据为记录有第一视频的第一部分的信息数据;
根据该第一数据获取第二数据,其中,该第二数据为该视频播放器播放的数据格式;
按照该第二数据的数据格式,通过该视频播放器对该第一视频中第一部分的信息数据进行播放。
一种离线视频播放装置,包括:
第一获取单元,该第一获取单元用于获取存储在本地的第一数据,该第一数据为记录有第一视频的第一部分的信息数据;
第二获取单元,该第二获取单元用于根据该第一获取单元获取的该第一数据获取第二数据,其中,该第二数据为该视频播放器播放的数据格式;
播放单元,该播放单元用于按照该第二数据的数据格式,通过该视频播放器对该第一视频中第一部分的信息数据进行播放。
可选地,该第一数据为第一数据流,则该第二获取单元,还用于:
读取该第一数据流所记录的视频信息;
根据该视频信息对该第一数据流进行封装以得到该第二数据,该第二数据为视频流。
可选地,该第二获取单元,还用于:
读取该第一数据流所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息;
根据该第一数据流所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种将该第一数据流封装为具有视频播放格式的视频流,以得到该第二数据。
可选地,该装置还包括执行单元,该执行单元用于:
创建第一媒体流;
将该第一数据加入该第一媒体流中;
该第二获取单元还用于:
在该第一媒体流中根据该第一数据获取该第二数据;
该播放单元还用于:
通过该视频播放器播放该第一媒体流中的该第二数据。
可选地,该装置还包括:
第三获取单元,该第三获取单元用于获取离线缓存请求,该离线缓存请求用于请求缓存该第一视频;
第一控制单元,该第一控制单元用于根据该第三获取单元获取的该离线缓存请求通过服务线程将该第一视频下载到本地缓存中;
第二控制单元,该第二控制单元用于当该第一控制单元下载完成时,控制该服务线程向主线程发送第一通知消息,该第一通知消息用于通知该第一视频缓存完毕;
第三控制单元,该第三控制单元用于控制该服务线程向数据库系统发送该第一视频的缓存信息。
可选地,该第一控制单元还用于:
控制该服务线程获取该第一视频的下载信息;
控制该服务线程向该主线程发送该第一视频的下载信息。
可选地,该下载信息包括下载进度,则该第一控制单元还用于:
控制该服务线程根据已下载该第一视频的大小a除以该第一视频的总大小b得到该下载进度n=a/b。
可选地,该下载信息包括下载速度,则该第一控制单元还用于:
控制该服务线程根据已下载该第一视频的大小a除以两次获取下载进度之间的时间间隙t得到该下载速度v=a/t。
可选地,该装置还包括:
第四获取单元,该第四获取单元用于获取删除请求,该删除请求用于请求删除缓存在本地的该第一视频;
第四控制单元,该第四控制单元用于根据该第四获取单元获取的该删除请求控制该服务线程将本地缓存中的该第一视频删除;
第五控制单元,该第五控制单元用于控制该服务线程向该主线程发送第二通知消息,该第二通知消息用于通知该第一视频已被删除;
第六控制单元,该第六控制单元用于控制该服务线程将数据库系统中该第一视频的缓存信息删除。
一种计算机设备该计算机设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,该存储器中存储有程序指令;该交互装置用于获取用户输入的操作指令;该处理器用于执行存储器中存储的程序指令,执行如上述任意一项该的方法。
一种计算机可读存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行如上述任意一项该的方法。
本实施例中,所提供的离线视频播放方法包括:获取存储在本地的第一数据,第一数据为记录有第一视频的第一部分的信息数据;根据第一数据获取第二数据,其中,第二数据为视频播放器播放的数据格式;在视频播放器中播放第二数据,以实现第一视频中第一部分的播放。通过获取本地缓存中离线视频的部分数据,之后对该部分数据进行转格式从而得到播放格式的视频数据,最后对该视频数据进行播放。从而实现离线视频的切片播放,每次仅从本地缓存中获取部分数据,不需将整个视频资源从磁盘中读取到内存中缓冲,提升了读取的稳定性,能够适用于各种不同类型视频播放软件,实现离线视频的播放。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的离线视频播放方法的一个实施例的示意图;
图2为本申请实施例所提供的离线视频播放方法的另一个实施例的示意图;
图3为本申请实施例所提供的离线视频播放方法的MP4的播放格式的示意图;
图4为本申请实施例所提供的离线视频播放方法的另一个实施例的示意图;
图5为本申请实施例所提供的离线视频播放方法的另一个实施例的示意图;
图6为本申请实施例所提供的离线视频播放方法的一种具体实现方式的示意图;
图7为本申请实施例所提供的离线视频播放方法的另一个实施例的示意图;
图8为本申请实施例所提供的离线视频播放方法的使用场景图;
图9为本申请实施例所提供的离线视频播放方法的另一使用场景图;
图10为本申请实施例所提供的离线视频播放方法的另一使用场景图;
图11为本申请实施例所提供的离线视频播放方法的另一使用场景图;
图12为本申请实施例所提供的离线视频播放方法的另一使用场景图;
图13为本申请实施例所提供的离线视频播放方法的另一使用场景图;
图14为本申请实施例所提供的离线视频播放方法的另一使用场景图;
图15为本申请实施例所提供的计算机设备的示意图;
图16为本申请实施例所提供的离线视频播放装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。在软件层面上,直播软件可以在智能终端(手机、平板电脑)、电脑等不同的终端运行,为用户提供多元娱乐的直播服务。直播软件除了为用户提供视频直播以外,还可以将直播视频缓存在本地,供未能实时观看直播的用户回看直播内容。
当前,由于缓存在本地的视频资源都会比较大,一下子将整个视频资源从磁盘中读取到内存中缓冲起来是不现实的,因此,不同的直播软件开发商针对自身的软件情况设计了不同的离线视频播放方案,由于这些方案都是根据自身软件情况订制的,并不具备通用性,造成了重复开发。
为了解决上述问题,本申请实施例提供一种离线视频播放方法,能够通过对存储在本地的视频格式进行分段获取并转化为播放格式,实现离线视频的分段播放,从而使得离线视频播放的方案具有更高的通用性,能够在不同段软件平台中使用。
需要说明的是,本申请实施例所提供的方法可应用于各种不同的场景中,例如通过PC计算机(Personal Computer)登陆的直播软件或浏览器直播界面,或者通过智能终端(手机、平板电脑)的直播app或浏览器直播界面中。对此本申请实施例并不进行限定,为便于理解,本申请实施例的具体实施方式主要以智能终端中的直播app实现方式为例进行说明,但不构成对本申请使用场景的限定。
可选地,本申请实施例所提供的离线视频播放方法还可以应用于云计算中,云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,例如本申请实施例中,通过对存储在云端的视频格式进行分段获取并转化为播放格式,实现离线视频的分段播放,从而使得离线视频播放的方案具有更高的通用性。
进一步地,本申请实施例所提供的离线视频播放方法还可以应用于区块链技术中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
其中,平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。例如,通过区块链来对视频进行存储,之后对存储在区块链中的视频格式进行分段获取并转化为播放格式,实现离线视频的分段播放。
以下结合附图,对本申请实施例所提供的离线视频播放方法进行详细说明。
请参阅图1,如图1所示,本申请实施例所提供的离线视频播放方法的实施例一包括以下步骤。
101、获取存储在本地的第一数据。
本实施例中,本方法可以由终端来执行,该第一数据可以是该终端通过离线缓存下载到本地的视频,例如,在直播软件直播过程中,终端通过离线缓存下载到本地的直播画面视频,记为第一视频,由于第一视频资源所占用的内存较大,将整个第一视频读取到内存中缓冲是不现实的,因此,每次仅从第一视频中提取部分第一数据,该第一数据记录有第一视频的第一部分的信息数据,该第一数据的长度可根据实际需要来调节,例如,第一数据的长度为缓存空间能够处理的最大数据长度。
102、根据第一数据获取第二数据。
本实施例中,第一视频保存在本地缓存中的格式和播放格式是不同的,例如,第一数据为一段存放在ArrayBuffer缓存区中的二进制流,其中,ArrayBuffer是用来表示通用的、固定长度的原始二进制数据缓冲区,而第二数据为视频播放器播放的数据格式,因此,需要对第一数据进行转化得到第二数据,从而得到播放模式的数据。
103、按照第二数据的数据格式,通过视频播放器对第一视频中第一部分的信息数据进行播放。
本实施例中,第二数据为通过定义视频的一系列处理标准所得到的视频格式数据,视频播放器基于该数据格式对第二数据进行读取,从而实现了第二数据所记载的视频内容的播放,实现了第一视频中第一部分的播放。
进一步地,当第一部分播放完毕,需要紧接着播放第一视频的第二部分的内容时,重复上述步骤101至103,获取存储在本地的第二数据,该第二数据记录有第一视频的第二部分的信息数据,该第二部分为第一视频中紧随着第一部分播放的内容。循环以上步骤,即可完成第一视频中每一部分内容的顺畅播放。
本实施例中,所提供的离线视频播放方法包括:获取存储在本地的第一数据,第一数据为记录有第一视频的第一部分的信息数据;根据第一数据获取第二数据,其中,第二数据为视频播放器播放的数据格式;在视频播放器中播放第二数据,以实现第一视频中第一部分的播放。通过获取本地缓存中离线视频的部分数据,之后对该部分数据进行转格式从而得到播放格式的视频数据,最后对该视频数据进行播放。从而实现离线视频的切片播放,每次仅从本地缓存中获取部分数据,不需将整个视频资源从磁盘中读取到内存中缓冲,提升了读取的稳定性,能够适用于各种不同类型视频播放软件,实现离线视频的播放。
需要说明的是,由于视频播放器播放的数据格式一般通过一定的协议规定,因此,在通过第一数据获取第二数据时,需要根据数据格式对第一数据进行封装,从而得到播放格式的第二数据,为便于理解,以下对封装的具体方案进行详细说明。
请参阅图2,如图2所示,本申请实施例所提供的离线视频播放方法的实施例二包括以下步骤。
201、获取存储在本地的第一数据。
本实施例中,第一数据为第一数据流,例如存储在本地ArrayBuffer缓存区中的二进制流。
202、读取第一数据流所记录的视频信息。
本实施例中,第一数据流所记录的视频信息可以包括第一数据流所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息,根据这些信息,就可以读取到第一数据流所记录的第一视频第一部分的情况,其中,视频关键帧指视频中角色或者物体运动或变化中的关键动作所处的那一帧。关键帧与关键帧之间的动画可以由软件来创建,叫做过渡帧或者中间帧。例如,第一关键帧中记录有一个角色A,则第一关键帧的后续帧只需要描述角色A相对于第一关键帧的动作变化即可,从而能够有效地对视频进行压缩;视频存储位置偏移量指的是第一数据流在本地缓存中的存储位置,以方便从终端的本地缓存中获取第一数据流。
203、根据视频信息对第一数据流进行封装以得到第二数据。
本实施例中,封装后所得到的第二数据为视频流,以使得视频播放软件能够根据该视频流对第二数据进行播放,从而实现视频第一部分的播放,需要说明的是,上述封装的具体实现方法,可以根据视频播放格式的具体类型来确定,例如,封装的具体实现方式可以包括:
根据第一数据流所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种将第一数据流封装为视频播放格式,以得到第二数据。
本实施例中,在得到存储在本地的第一数据流片段后,对该第一数据流进行封装,从而得到符合播放器播放格式的第二视频流。实现了对本地数据逐段获取,逐段封装的过程,克服了视频资源太大而无法一次性由硬盘读取到缓存中的问题。
进一步地,下面以视频格式为MP4格式为例,对上述封装过程的具体实现方式进行详细说明。首先请参阅图3,MP4的播放格式如图3所示,MP4文件首先会有且仅有一个ftype类型的box301作为MP4格式的标志并包含关于文件的一些信息,同时,与ftype类型的box平行的box还有moov类型的box302(Movie Box)和Mdat box303。
其中,moov302里面包含了很多个box,一般情况下moov302会紧跟着ftype301,moov302里面包含着MP4文件中的Movie Header3021、Track3022和Media3023,其中,MovieHeader3021用于表示视频的头部信息,主要记录了视频的创建时间、修改时间,推荐播放速率和推荐播放音量等信息,Track3022包含了视频中的音频信息和弹幕信息等,Media3023则进一步包含mdhd30231和stbl30232两个box,mdhd30231用于对指定的Media3023设定相关属性和内容,stbl30232内则进一步包含更多层级的box,由于此部分为公知内容,且与本申请技术方案无关,因此不再赘述。Mdat box303为裸流,即具体的媒体数据。
上述步骤203中所述的,根据视频信息对第一数据流进行封装以得到第二数据。就是将存储在ArrayBuffer缓存区中的二进制流片段,转化为MP4 box的格式,以实现播放,具体包括如下步骤。
1、从二进制流片段中解析出moov。
本实施例中,从二进制流片段中获取视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息,从而解析出moov。
2、根据moov中的关键帧信息取出视频帧、音频帧封装成moof box和mdat box。
本实施例中,将二进制流封装成moof box和mdat box之后即可得到当前切片视频的播放格式。从而实现MP4 box的封装,接下来继续读取下一段ArrayBuffer,重复上述步骤1和步骤2,直至整个视频资源读取完毕。
204、按照第二数据的数据格式,通过视频播放器对第一视频中第一部分的信息数据进行播放。
本实施例中,本步骤可参阅上述步骤103,此处不再赘述。
具体实施过程中,本申请实施例所提供所得离线视频播放步骤通过终端调用服务线程service workers和缓存Caches来实现,为便于理解,以下结合附图对此种实施方式进行详细说明,请参阅图4,如图4所示,本申请实施例所提供的离线视频播放方法的实施例三包括以下步骤。
401、终端向服务线程发送视频请求。
本实施例中,视频请求用于向service workers请求缓存在本地的视频资源,是一个注册在指定源和路径下的事件驱动worker。它采用JavaScript控制关联的页面或者网站,拦截并修改访问和资源请求,细粒度地缓存资源。同时,service workers独立于主线程,从而使得视频的缓存和获取不会阻塞主线程的工作。
402、服务线程根据视频请求向缓存发送读取缓存请求。
本实施例中,Caches为终端的逻辑存储空间,用于存放离线缓存视频,serviceworkers收到视频请求后,向Caches发送读取缓存请求,从而请求缓存在本地的视频。
403、缓存根据读取缓存请求向服务线程发送第一数据。
本实施例中,第一数据可以为一段存放在ArrayBuffer缓存区中的二进制流。
404、服务线程将第一数据发送给终端。
本实施例中,service workers将收到的第一数据发送给终端,从而实现了终端对视频资源的获取,通过上述步骤401至404可见,service workers作为服务线程,在终端和缓存之间充当了传递的作用,可以实现缓存视频的获取,同时不会影响主线程的正常工作。
405、终端创建第一媒体流。
本实施例中,媒体流是一个用于管理播放的播放控件,终端创建第一媒体流,用于对第一数据进行后续的处理。
406、终端将第一数据加入第一媒体流中。
本实施例中,终端从第一数据中解析出moov,第一数据可以为一段二进制流片段,终端从中获取视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息,从而解析出moov,之后将解析出的moov加入媒体流中,从而实现将第一数据加入第一媒体流中。
407、在第一媒体流中根据第一数据获取第二数据。
本实施例中,第一媒体流中已经有加入的moov,
本实施例中,终端根据moov中的关键帧信息取出视频帧、音频帧封装成moof box和mdat box,得到fytp和moov box,从而得到第二数据,即视频播放器的播放格式,追加到创建的第一媒体流中,为视频播放器的播放做准备。
可选地,基于上述步骤所得到的fytp和moov box,终端进一步封装关键帧到moof和mdatbox并追加到第一媒体流中。
本实施例中,根据获取到的视频关键帧进一步封装moof和mdatbox,从而得到第一视频的第一部分的完整播放信息,添加到第一媒体流中。
408、终端通过视频播放器播放第一媒体流中的第二数据所记载的视频内容。
本实施例中,当终端将封装完成后的视频片段追加到第一媒体流之后,对播放第一媒体流中的信息,从而实现了第一视频第一部分的播放。
本实施例中,当第一部分播放完毕需要播放第一视频中紧随第一部分的第二部分时,重复上述步骤401至408,对第二部分的ArrayBuffer进行处理。
需要说明的是,上述实施例一至三中,终端所获取的存储在本地缓存中的离线视频,是通过网络下载缓存在本地的,在具体实现过程中,以直播app为例,用户希望在直播过程中将直播画面缓存到本地,以便后续观看,此时,直播画面主要由终端的主线程处理,若主线程同步处理离线缓存业务,则可能会发生主线程阻塞的情况,影响用户使用的顺畅度,为了解决此问题,本申请实施例所提供的离线视频播放方法还进一步提供一种离线视频的下载方式。为便于理解,以下结合附图对此种实施方式进行详细说明。
请参阅图5,如图5所示,本申请实施例所提供的离线视频播放方法的实施例四包括以下步骤。
501、终端获取离线缓存请求。
本实施例中,离线缓存请求可以是由用户发起的,例如,用户点击终端显示界面上的UI控件,从而生成离线缓存请求。
502、终端根据离线缓存请求通过服务线程将第一视频下载到本地缓存中。
本实施例中,在步骤502之前,终端可以向服务线程发送离线缓存请求,从而使得服务线程可以根据该请求执行离线视频的下载,将下载完成的视频放入终端的本地缓存Caches中。
在下载的过程中,服务线程service workers与主线程实时通信,反馈下载信息,具体实现方式包括以下步骤。
控制服务线程获取第一视频的下载信息。
控制服务线程向主线程发送第一视频的下载信息。
本实施例中,服务线程service workers在下载第一视频的过程中实时获取下载信息,并将下载信息反馈给主线程,从而使得主线程可以向用户反馈当前下载的情况,具体而言,下载信息可以包括下载进度和下载速度,两种下载信息分别有不同的获取方法,详细说明如下。
一、下载进度的获取方法。
控制服务线程根据已下载第一视频的大小a除以第一视频的总大小b得到下载进度n=a/b。
本实施例中,服务线程service workers实时获取已下载的视频大小a,除以视频的总大小b,即可获得下载进度n=a/b,之后将该下载进度n发送给主线程,从而主线程可以在显示界面中显示下载进度n,从而使得用户可以根据显示界面中的显示,了解当前视频的下载进度。
二、下载速度的获取方法。
控制服务线程根据已下载第一视频的大小a除以两次获取下载进度之间的时间间隙t得到下载速度v=a/t。
本实施例中,服务线程service workers实时获取已下载的视频大小a,除两次获取下载进度之间的时间间隙t,即可获得下载进度v=a/t,例如,在t1时刻第一次获取下载进度,在t2时刻第二次获取下载进度,则v=a/(t2-t1),之后将该下载速度v发送给主线程,从而主线程可以在显示界面中显示下载速度v,从而使得用户可以根据显示界面中的显示,了解当前视频的下载速度。
503、当下载完成时,控制服务线程向终端中的主线程发送第一通知消息。
本实施例中,当下载完成之后,服务线程service workers向主线程发送第一通知消息,第一通知消息用于通知第一视频缓存完毕,从而主线程可以在显示界面中显示下载完成的消息,用户可以根据显示界面中的显示,了解当前视频的下载完成。
504、控制服务线程向数据库系统发送第一视频的缓存信息。
本实施例中,数据库系统可以为IndexedDB:一种用于客户端存储大量结构化数据的事务型数据库系统,服务线程service workers向IndexedDB发送第一视频的缓存信息,从而使得终端能够通过IndexedDB来查询到各个视频的缓存情况,不需要每一次都读取缓存才能获取到视频的信息。
视频下载到终端本地之后,后续的离线视频播放步骤可参阅上述实施例一至三,此处不再赘述。
本实施例中,当终端获取到用户生成的离线缓存请求时,通过服务线程serviceworkers将视频下载到本地缓存Caches中,同时,service workers向主线程发送下载信息以便用户实时了解当前下载情况,下载完成后,service workers向IndexedDB发送下载视频的缓存信息,通过上述交互,使得视频的下载不会阻塞主线程的工作,提升了工作的流程程度,同时,IndexedDB记录的视频信息可供用户进行查询,减少了缓存的读取次数。
进一步地,当离线视频下载到本地后,除了播放以外,用户还需要对缓存在终端本地离线视频进行编辑,例如删除缓存视频等,以下对此种情况进行详细说明。
请参阅图6,如图6所示,本申请实施例所提供的离线视频播放方法的实施例五包括以下步骤。
步骤601至604可参阅上述步骤501至504,此处不再赘述。
605、终端获取删除请求。
本实施例中,删除请求用于请求删除缓存在本地的第一视频,删除请求的具体获取方式可以为:终端在显示界面展示删除UI控件,当用户点击该删除UI控件时,终端获取到删除请求。
606、终端根据删除请求控制服务线程将本地缓存中的第一视频删除。
本实施例中,当终端获取到删除请求后,向服务线程service workers发送该删除请求,service workers根据删除请求向本地缓存Caches发送缓存指令,从而在Caches中删除存储在本地的第一视频。
607、控制服务线程向终端中的主线程发送第二通知消息。
本实施例中,第二通知消息用于通知第一视频已被删除,从而主线程可以通过该第二通知消息通知用户,第一视频已经根据用户发起的请求成功删除。
608、控制服务线程将数据库系统中第一视频的缓存信息删除。
本实施例中,数据库系统IndexedDB用于记录存储在本地缓存Caches中的视频信息,当第一视频在Caches中被删除时,同样也需要删除存储在IndexedDB的关于第一视频的信息,从而更新IndexedDB中所记录的内容与实际情况保持一致。
本实施例中,关于本地缓存中视频的删除,通过服务线程service workers的交互来进行,从而使得视频的编辑工作并不会阻塞主线程的工作,同时IndexedDB中记录的视频信息会随着视频编辑的变动而动态地调整,与实际情况保持同步,方便用户查询。
在实际工作过程中,本申请实施例所提供的技术方案可以是基于Webview的离线视频播放方案,因此本方案的数据处理操作可以用于PC客户端和移动客户端。具体工作过程中,按照工作的逻辑顺序,如上所述,本方案技术上主要分为三大部分:1、视频的离线缓存;2、离线视频的管理;3、离线视频的播放;这三部分组合起来构成整个视频缓存、视频管理、视频播放的闭环系统。以下结合附图,对本申请所提供方案的一种具体的实现方式进行说明。
请参阅图7,如图7所示,本申请实施例所提供的离线视频播放方法的实施例六包括以下步骤。
701、终端注册服务线程。
本实施例中,服务线程Service Worker作为用于视频离线下载的服务线程,需要实现完成注册,以便进行后续操作。
702、终端获取离线缓存请求。
本实施例中,离线缓存请求可以是由用户发起的,例如,用户点击终端显示界面上的UI控件,从而生成离线缓存请求。
703、终端根据离线缓存请求在数据库系统中查询是否有本地缓存视频。
本实施例中,若在数据库系统IndexedDB中查询到有本地缓存视频,说明该视频已经被离线缓存到本地,此时只需要直接执行下述步骤706播放该视频即可,若在IndexedDB中查询不到对应视频,说明该视频尚未缓存到本地,此时需要执行后续步骤。
704、终端通过服务线程执行离线视频缓存。
本实施例中,终端通过Service Worker执行离线视频缓存的具体实现方式可参阅上述步骤502至504,此处不再赘述。
需要说明的是,Service Worker在执行离线视频缓存的过程中,需要与主线程之间进行交互,从而使得主线程知晓当前下载的情况,主线程与服务线程Service Worker之间的主要信号交互如下。
当终端在IndexedDB中查询不到所请求的视频时,终端主线程通过postMessage通知service worker进程开始下载视频。在视频缓存阶段,主线程和service worker进程通过定义三种事件来进行通信,分别是“offline”、“offline_progress”、“offline_success”,这三种事件的具体定义如下。
1、事件类型“offline”表示需要加载视频,service worker通过onMessage事件回调接收到“offline”事件,然后通过BackgroundFetchManager模块在后台启动下载视频,由于service worker跟主线程不在同一线程,因此数据的下载并不会阻塞到页面的渲染。
2、事件类型“offline_progress”表示离线视频正在下载中。下载过程中,serviceworker的BackgroundFetchManager通过监听“progress”事件获取已下载的文件大小,通过已下载文件大小a除以文件总大小b可以得到当前的下载进度为p=a/b*100%;通过已下载文件大小a除以两次progress事件的时间间隙t,可以得到当前的下载速度v=a/t。然后将每次计算得到的下载进度p和下载速度v通过“offline_progress”事件传递回主线程,由主线程实时显示在视频缓存页面。具体可参阅上述步骤502中关于获取下载速度和下载进度的记载,此处不再赘述。
3、事件类型“offline_success”表示视频已经下载完毕;当BackgroundFetchManager的下载完成时会触发“backgroundfetchsuccess”事件,这时service worker会将已经下载的离线视频文件通过Caches的put方法存入缓存中,以及将缓存的视频url和视频信息写入IndexdeDB;同时service worker会触发“offline_success”告知主线程视频已经加载完毕,主线程可以在此事件中通过消息弹窗的方式通知用户离线视频已经下载完毕。
705、终端根据用户指令对缓存在本地的离线视频进行管理。
本实施例中,当视频被离线缓存在本地时,用户可以进入页面,直接去IndexedDB中查询已缓存视频的信息并展示在终端显示的页面中,此时,若用户要编辑已缓存视频,删除已缓存的某个视频,则需要在主线程通过postMessage通知service worker线程进行视频删除操作。在视频删除阶段,主线程和service worker进程通过定义两种事件来进行通信,分别是“delete”和“delete_success”:
1、事件类型“delete”表示需要删除视频,service worker通过onMessage事件回调接收到“delete”事件,然后同Caches的delete方法删除缓存中的视频,同时将IndexedDB中的视频信息也同时删除;
2、事件类型“delete_success”表示视频已经删除完毕,主线程可以在接收到此事件后通过刷新离线视频管理页面告知用户视频已被删除。
上述步骤的具体实现方式可参阅步骤605至608的记载,此处不再赘述。
706、终端对离线缓存视频进行播放。
本实施例中,对于已经缓存在本地的离线视频,具体播放方式可参阅上述实施例一至实施例三的任意一种,此处不再赘述。
本是实施例中,通过服务线程service worker和主线程、数据库系统IndexedDB及缓存Caches的交互,从而实现视频的离线缓存、离线视频的管理以及离线视频的播放;通过service worker的工作使得离线视频的管理工作不会阻塞主线程,同时与数据库系统IndexedDB使得离线视频的管理情况能够得到及时查询。
本申请实施例所提供的方法,能够应用于各种对视频播放有离线缓存需求的场景中,例如可以用于直播app中,用户通过离线缓存直播视频,观看没有来得及观看的直播画面,以下以直播app为例,结合附图对本申请实施例所提供的方法在具体产品中的应用做详细说明。
请参阅图8,如图8所示,图8展示了直播app横屏状态下的显示界面,直播画面中主播正在对一款游戏进行直播,在显示界面中,横屏状态下显示了直播画面802,UI控件801用于提供离线下载功能。同样地,如图9所示,图9展示了游戏直播画面的竖屏状态下的显示界面,横屏状态下显示了直播画面902,UI控件901用于提供离线下载功能。当用户在直播界面下点击控件801或901时,触发离线下载功能,此时,执行上述步骤501至504,将直播视频画面离线缓存到终端本地,在本地得到第一视频。
在缓存的过程中,用户可通过如图10所示的界面选择缓存视频的清晰度,通过点击菜单1001中的控件,来选择所缓存视频的清晰度,在缓存下载的过程中,通过如图11所示的界面来显示当前的下载信息,主要包括下载速度1101和下载进度1102,下载信息的具体获取方式可参阅上述步骤502的记载,此处不再赘述。
当视频被缓存到本地之后,用户可以通过如图12所示的界面来对本地视频进行管理,图12中的1201控件用于表示缓存在本地的第一视频,当用户想要删除该第一视频时,可以进入如图13所示的界面,如图13所示,当用户勾选UI控件1301时,界面底部显示编辑菜单栏1302,点击菜单栏1302中的删除按钮,即可向终端发送删除请求,以使得终端根据该删除请求对第一视频执行删除操作,其中,删除操作的具体实现方式可参阅上述步骤605至608,此处不再赘述。
当第一视频缓存在本地时,可参阅如图14所示的界面,控件1401原本为执行离线下载的控件,当游戏直播画面已经作为离线视频缓存到本地后,控件1401上显示打钩状态,用于表示当前视频画面1402已经被保存在本地,此时若用户再次点击该控件,则会触发上述实施例一至三任意一项所述的技术方案,对第一视频进行播放。
通过上述方法所展示的用户界面,使得用户在使用终端的过程中,能够通过上述界面操作本申请实施例所提供的方法,并且了解到视频离线管理的相关信息。
上述对本申请实施例提供的方案进行了介绍。可以理解的是,计算机设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从硬件结构上来描述,上述方法可以由一个实体设备实现,也可以由多个实体设备共同实现,还可以是一个实体设备内的一个逻辑功能模块,本申请实施例对此不作具体限定。
例如,上述方法均可以通过图15中的计算机设备来实现。图15为本申请实施例提供的计算机设备的硬件结构示意图。该计算机设备包括至少一个处理器1501,通信线路1502,存储器1503以及至少一个通信接口1504。
处理器1501可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1502可包括一通路,在上述组件之间传送信息。
通信接口1504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器1503可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyer服务器able programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1502与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1503用于存储执行本申请方案的计算机执行指令,并由处理器1501来控制执行。处理器1501用于执行存储器1503中存储的计算机执行指令,从而实现本申请上述实施例提供的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器1501可以包括一个或多个CPU,例如图15中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器,例如图15中的处理器1501和处理器1507。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还可以包括输出设备1505和输入设备1506。输出设备1505和处理器1501通信,可以以多种方式来显示信息。例如,输出设备1505可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备1506和处理器1501通信,可以以多种方式接收用户的输入。例如,输入设备1506可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备可以是一个通用设备或者是一个专用设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digitalassistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图15中类似结构的设备。本申请实施例不限定计算机设备的类型。
本申请实施例可以根据上述方法示例对存储设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能单元的情况下,图16示出了一种离线视频播放装置的示意图。
如图16所示,本申请实施例提供的离线视频播放装置,包括:
第一获取单元1601,该第一获取单元1601用于获取存储在本地的第一数据,该第一数据为记录有第一视频的第一部分的信息数据;
第二获取单元1602,该第二获取单元1602用于根据该第一获取单元1601获取的该第一数据获取第二数据,其中,该第二数据为该视频播放器播放的数据格式;
播放单元1603,该播放单元用于按照该第二数据的数据格式,通过该视频播放器对该第一视频中第一部分的信息数据进行播放,以实现该第一视频中第一部分的播放。
可选地,该第一数据为第一数据流,则该第二获取单元1602,还用于:
读取该第一数据流所记录的视频信息;
根据该视频信息对该第一数据流进行封装以得到该第二数据,该第二数据为视频流。
可选地,该第二获取单元1602,还用于:
读取该第一数据流所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息;
根据该第一数据流所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种将该第一数据流封装为具有视频播放格式的视频流,以得到该第二数据。
可选地,该装置还包括执行单元,该执行单元用于:
创建第一媒体流;
将该第一数据加入该第一媒体流中;
该第二获取单元1602还用于:
在该第一媒体流中根据该第一数据获取该第二数据;
该播放单元1603还用于:
通过该视频播放器播放该第一媒体流中的该第二数据。
可选地,该装置还包括:
第三获取单元1604,该第三获取单元1604用于获取离线缓存请求,该离线缓存请求用于请求缓存该第一视频;
第一控制单元1605,该第一控制单元1605用于根据该第三获取单元1604获取的该离线缓存请求通过服务线程将该第一视频下载到本地缓存中;
第二控制单元1606,该第二控制单元1606用于当该第一控制单元1605下载完成时,控制该服务线程向主线程发送第一通知消息,该第一通知消息用于通知该第一视频缓存完毕;
第三控制单元1607,该第三控制单元1607用于控制该服务线程向数据库系统发送该第一视频的缓存信息。
可选地,该第一控制单元1605还用于:
控制该服务线程获取该第一视频的下载信息;
控制该服务线程向该主线程发送该第一视频的下载信息。
可选地,该下载信息包括下载进度,则该第一控制单元1605还用于:
控制该服务线程根据已下载该第一视频的大小a除以该第一视频的总大小b得到该下载进度n=a/b。
可选地,该下载信息包括下载速度,则该第一控制单元1605还用于:
控制该服务线程根据已下载该第一视频的大小a除以两次获取下载进度之间的时间间隙t得到该下载速度v=a/t。
可选地,该装置还包括:
第四获取单元1608,该第四获取单元1608用于获取删除请求,该删除请求用于请求删除缓存在本地的该第一视频;
第四控制单元1609,该第四控制单元1609用于根据该第四获取单元1608获取的该删除请求控制该服务线程将本地缓存中的该第一视频删除;
第五控制单元1610,该第五控制单元1610用于控制该服务线程向该主线程发送第二通知消息,该第二通知消息用于通知该第一视频已被删除;
第六控制单元1611,该第六控制单元1611用于控制该服务线程将数据库系统中该第一视频的缓存信息删除。
进一步的,本发明实施例还提供一种计算机存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行上述方法。
有关本申请实施例提供的计算机存储介质中存储的程序的详细描述可参照上述实施例,在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的核心思想或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种离线视频播放方法,其特征在于,包括:
获取存储在本地的第一数据,所述第一数据为记录有第一视频的第一部分的信息数据,所述第一视频为直播软件直播过程中,通过离线缓存下载到本地的已经播放完毕的直播画面视频,所述第一数据的长度为缓存空间能够处理的最大数据长度;
创建第一媒体流;所述第一媒体流为用于管理播放的播放控件;
将所述第一数据加入所述第一媒体流中;
在所述第一媒体流中根据所述第一数据获取第二数据,包括:读取所述第一数据所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息;根据所述第一数据所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息,将所述第一数据封装为具有视频播放格式的视频流,以得到所述第二数据;其中,所述第二数据的数据格式为视频播放器播放的数据格式;其中,将所述第一数据封装为具有视频播放格式的视频流得到所述第二数据包括:从存储在本地缓存区中的第一数据二进制流片段解析出元数据moov,根据元数据moov中的关键帧信息取出视频帧、音频帧封装成视频分片的描述信息moofbox和实际媒体数据mdat box,得到当前切片视频的第二数据格式,继续读取下一段本地缓存区的第一数据二进制流片段,重复上述步骤,直至整个视频资源读取完毕;
按照所述第二数据的数据格式,通过所述视频播放器播放所述第一媒体流中的所述第二数据;
所述获取存储在本地的第一数据之前,还包括:
获取离线缓存请求,所述离线缓存请求用于请求缓存所述第一视频;
根据所述离线缓存请求,通过服务线程将所述第一视频下载到本地缓存中;
当下载完成时,控制所述服务线程向主线程发送第一通知消息,所述第一通知消息用于通知所述第一视频缓存完毕;
控制所述服务线程向数据库系统发送所述第一视频的缓存信息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述离线缓存请求通过服务线程将所述第一视频下载到本地缓存中,包括:
控制所述服务线程获取所述第一视频的下载信息;
控制所述服务线程向所述主线程发送所述第一视频的下载信息。
3.根据权利要求1所述的方法,其特征在于,所述下载信息包括下载进度,则所述控制所述服务线程获取所述第一视频的下载信息,包括:
控制所述服务线程根据已下载所述第一视频的大小a除以所述第一视频的总大小b得到所述下载进度n=a/b。
4.根据权利要求1所述的方法,其特征在于,所述下载信息包括下载速度,则所述控制所述服务线程获取所述第一视频的下载信息,包括:
控制所述服务线程根据已下载所述第一视频的大小a除以两次获取下载进度之间的时间间隙t得到所述下载速度v=a/t。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取删除请求,所述删除请求用于请求删除缓存在本地的所述第一视频;
根据所述删除请求控制所述服务线程将本地缓存中的所述第一视频删除;
控制所述服务线程向所述主线程发送第二通知消息,所述第二通知消息用于通知所述第一视频已被删除;
控制所述服务线程将数据库系统中所述第一视频的缓存信息删除。
6.一种离线视频播放装置,其特征在于,包括:
第一获取单元,用于获取存储在本地的第一数据,所述第一数据为记录有第一视频的第一部分的信息数据,所述第一视频为直播软件直播过程中,通过离线缓存下载到本地的已经播放完毕的直播画面视频,所述第一数据的长度为缓存空间能够处理的最大数据长度;
执行单元,用于创建第一媒体流;所述第一媒体流为用于管理播放的播放控件;将所述第一数据加入所述第一媒体流中;
第二获取单元,用于在所述第一媒体流中根据所述第一数据获取第二数据,包括:读取所述第一数据所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息;根据所述第一数据所记录的视频时长、视频宽高、视频关键帧及视频存储位置偏移量中的至少一种信息,将所述第一数据封装为具有视频播放格式的视频流,以得到所述第二数据;其中,所述第二数据的数据格式为视频播放器播放的数据格式;其中,将所述第一数据封装为具有视频播放格式的视频流得到所述第二数据包括:从存储在本地缓存区中的第一数据二进制流片段解析出元数据moov,根据元数据moov中的关键帧信息取出视频帧、音频帧封装成视频分片的描述信息moofbox和实际媒体数据mdatbox,得到当前切片视频的第二数据格式,继续读取下一段本地缓存区的第一数据二进制流片段,重复上述步骤,直至整个视频资源读取完毕;
播放单元,用于按照所述第二数据的数据格式,通过所述视频播放器播放所述第一媒体流中的所述第二数据;
所述离线视频播放装置还包括:
第三获取单元,用于获取离线缓存请求,所述离线缓存请求用于请求缓存所述第一视频;
第一控制单元,用于根据所述第三获取单元获取的所述离线缓存请求,通过服务线程将所述第一视频下载到本地缓存中;
第二控制单元,用于当所述第一控制单元下载完成时,控制所述服务线程向主线程发送第一通知消息,所述第一通知消息用于通知所述第一视频缓存完毕;
第三控制单元,用于控制所述服务线程向数据库系统发送所述第一视频的缓存信息。
7.一种计算机设备,其特征在于,所述计算机设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,所述存储器中存储有程序指令;
所述交互装置用于获取用户输入的操作指令;
所述处理器用于执行存储器中存储的程序指令,执行如权利要求1-5中任意一项所述的方法。
8.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1-5中任意一项所述的方法。
CN202010162807.0A 2020-03-10 2020-03-10 一种离线视频播放方法、装置、设备及介质 Active CN111327941B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010162807.0A CN111327941B (zh) 2020-03-10 2020-03-10 一种离线视频播放方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010162807.0A CN111327941B (zh) 2020-03-10 2020-03-10 一种离线视频播放方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN111327941A CN111327941A (zh) 2020-06-23
CN111327941B true CN111327941B (zh) 2022-07-08

Family

ID=71165693

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010162807.0A Active CN111327941B (zh) 2020-03-10 2020-03-10 一种离线视频播放方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN111327941B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115022669B (zh) * 2022-05-31 2024-03-12 厦门蝉羽网络科技有限公司 一种基于信息处理的直播系统及直播方法
CN118466892B (zh) * 2024-07-10 2024-09-20 一网互通(北京)科技有限公司 基于h5端的音乐播放器设置方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399691A (zh) * 2008-10-21 2009-04-01 北京闪联互动网络科技有限责任公司 移动终端的多媒体在线播放方法和装置及移动终端
CN102625092A (zh) * 2011-01-27 2012-08-01 天脉聚源(北京)传媒科技有限公司 一种移动设备播放视频的方法和装置
CN103051941A (zh) * 2013-01-28 2013-04-17 北京暴风科技股份有限公司 一种在移动平台上播放本地视频的方法和系统
CN105792020A (zh) * 2014-12-26 2016-07-20 北京奇虎科技有限公司 播放视频文件的方法及装置
CN110620951A (zh) * 2019-10-10 2019-12-27 东软集团股份有限公司 一种视频缓存的方法、装置、存储介质及处理器
CN110662114A (zh) * 2019-09-30 2020-01-07 广州华多网络科技有限公司 视频处理方法、装置、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101854486A (zh) * 2010-04-12 2010-10-06 苏州闻道网络科技有限公司 一种音视频转换方法
CN102075528B (zh) * 2010-12-27 2014-12-10 上海聚欣网络科技有限公司 一种播放多种封装格式的网络多媒体文件的方法与设备
CN103002274B (zh) * 2011-09-16 2016-05-18 腾讯科技(深圳)有限公司 一种基于离线下载的移动多媒体实时转码播放系统及方法
CN103826159B (zh) * 2013-12-04 2017-12-19 Tcl集团股份有限公司 一种m3u8格式视频的本地离线播放方法和终端
US20160261912A1 (en) * 2015-03-04 2016-09-08 Echostar Technologies L.L.C. Collaborative place-shifting of video content from a plurality of sources to a video presentation device
CN107864382B (zh) * 2017-10-24 2018-10-09 广东省南方数字电视无线传播有限公司 视频播放方法、装置和系统
CN108024143A (zh) * 2017-11-03 2018-05-11 国政通科技股份有限公司 一种智能的视频数据处理方法及装置
CN110475159A (zh) * 2018-05-10 2019-11-19 中兴通讯股份有限公司 多媒体信息的传输方法及装置、终端
CN110545491B (zh) * 2018-05-29 2021-08-10 北京字节跳动网络技术有限公司 一种媒体文件的网络播放方法、装置及存储介质
CN110545466B (zh) * 2018-05-29 2021-07-06 北京字节跳动网络技术有限公司 基于网页的媒体文件的播放方法、装置及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399691A (zh) * 2008-10-21 2009-04-01 北京闪联互动网络科技有限责任公司 移动终端的多媒体在线播放方法和装置及移动终端
CN102625092A (zh) * 2011-01-27 2012-08-01 天脉聚源(北京)传媒科技有限公司 一种移动设备播放视频的方法和装置
CN103051941A (zh) * 2013-01-28 2013-04-17 北京暴风科技股份有限公司 一种在移动平台上播放本地视频的方法和系统
CN105792020A (zh) * 2014-12-26 2016-07-20 北京奇虎科技有限公司 播放视频文件的方法及装置
CN110662114A (zh) * 2019-09-30 2020-01-07 广州华多网络科技有限公司 视频处理方法、装置、电子设备及存储介质
CN110620951A (zh) * 2019-10-10 2019-12-27 东软集团股份有限公司 一种视频缓存的方法、装置、存储介质及处理器

Also Published As

Publication number Publication date
CN111327941A (zh) 2020-06-23

Similar Documents

Publication Publication Date Title
JP7446468B2 (ja) ビデオ特殊効果の処理方法、装置、電子機器及びコンピュータプログラム
US10289659B2 (en) Delivery and display of page previews using shadow DOM
CN109068153B (zh) 视频播放方法、装置和计算机可读存储介质
US11722555B2 (en) Application control method and apparatus, electronic device, and storage medium
US11924503B2 (en) Bullet comment presentation method and system
CN107977371A (zh) 页面元素的请求方法、显示方法及客户端
US20180376209A1 (en) Video player framework for a media distribution and management platform
CN108449409B (zh) 动画推送方法、装置、设备和存储介质
CN110070593B (zh) 图片预览信息的显示方法、装置、设备及介质
CN111327941B (zh) 一种离线视频播放方法、装置、设备及介质
US20230007337A1 (en) Bullet comment processing method and system based on wechat mini-program
CN101346994A (zh) 优化多媒体场景的呈现的方法及相应的程序、信号、数据载体、终端和接收方法
US11991420B2 (en) Live commenting processing method and system
CN113688173A (zh) 一种报表信息处理方法、装置、电子设备及存储介质
CN111159617B (zh) 多媒体内容的分发控制方法和装置以及内容管理系统
US11543945B1 (en) Accurate local depiction of preview of a program window included in a remote graphical desktop
CN112764746A (zh) 数据处理方法、装置、电子设备及存储介质
CN114035787A (zh) 网页构建方法、装置、电子设备、存储介质及产品
CN113114955B (zh) 一种视频的生成方法、装置及电子设备
US11928755B2 (en) Integrating predetermined virtual tours for real-time delivery on third-party resources
CN111026558B (zh) 基于微信小程序的弹幕处理方法和系统
CN115734008A (zh) 一种快速集成内容供应商视频资源的方法、系统及介质
CN115842815A (zh) 基于Web的视频效果添加
CN115599252A (zh) 交互方法及装置
CN115065866A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40024195

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant