CN117135403A - 视频播放方法、装置、电子设备及存储介质 - Google Patents

视频播放方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117135403A
CN117135403A CN202311069811.2A CN202311069811A CN117135403A CN 117135403 A CN117135403 A CN 117135403A CN 202311069811 A CN202311069811 A CN 202311069811A CN 117135403 A CN117135403 A CN 117135403A
Authority
CN
China
Prior art keywords
video
playing
target
data
determining
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.)
Pending
Application number
CN202311069811.2A
Other languages
English (en)
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 CN202311069811.2A priority Critical patent/CN117135403A/zh
Publication of CN117135403A publication Critical patent/CN117135403A/zh
Pending legal-status Critical Current

Links

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/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/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/44012Processing 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 rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs

Landscapes

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

Abstract

本申请提供了一种视频播放方法、装置、电子设备及存储介质。包括:在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;将加载和解码后的所述衔接视频数据存储至预设缓存空间中;在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。如此,在终端播放完毕目标视频需要续播时,无需重新加载数据及重置解码器来解码数据,从而避免产生卡顿问题,使自动续播更加流畅,提升用户的观看体验。

Description

视频播放方法、装置、电子设备及存储介质
技术领域
本申请涉及视频播放技术领域,尤其涉及一种视频播放方法、装置、电子设备及存储介质。
背景技术
用户在观看视频时,视频播放器在播放完毕一个视频后自动播放相关的下一个视频,是一项基本的播放能力,例如,对于电视剧集而言,播放完当前一集的内容后自动续播下一集的内容,又如,播放短视频时,播放完当前视频后自动续播下一条短视频,等等。
在使用传统的在线视频播放器的架构和模式下,每次播放完毕一个视频后,需要按照以下次序执行以播放相关的下一个视频:1.请求视频数据;2.解析视频数据;3.打开解码器,解码视频数据;4.渲染解码后的视频数据以播放出对应的画面。
然而,通过传统模式实现自动续播,由于每次续播时需要加载数据和重置解码器来解码数据,容易产生卡顿问题。
发明内容
本申请实施例的目的在于提供一种视频播放方法、装置、电子设备及存储介质,以解决通过传统模式实现自动续播,由于每次续播时需要加载数据和重置解码器来解码数据,容易产生卡顿的问题。具体技术方案如下:
第一方面,提供了一种视频播放方法,所述方法包括:
在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;
确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;
将加载和解码后的所述衔接视频数据存储至预设缓存空间中;
在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
在一个可能的实施方式中,所述确定所述目标视频对应的关联视频,包括:
确定所述目标视频是否为连续性视频作品中的一个视频;
在所述目标视频为连续性视频作品中的一个视频的情况下,在所述连续性视频作品中确定所述目标视频对应的下一个视频为所述关联视频;
在所述目标视频不为连续性视频作品中的一个视频的情况下,获取所述目标视频对应的第一播放数据,其中,所述第一播放数据包括历史播放所述目标视频后播放的偏好视频及每个所述偏好视频对应的播放次数,将对应播放次数最多的偏好视频确定为所述关联视频。
在一个可能的实施方式中,所述确定所述关联视频对应的衔接视频数据,包括:
将所述关联视频划分为多个第一视频片段;
针对每个第一视频片段,获取所述第一视频片段对应的第二播放数据,其中,所述第二播放数据包括历史播放所述第一视频片段的播放次数;
将对应播放次数最高的第一视频片段,确定为所述关联视频对应的衔接视频数据。
在一个可能的实施方式中,所述方法还包括:
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,按照每个第一视频片段在所述关联视频中的播放顺序,依次加载并解码每个所述第一视频片段;
在播放完毕所述衔接视频数据之后,按照每个第一视频片段在所述关联视频中的播放顺序,依次对每个所述第一视频片段进行渲染处理,以实现对每个所述第一视频片段的播放。
在一个可能的实施方式中,所述确定所述关联视频对应的衔接视频数据,包括:
从所述关联视频中确定第二视频片段,其中,所述第二视频片段包含所述关联视频的起始播放帧;
将所述第二视频片段确定为所述关联视频对应的衔接视频数据。
在一个可能的实施方式中,所述方法还包括:
从所述第二视频片段中确定目标帧;
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,以所述目标帧为加载起始帧对所述目标视频中对应视频数据进行加载和解码,得到解码数据;
在播放完毕所述衔接视频数据之后,从所述目标帧开始对所述解码数据进行渲染处理,以实现从所述目标帧继续播放所述目标视频。
在一个可能的实施方式中,所述确定所述目标视频对应的关联视频之前,还包括:
检测所述终端播放所述目标视频的播放进度;
在所述播放进度大于预设进度的情况下,执行所述确定所述目标视频对应的关联视频的步骤。
第二方面,提供了一种视频播放装置,所述装置包括:
确定模块,用于在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;
加载模块,用于确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;
存储模块,用于将加载和解码后的所述衔接视频数据存储至预设缓存空间中;
渲染模块,用于在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
在一个可能的实施方式中,所述确定模块,用于:
确定所述目标视频是否为连续性视频作品中的一个视频;
在所述目标视频为连续性视频作品中的一个视频的情况下,在所述连续性视频作品中确定所述目标视频对应的下一个视频为所述关联视频;
在所述目标视频不为连续性视频作品中的一个视频的情况下,获取所述目标视频对应的第一播放数据,其中,所述第一播放数据包括历史播放所述目标视频后播放的偏好视频及每个所述偏好视频对应的播放次数,将对应播放次数最多的偏好视频确定为所述关联视频。
在一个可能的实施方式中,所述加载模块,用于:
将所述关联视频划分为多个第一视频片段;
针对每个第一视频片段,获取所述第一视频片段对应的第二播放数据,其中,所述第二播放数据包括历史播放所述第一视频片段的播放次数;
将对应播放次数最高的第一视频片段,确定为所述关联视频对应的衔接视频数据。
在一个可能的实施方式中,所述加载模块,还用于:
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,按照每个第一视频片段在所述关联视频中的播放顺序,依次加载并解码每个所述第一视频片段;
在播放完毕所述衔接视频数据之后,按照每个第一视频片段在所述关联视频中的播放顺序,依次对每个所述第一视频片段进行渲染处理,以实现对每个所述第一视频片段的播放。
在一个可能的实施方式中,所述确定模块,用于:
从所述关联视频中确定第二视频片段,其中,所述第二视频片段包含所述关联视频的起始播放帧;
将所述第二视频片段确定为所述关联视频对应的衔接视频数据。
在一个可能的实施方式中,所述加载模块,还用于:
从所述第二视频片段中确定目标帧;
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,以所述目标帧为加载起始帧对所述目标视频中对应视频数据进行加载和解码,得到解码数据;
在播放完毕所述衔接视频数据之后,从所述目标帧开始对所述解码数据进行渲染处理,以实现从所述目标帧继续播放所述目标视频。
在一个可能的实施方式中,所述装置还包括检测模块,用于:
检测所述终端播放所述目标视频的播放进度;
在所述播放进度大于预设进度的情况下,执行所述确定所述目标视频对应的关联视频的步骤。
第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的视频播放方法。
本申请实施例有益效果:
本申请实施例提供了一种视频播放方法、装置、电子设备及存储介质,本申请实施例中,在终端播放完毕目标视频之前,确定目标视频对应的关联视频,以及,确定关联视频对应的衔接视频数据,并对衔接视频数据进行加载和解码处理,然后,将加载和解码后的衔接视频数据存储至预设缓存空间中,最后,在终端播放完毕目标视频的情况下,对预设缓存空间中的衔接视频数据进行渲染处理,以实现对衔接视频数据的播放。如此,在终端播放完毕目标视频需要续播时,无需重新加载数据及重置解码器来解码数据,从而避免产生卡顿问题,使自动续播更加流畅,提升用户的观看体验。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1为本申请实施例提供的一种视频播放方法的流程图;
图2为本申请实施例提供的另一种视频播放方法的流程图;
图3为本申请实施例提供的另一种视频播放方法的流程图;
图4为本申请实施例提供的一种视频播放装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。
下面将结合具体实施方式,对本申请实施例提供的一种视频播放方法进行详细的说明,如图1所示,具体步骤如下:
S101,在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频。
关联视频,指终端播放完毕目标视频时将自动续播的视频。
具体的,确定目标视频对应的关联视频的实现可包括以下步骤:
确定所述目标视频是否为连续性视频作品中的一个视频;在所述目标视频为连续性视频作品中的一个视频的情况下,在所述连续性视频作品中确定所述目标视频对应的下一个视频为所述关联视频;在所述目标视频不为连续性视频作品中的一个视频的情况下,获取所述目标视频对应的第一播放数据,其中,所述第一播放数据包括历史播放所述目标视频后播放的偏好视频及每个所述偏好视频对应的播放次数,将对应播放次数最多的偏好视频确定为所述关联视频。
其中,连续性视频作品指包括多个具有播放顺序的视频的作品,例如,连续剧、纪录片、动漫作品等。
本申请实施例中,在目标视频为连续性视频作品中的一个视频(如连续剧或纪录片等作品中的某一集视频)的情况下,则直接将目标视频对应的下一个视频(如连续剧或纪录片等作品中当前播放集数的下一集视频),确定为关联视频。由此可以根据目标视频的类型快速确定关联视频。而目标视频不为连续性视频作品中的一个视频的情况下(如电影、短视频等),则可以将历史播放目标视频后,用户选择播放次数最多的偏好视频确定为关联视频。由此可以根据用户对目标视频的观看习惯确定关联视频,提高用户观看关联视频的概率。
S102,确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理。
S103,将加载和解码后的所述衔接视频数据存储至预设缓存空间中。
以下对S102和S103进行统一说明:
衔接视频数据,是指在续播开始时播放的一段视频,一般为关联视频中的一个视频片段,用来衔接目标视频和关联视频。
预设缓存空间,用于缓存衔接视频数据,预设缓存空间设置在内存或者GPU中。应用中,可以使用FBO(Framebuffer Object,帧缓冲对象)来实现衔接视频数据的缓存。FBO允许将渲染结果存储到纹理或渲染缓冲区(即预设缓存空间)中,而无需将其显示在屏幕上。
本申请实施例中,在终端播放完毕目标视频之前,预先对衔接视频数据进行加载和解码处理,并将加载和解码后的衔接视频数据存储至预设缓存空间中。以在后续续播时,可以直接对预设缓存空间中的衔接视频数据进行渲染播放。
以下为通过FBO实现缓存的代码:
//创建纹理对象
GLuint textureId;
glGenTextures(1,&textureId);
glBindTexture(GL_TEXTURE_2D,textureId);
//配置纹理参数
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MAG_FILTER,GL_LINEAR);
//分配纹理内存
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,frameWidth,frameHeight,0,GL_RGBA,GL_UNSIGNED_BYTE,nullptr);
//创建帧缓冲对象
GLuint framebufferId;
glGenFramebuffers(1,&framebufferId);
glBindFramebuffer(GL_FRAMEBUFFER,framebufferId);
//将纹理附加到帧缓冲的颜色附着点
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,textureId,0);
//检查帧缓冲是否完整
if(glCheckFramebufferStatus(GL_FRAMEBUFFER)!=GL_FRAMEBUFFER_COMPLETE){
//帧缓冲不完整,处理错误情况
}
//更新纹理内容
while(有未解码数据){
//解码并获取帧数据
//更新纹理内容
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,frameWidth,frameHeight,GL_RGBA,GL_UNSIGNED_BYTE,frameData);
}
至于具体如何确定所述关联视频对应的衔接视频数据,将通过下文实施例进行详细的解释说明,这里先不详述。
S104,在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
本申请实施例中,在终端播放完毕目标视频的情况下,即可直接对预设缓存空间中的衔接视频数据进行渲染处理,以实现对衔接视频数据的播放。而无需重新加载数据及重置解码器来解码数据,从而避免产生卡顿问题。
应用中,可以通过以下代码实现图像数据的渲染:
//创建帧缓冲对象
GLuint framebufferId;
glGenFramebuffers(1,&framebufferId);
glBindFramebuffer(GL_FRAMEBUFFER,framebufferId);
//创建纹理对象
GLuint textureId;
glGenTextures(1,&textureId);
glBindTexture(GL_TEXTURE_2D,textureId);
//配置纹理参数
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
//分配纹理内存
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,frameWidth,frameHeight,0,GL_RGBA,GL_UNSIGNED_BYTE,nullptr);
//将纹理附加到帧缓冲的颜色附着点
glFramebufferTexture2D(GL_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D,textureId,0);
//检查帧缓冲是否完整
if(glCheckFramebufferStatus(GL_FRAMEBUFFER)!=GL_FRAMEBUFFER_COMPLETE){
//帧缓冲不完整,处理错误情况
}
//绑定默认帧缓冲
glBindFramebuffer(GL_FRAMEBUFFER,0);
//渲染输出到屏幕
while(渲染循环){
//绑定帧缓冲对象
glBindFramebuffer(GL_FRAMEBUFFER,framebufferId);
//渲染到帧缓冲对象
//绑定默认帧缓冲
glBindFramebuffer(GL_FRAMEBUFFER,0);
//渲染输出到屏幕
渲染纹理(textureId);
}
本申请实施例中,在终端播放完毕目标视频之前,确定目标视频对应的关联视频,以及,确定关联视频对应的衔接视频数据,并对衔接视频数据进行加载和解码处理,然后,将加载和解码后的衔接视频数据存储至预设缓存空间中,最后,在终端播放完毕目标视频的情况下,对预设缓存空间中的衔接视频数据进行渲染处理,以实现对衔接视频数据的播放。如此,在终端播放完毕目标视频需要续播时,无需重新加载数据及重置解码器来解码数据,从而避免产生卡顿问题,使自动续播更加流畅,提升用户的观看体验。
参见图2,为本申请实施例提供的另一种视频播放方法的实施例流程图。该图2所示流程在上述图1所示流程的基础上,描述如何确定所述关联视频对应的衔接视频数据。如图2所示,该流程可包括以下步骤:
S201,将所述关联视频划分为多个第一视频片段。
本申请实施例中,可以按照用户设置的缓存单元将关联视频划分为多个第一视频片段,每个第一视频片段即一个缓存单元。其中,缓存单元,指每次缓存的数据量,为视频的一个gop单位,gop假设均相等。每次新增缓存,或者弹出缓存,以gop为一个最小单元。
S202,针对每个第一视频片段,获取所述第一视频片段对应的第二播放数据,其中,所述第二播放数据包括历史播放所述第一视频片段的播放次数。
S203,将对应播放次数最高的第一视频片段,确定为所述关联视频对应的衔接视频数据。
以下对S202和S203进行统一说明:
第二播放数据,包括历史播放对应第一视频片段的播放次数。
本申请实施例中,首先,根据每个第一视频片段对应的第二播放数据,确定对应第一视频片段的播放次数,然后,将对应播放次数最高的第一视频片段,确定为关联视频对应的衔接视频数据。
基于此,在本申请又一实施例中,所述方法还可以包括以下步骤:
步骤A1,在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,按照每个第一视频片段在所述关联视频中的播放顺序,依次加载并解码每个所述第一视频片段;
步骤A2,在播放完毕所述衔接视频数据之后,按照每个第一视频片段在所述关联视频中的播放顺序,依次对每个所述第一视频片段进行渲染处理,以实现对每个所述第一视频片段的播放。
该实施例中,在播放衔接视频数据过程中,则依次对每个第一视频片段进行加载和解码,如此,在播放完毕衔接视频数据之后,则可以直接依次对每个第一视频片段进行渲染处理,以实现对每个第一视频片段的播放。而无需重新加载数据及重置解码器来解码数据,从而避免播放完毕衔接视频数据后,产生卡顿问题。
通过图2所示流程,可以将历史播放次数最高的第一视频片段作为衔接视频数据,如此,可以通过衔接视频数据来提高用户观看关联视频的兴趣,从而提高用户观看关联视频的概率,增加用户粘性。
参见图3,为本申请实施例提供的另一种视频播放方法的实施例流程图。该图3所示流程在上述图1所示流程的基础上,描述如何确定所述关联视频对应的衔接视频数据。如图3所示,该流程可包括以下步骤:
S301,从所述关联视频中确定第二视频片段,其中,所述第二视频片段包含所述关联视频的起始播放帧;
S302,将所述第二视频片段确定为所述关联视频对应的衔接视频数据。
第二视频片段,为包含关联视频的起始播放帧的片段,即,关联视频开头的一段视频。
本申请实施例中,可以直接将关联视频开头的第二视频片段作为衔接视频数据。如此,在终端播放完毕目标视频时,可以直接通过渲染第二视频片段来实现对关联视频的续播。
基于此,在本申请又一实施例中,所述方法还可以包括以下步骤:
步骤B1,从所述第二视频片段中确定目标帧。
步骤B2,在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,以所述目标帧为加载起始帧对所述目标视频中对应视频数据进行加载和解码,得到解码数据。
步骤B3,在播放完毕所述衔接视频数据之后,从所述目标帧开始对所述解码数据进行渲染处理,以实现从所述目标帧继续播放所述目标视频。
目标帧,为第二视频片段中的一个视频帧。
在一实施例中,可以将第二视频片段中的结尾帧,确定为目标帧。如此,后续可以直接基于结尾帧实现对关联视频中后续内容的续播。
在另一实施例中,可以将第二视频片段中与结尾帧距离预设长度的视频帧,确定为目标帧。如此,后续可以基于目标帧实现对关联视频中后续内容的续播。从而避免因跳帧等情况导致视频不连贯。
基于此,在对预设缓存空间中的衔接视频数据进行渲染处理过程中,可以以目标帧为加载起始帧对目标视频中对应视频数据进行加载和解码,得到解码数据,并在播放完毕衔接视频数据之后,从目标帧开始对解码数据进行渲染处理,以实现从目标帧继续播放目标视频。如此,可以在衔接视频数据为关联视频开头的一段视频时,在播放完毕衔接视频数据之后,直接从目标帧开始进行续播,避免重复播放衔接视频数据。
应用中,可以通过以下代码实现对关联视频中对应视频数据进行加载和解码:
//创建视频解码器
MediaCodec decoder=MediaCodec.createDecoderByType(videoMimeType);
//配置解码器
MediaFormat format =MediaFormat.createVideoFormat(videoMimeType,videoWidth,videoHeight);
decoder.configure(format,surface,null,0);//使用一个Surface作为渲染目标
//启动解码器
decoder.start();
boolean shouldRender=false;
//读取视频数据并解码
while(有未解码数据){
//从输入缓冲区获取可用的解码器索引
int inputBufferIndex=decoder.dequeueInputBuffer(timeout);
if(inputBufferIndex>=0){
//获取可用的输入缓冲区
ByteBuffer inputBuffer=decoder.getInputBuffer(inputBufferIndex);
//从文件或网络读取视频数据到输入缓冲区
int bytesRead=读取视频数据(inputBuffer);
//将读取到的数据提交到解码器
decoder.queueInputBuffer(inputBufferIndex,0,bytesRead,presentationTimeUs,0);
//如果视频帧的解码时间超过特定阈值,则开始渲染图片
if(presentationTimeUs>cache_dts_end){
shouldRender=true;
}
}
//从输出缓冲区获取解码后的数据
int outputBufferIndex=decoder.dequeueOutputBuffer(bufferInfo,timeout);
while(outputBufferIndex>=0){
//获取解码后的输出缓冲区
ByteBuffer outputBuffer=decoder.getOutputBuffer(outputBufferIndex);
//如果满足渲染条件,则渲染出图片
if(shouldRender){
//渲染输出缓冲区的图片到指定目标(如保存到文件、显示到屏幕等)
渲染图片(outputBuffer);
}
//释放输出缓冲区
decoder.releaseOutputBuffer(outputBufferIndex,false);
//获取下一个可用的输出缓冲区
outputBufferIndex=decoder.dequeueOutputBuffer(bufferInfo,timeout);
}
//检查解码器状态并进行相关处理
if(outputBufferIndex==MediaCodec.INFO_OUTPUT_FORMAT_CHANGED){
//解码器输出格式发生变化,可以获取新的格式信息
MediaFormat newFormat=decoder.getOutputFormat();
处理新的格式信息(newFormat);
}else if(outputBufferIndex==MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED){
//输出缓冲区发生变化,可能需要重新获取缓冲区
//在新的Android版本中,推荐使用getOutputBuffer()获取输出缓冲区
}else if(outputBufferIndex==MediaCodec.INFO_TRY_AGAIN_LATER){
//解码器暂时无法提供输出数据,等待一段时间后重试
}
}
//停止和释放解码器
decoder.stop();
decoder.release()
应用中,基于观看习惯,一般视频播放进度较多时(如80%、90%等),终端顺利播放完毕目标视频的概率较大。而在播放进度较少时,可能出现在终端播放完毕目标视频之前,因用户不想继续观看而手动停止播放的情况。
为此,在另一实施例中,所述方法还包括以下步骤:检测所述终端播放所述目标视频的播放进度,在所述播放进度大于预设进度的情况下,执行所述确定所述目标视频对应的关联视频的步骤。
其中,播放进度可以是通过历史数据确定的,在达到该播放进度时,用户观看至目标视频结束并继续观看续播的关联视频的概率较大。
例如,播放进度为80%,则可以在终端播放目标视频达到80%时,执行确定目标视频对应的关联视频的步骤。
通过本方案,可以在播放进度较多时,才执行确定目标视频对应的关联视频的步骤,如此,可以减少因用户不想继续观看而手动停止播放时,产生的无效加载和解码的情况,从而节省计算资源。
基于相同的技术构思,本申请实施例还提供了一种视频播放装置,如图4所示,该装置包括:
确定模块401,用于在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;
加载模块402,用于确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;
存储模块403,用于将加载和解码后的所述衔接视频数据存储至预设缓存空间中;
渲染模块404,用于在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
在一个可能的实施方式中,所述确定模块,用于:
确定所述目标视频是否为连续性视频作品中的一个视频;
在所述目标视频为连续性视频作品中的一个视频的情况下,在所述连续性视频作品中确定所述目标视频对应的下一个视频为所述关联视频;
在所述目标视频不为连续性视频作品中的一个视频的情况下,获取所述目标视频对应的第一播放数据,其中,所述第一播放数据包括历史播放所述目标视频后播放的偏好视频及每个所述偏好视频对应的播放次数,将对应播放次数最多的偏好视频确定为所述关联视频。
在一个可能的实施方式中,所述加载模块,用于:
将所述关联视频划分为多个第一视频片段;
针对每个第一视频片段,获取所述第一视频片段对应的第二播放数据,其中,所述第二播放数据包括历史播放所述第一视频片段的播放次数;
将对应播放次数最高的第一视频片段,确定为所述关联视频对应的衔接视频数据。
在一个可能的实施方式中,所述加载模块,还用于:
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,按照每个第一视频片段在所述关联视频中的播放顺序,依次加载并解码每个所述第一视频片段;
在播放完毕所述衔接视频数据之后,按照每个第一视频片段在所述关联视频中的播放顺序,依次对每个所述第一视频片段进行渲染处理,以实现对每个所述第一视频片段的播放。
在一个可能的实施方式中,所述确定模块,用于:
从所述关联视频中确定第二视频片段,其中,所述第二视频片段包含所述关联视频的起始播放帧;
将所述第二视频片段确定为所述关联视频对应的衔接视频数据。
在一个可能的实施方式中,所述加载模块,还用于:
从所述第二视频片段中确定目标帧;
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,以所述目标帧为加载起始帧对所述目标视频中对应视频数据进行加载和解码,得到解码数据;
在播放完毕所述衔接视频数据之后,从所述目标帧开始对所述解码数据进行渲染处理,以实现从所述目标帧继续播放所述目标视频。
在一个可能的实施方式中,所述装置还包括检测模块,用于:
检测所述终端播放所述目标视频的播放进度;
在所述播放进度大于预设进度的情况下,执行所述确定所述目标视频对应的关联视频的步骤。
本申请实施例中,在终端播放完毕目标视频之前,确定目标视频对应的关联视频,以及,确定关联视频对应的衔接视频数据,并对衔接视频数据进行加载和解码处理,然后,将加载和解码后的衔接视频数据存储至预设缓存空间中,最后,在终端播放完毕目标视频的情况下,对预设缓存空间中的衔接视频数据进行渲染处理,以实现对衔接视频数据的播放。如此,在终端播放完毕目标视频需要续播时,无需重新加载数据及重置解码器来解码数据,从而避免产生卡顿问题,使自动续播更加流畅,提升用户的观看体验。
基于相同的技术构思,本申请实施例还提供了一种电子设备,如图5所示,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,
存储器113,用于存放计算机程序;
处理器111,用于执行存储器113上所存放的程序时,实现如下步骤:
在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;
确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;
将加载和解码后的所述衔接视频数据存储至预设缓存空间中;
在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一视频播放方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一视频播放方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
应理解的是,文中使用的术语仅出于描述特定示例实施方式的目的,而无意于进行限制。除非上下文另外明确地指出,否则如文中使用的单数形式“一”、“一个”以及“所述”也可以表示包括复数形式。术语“包括”、“包含”、“含有”以及“具有”是包含性的,并且因此指明所陈述的特征、步骤、操作、元件和/或部件的存在,但并不排除存在或者添加一个或多个其它特征、步骤、操作、元件、部件、和/或它们的组合。文中描述的方法步骤、过程、以及操作不解释为必须要求它们以所描述或说明的特定顺序执行,除非明确指出执行顺序。还应当理解,可以使用另外或者替代的步骤。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种视频播放方法,其特征在于,所述方法包括:
在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;
确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;
将加载和解码后的所述衔接视频数据存储至预设缓存空间中;
在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
2.根据权利要求1所述的方法,其特征在于,所述确定所述目标视频对应的关联视频,包括:
确定所述目标视频是否为连续性视频作品中的一个视频;
在所述目标视频为连续性视频作品中的一个视频的情况下,在所述连续性视频作品中确定所述目标视频对应的下一个视频为所述关联视频;
在所述目标视频不为连续性视频作品中的一个视频的情况下,获取所述目标视频对应的第一播放数据,其中,所述第一播放数据包括历史播放所述目标视频后播放的偏好视频及每个所述偏好视频对应的播放次数,将对应播放次数最多的偏好视频确定为所述关联视频。
3.根据权利要求1所述的方法,其特征在于,所述确定所述关联视频对应的衔接视频数据,包括:
将所述关联视频划分为多个第一视频片段;
针对每个第一视频片段,获取所述第一视频片段对应的第二播放数据,其中,所述第二播放数据包括历史播放所述第一视频片段的播放次数;
将对应播放次数最高的第一视频片段,确定为所述关联视频对应的衔接视频数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,按照每个第一视频片段在所述关联视频中的播放顺序,依次加载并解码每个所述第一视频片段;
在播放完毕所述衔接视频数据之后,按照每个第一视频片段在所述关联视频中的播放顺序,依次对每个所述第一视频片段进行渲染处理,以实现对每个所述第一视频片段的播放。
5.根据权利要求1所述的方法,其特征在于,所述确定所述关联视频对应的衔接视频数据,包括:
从所述关联视频中确定第二视频片段,其中,所述第二视频片段包含所述关联视频的起始播放帧;
将所述第二视频片段确定为所述关联视频对应的衔接视频数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
从所述第二视频片段中确定目标帧;
在对所述预设缓存空间中的所述衔接视频数据进行渲染处理过程中,以所述目标帧为加载起始帧对所述目标视频中对应视频数据进行加载和解码,得到解码数据;
在播放完毕所述衔接视频数据之后,从所述目标帧开始对所述解码数据进行渲染处理,以实现从所述目标帧继续播放所述目标视频。
7.根据权利要求1所述的方法,其特征在于,所述确定所述目标视频对应的关联视频之前,还包括:
检测所述终端播放所述目标视频的播放进度;
在所述播放进度大于预设进度的情况下,执行所述确定所述目标视频对应的关联视频的步骤。
8.一种视频播放装置,其特征在于,所述装置包括:
确定模块,用于在终端播放完毕目标视频之前,确定所述目标视频对应的关联视频;
加载模块,用于确定所述关联视频对应的衔接视频数据,并对所述衔接视频数据进行加载和解码处理;
存储模块,用于将加载和解码后的所述衔接视频数据存储至预设缓存空间中;
渲染模块,用于在所述终端播放完毕所述目标视频的情况下,对所述预设缓存空间中的所述衔接视频数据进行渲染处理,以实现对所述衔接视频数据的播放。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
CN202311069811.2A 2023-08-23 2023-08-23 视频播放方法、装置、电子设备及存储介质 Pending CN117135403A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311069811.2A CN117135403A (zh) 2023-08-23 2023-08-23 视频播放方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311069811.2A CN117135403A (zh) 2023-08-23 2023-08-23 视频播放方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN117135403A true CN117135403A (zh) 2023-11-28

Family

ID=88855862

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311069811.2A Pending CN117135403A (zh) 2023-08-23 2023-08-23 视频播放方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117135403A (zh)

Similar Documents

Publication Publication Date Title
CN109194960B (zh) 一种图像帧渲染方法、装置及电子设备
CN111163345B (zh) 一种图像渲染方法及装置
CN111277895B (zh) 一种视频插帧方法和装置
KR101034080B1 (ko) 균일한 비디오 디코딩 및 디스플레이
KR101477434B1 (ko) 멀티미디어 프로세서에서의 비순서적 커맨드 실행
US20150296213A1 (en) Pipelined Video Decoder System
US20210160577A1 (en) Method for playing video, electronic device and storage medium
US11600299B2 (en) Video processing method and apparatus, terminal, and storage medium
CN107493510B (zh) 直播间内直播流播放方法、装置、计算机存储介质及设备
CN110708609A (zh) 一种视频播放方法及装置
CN106940722B (zh) 一种图片显示方法及装置
CN107454457B (zh) 切换录屏直播分辨率的方法及装置
JP7067655B2 (ja) 画像コーディング装置、画像デコーディング装置、及び画像処理機器
CN115134629A (zh) 视频传输方法、系统、设备及存储介质
US10440359B2 (en) Hybrid video encoder apparatus and methods
CN117135403A (zh) 视频播放方法、装置、电子设备及存储介质
CN116781992A (zh) 视频生成方法、装置、电子设备及存储介质
US20120106860A1 (en) Image processing device and image processing method
CN113923507B (zh) Android端的低延迟视频渲染方法及装置
CN113709447B (zh) 一种终端设备播放性能的检测方法和装置
CN117135404A (zh) 视频播放方法、装置、电子设备及存储介质
CN113377455A (zh) 一种媒体组件的切换方法、切换装置、存储介质及电子设备
CN108111900B (zh) 一种播放速度控制方法及装置
CN112004112A (zh) 硬件视频编码器的验证方法、装置、电子设备及存储介质
CN117135411A (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