视频流播放方法、装置、设备和存储介质与流程
未命名
09-29
阅读:63
评论:0
1.本发明涉及互联网技术领域,尤其涉及一种视频流播放方法、装置、设备和存储介质。
背景技术:
2.流媒体是指采用流式传输的方式在互联网进行播放的媒体格式,常见的比如视频流等。为了降低视频流的传输和存储成本,通常会对视频流对应的原始视频文件进行编码,以压缩视频文件中的冗余信息;在获取到已被编码的视频流之后,根据其对应的编码格式再对其进行解码,也即解压缩,以得到可用于显示的视频文件。其中,常用的编解码格式包括:高级视频编码(advanced video coding,简称avc)也即h.264,高效率视频编码(high efficiency video coding,简称hevc)也即h.265等。在进行解码时,可以通过显卡的视频加速功能对视频流进行硬件解码,也可通过运行于cpu上的解码器进行软件解码。
3.web端的播放器在对视频流进行解码时,可能由于web端未提供与相应编码格式的硬件解码对应的应用程序编程接口,而无法进行硬件解码,只能采用软件解码的方式对视频流进行解码。在对视频流进行软件解码时,包括对视频流中的视频帧的解码,以及对视频流中的音频帧的解码。通常播放器对音频帧的解码速度较快,能满足各种播放场景的需求,但是对视频帧的解码速度则较慢。在对视频流中的视频帧进行解码时,web端对应的服务器出于安全性的考虑,一般地,web端的播放器建立的一个线程通常只允许调用一个单线程解码的视频解码器,单个单线程解码的视频解码器的解码效率受限,无法适应帧率较高的视频流的解码需求,影响用户体验,比如:在倍速播放场景下会出现视频卡顿等情况。
技术实现要素:
4.本发明实施例提供一种视频流播放方法、装置、设备和存储介质,用以提升web端播放器对视频流中的视频帧的解码效率。
5.第一方面,本发明实施例提供一种视频流播放方法,应用于web端的播放器,所述方法包括:
6.响应于视频播放请求,获取与所述视频播放请求对应的待解码视频流,所述待解码视频流中包括待解码视频帧和待解码音频帧;
7.根据所述待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器;
8.通过多个所述视频解码器解码所述待解码视频帧,以得到所述待解码视频流对应的视频帧数据;
9.通过音频解码器解码所述待解码音频帧,以得到所述待解码视频流对应的音频帧数据;
10.播放所述视频帧数据和所述音频帧数据。
11.第二方面,本发明实施例提供一种视频流播放装置,应用于web端的播放器,所述装置包括:
12.获取模块,用于响应于视频播放请求,获取与所述视频播放请求对应的待解码视频流;
13.处理模块,处理模块,用于根据所述待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器;通过多个所述视频解码器解码所述待解码视频帧,以得到所述待解码视频流对应的视频帧数据;通过音频解码器解码所述待解码音频帧,以得到所述待解码视频流对应的音频帧数据;
14.播放模块,用于播放所述视频帧数据和所述音频帧数据。
15.第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现如第一方面所述的视频流播放方法。
16.第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如第一方面所述的视频流播放方法。
17.在本发明实施例提供的方案中,web端的播放器响应于视频播放请求,获取与视频播放请求对应的待解码视频流,待解码视频流中包括待解码视频帧和待解码音频帧;然后,根据待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器,通过多个视频解码器解码待解码视频帧,以得到待解码视频流对应的视频帧数据;通过音频解码器解码待解码音频帧,以得到待解码视频流对应的音频帧数据;最后,播放视频帧数据和所述音频帧数据。本方案中,web端的播放器通过建立多个线程,使得在符合每个线程只能对应一个单线程解码的视频解码器的安全要求下,同时可以使用多个单线程解码的视频解码器对待解码视频流中的待解码视频帧进行解码,从而有效提高视频帧的解码效率,保证web端视频播放的流畅性。
附图说明
18.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明实施例提供的一种视频流播放方法的流程图;
20.图2为本发明实施例提供的一种视频流的播放过程示意图;
21.图3为本发明实施例提供的另一种视频流播放过程的示意图;
22.图4为本发明实施例提供的另一种视频流播放方法的流程图;
23.图5为本发明实施例提供的又一种视频流播放方法的流程图;
24.图6为本发明实施例提供的又一种视频流播放过程的示意图;
25.图7为本发明实施例提供的一种视频流播放装置的结构示意图;
26.图8为与图7所示实施例提供的视频流播放装置对应的电子设备的结构示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.需要说明的是,本发明实施例中所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
29.另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
30.本发明实施例提供的视频流播放方法可以由一电子设备来执行,该电子设备可以是诸如pc机、笔记本电脑、智能手机等终端设备,也可以是服务器。该服务器可以是包含一独立主机的物理服务器,或者也可以为虚拟服务器,或者也可以为云端服务器或服务器集群。
31.图1为本发明实施例提供的一种视频流播放方法的流程图,应用于web端的服务器,如图1所示,可以包括如下步骤:
32.101、响应于视频播放请求,获取与视频播放请求对应的待解码视频流,待解码视频流中包括待解码视频帧和待解码音频帧。
33.102、根据待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器。
34.103、通过多个线程对应的多个视频解码器解码待解码视频帧,以得到待解码视频流对应的视频帧数据。
35.104、通过音频解码器解码待解码音频帧,以得到待解码视频流对应的音频帧数据。
36.105、播放视频帧数据和音频帧数据。
37.其中,web端的播放器指可在web浏览器中运行的播放器。根据安装web浏览器的终端设备的差异,web端的播放器包括:电脑web端的播放器和移动web端的播放器,比如手机web端的播放器等,本实施例中对web端的播放器的类别不作限制。另外,为便于表述,在下文中将web端的播放器简述为播放器。
38.需要说明的是,本实施例中,如未作特殊说明则提及的视频解码器均为单线程解码的视频解码器,单线程解码即视频解码器在对视频帧进行解码时仅通过一个线程执行解码操作。
39.图2为本发明实施例提供的一种视频流的播放过程示意图。如图2所示,播放器在进行视频流播放时,其过程可以概括为:第一,视频流获取过程,包括:响应于用户的视频播放请求,获取已被编码压缩的视频流,也即待解码视频流,待解码视频流中包含待解码的视频帧和待解码音频帧。其中,待解码的视频流在进行编码压缩后,通常被封装为相应的视频格式进行流式传输,比如:可被封装为mp4、flv、avi等格式。第二,解复用过程,包括:播放器通过解复用器对获取到的封装好的待解码视频流进行拆解,从而得到一帧帧被压缩过的视频帧(即待解码视频帧)和音频帧(即待解码音频帧)。第三,解码过程,包括:播放器对应设置有音频解码器和视频解码器,针对待解码音频帧,通过音频解码器进行解码,以得到一帧帧的无压缩音频帧数据(以下简称音频帧数据);针对待解码视频帧,通过视频解码器进行
解码,以得到一帧帧的无压缩视频帧数据(以下简称视频帧数据)。其中,在解码待解码视频帧时,具体地,播放器建立一个线程,也即在播放器内启动一个worker线程,并在该线程下调用一个视频解码器,以对待解码视频帧进行解码。第四,播放过程,包括:将无压缩的视频帧数据和无压缩的音频帧数据传输给与视频播放相关的硬件,比如:图形处理器(graphics processing unit,简称gpu)等,以进行视频播放。
40.本方案聚焦于图2所示的视频流播放过程中的待解码视频帧的解码过程,其他与视频流播放相关的内容比如:解复用过程、待解码音频帧的解码过程、解码后的播放过程等,可参考相关技术,本方案中不再进行赘述。
41.相关技术中,在对视频帧进行解码时,web端对应的服务器为了保证安全性,针对播放器建立的一个线程,通常只允许调用一个单线程解码的视频解码器。容易理解的是,单个单线程解码的视频解码器的解码能力是有限的,随着视频编码技术的发展和视频播放需求的增加,单个单线程解码的视频解码器的解码能力无法适应一些特定编码格式或者特殊播放场景的解码需求。比如:一些手机web端的播放器对应的视频解码器的解码能力不能满足h.265这种编码格式的视频流的视频帧解码需求,从而导致播放器无法播放以h.265格式编码的视频流;又比如:在快速播放也即倍速播放场景下,播放器对应的视频解码器的解码能力不足,导致视频播放出现卡顿等情况,影响用户体验。
42.为解决上述至少一个技术问题,本发明实施例提供了图1所示的视频流播放方法。以下结合图3对图1所示的视频流播放方法进行说明,图3为本发明实施例提供的另一种视频流播放过程的示意图。
43.如图3所示,首先,响应于用户的视频播放请求,获取与视频播放请求对应的待解码视频流。之后,根据待解码视频流,建立n个线程,分别为线程1、线程2、
…
、线程n。其中,每个线程分别对应于一个视频解码器,比如:线程1对应视频解码器1也即线程1调用视频解码器1,类似地,线程2对应视频解码器2,
…
,线程n对应视频解码器n。然后,通过n个线程对应的n个视频解码器解码获取到的待解码视频流中的待解码视频帧,以得到视频帧数据1、视频帧数据2、
…
、视频帧数据n。根据视频帧数据1、视频帧数据2、
…
、视频帧数据n,确定待解码视频流对应的视频帧数据。待解码视频流中的待解码音频帧通过音频解码器进行解码,以得到待解码视频流对应的音频帧数据。最后,同步播放由n个视频解码器解码得到的视频帧数据和音频解码器解码得到的音频帧数据。
44.其中,可选地,可以根据待解码视频流对应的帧率,确定要建立的线程数量,其中,帧率为单位时间内显示的视频帧帧数。例如,当待解码视频流对应的帧率小于第一阈值时,建立第一数量的线程;当待解码视频流对应的帧率大于等于第一阈值小于第二阈值时,建立第二数量的线程;当待解码视频流对应的帧率大于等于第二阈值时,建立第三数量的线程等等。其中,第一阈值、第二阈值与其对应的线程数量可进行自定义设置。
45.需要说明的是,本实施例中,播放器对应的编程语言与解码器对应的编程语言不同,比如:播放器使用javascript语言实现,解码器使用c++语言实现,为保证播放器内建立或者说启动的线程能够调用解码器,通常使用webassembly也即wasm实现播放器建立的线程对解码器的调用。
46.若将使用javascript语言的播放器看作js端,将wasm和使用c++语言的解码器看作wasm端,则相关技术中,js端仅建立一个线程,出于安全考虑,wasm端对应的只能调用一
个视频解码器;而本实施例提供的视频流播放方法,可以理解为在js端建立多个线程,由此虽然每个线程仍然只调用一个视频解码器,但是在js端建立多个线程可以实现wasm端多个视频解码器的并行调用,从而提高播放器对应的视频解码性能。
47.综上,本方案在对待解码视频流进行解码时,根据待解码视频流,建立多个线程,通过与多个线程一一对应的多个视频解码器解码待解码视频流中的待解码视频帧,既考虑到了安全性,保证了每个线程仅调用一个视频解码器且该视频解码器为单线程解码,又通过建立多个线程实现了多个视频解码器同时解码同一个待解码视频流中的待解码视频帧,提升了播放器对应解码器的视频解码能力,保证了视频解码效率,使得web端播放器能适应视频流播放的多种场景需求。
48.实际应用过程中,在播放视频流的过程中,还可以结合播放器对应的硬件环境,确定用于解码待解码视频流的线程数量。如图4所示,图4为本发明实施例提供的另一种视频流播放方法的流程图,应用于web端的播放器,可以包括如下步骤:
49.401、响应于视频播放请求,获取与视频播放请求对应的待解码视频流,待解码视频流中包括待解码视频帧和待解码音频帧。
50.402、建立测试线程,测试线程对应于一个视频解码器;通过测试线程对应的视频解码器解码预设的待测试视频流中的测试视频帧,以确定当前硬件环境下视频解码器对应的视频解码能力。
51.403、根据当前硬件环境下视频解码器对应的解码能力和待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器。
52.404、通过多个线程对应的多个视频解码器解码待解码视频帧,以得到待解码视频流对应的视频帧数据;通过音频解码器解码待解码音频帧,以得到待解码视频流对应的音频帧数据。
53.405、播放视频帧数据和音频帧数据。
54.其中,步骤401、步骤404和步骤405的具体实施过程可参考前述实施例,本实施例中不再进行赘述。
55.可以理解的是,视频解码器作为运行于cpu上的软件程序,其视频解码能力与cpu的运行状态相关联,换言之,视频解码器的视频解码能力会随着其所处的硬件环境的变化而变化。例如,某一cpu上运行的视频解码器,在不同时刻表现出的视频解码能力不同,或者,不同cpu上运行的同一视频解码器,由于cpu的差异表现出的视频解码能力也不相同。
56.实际应用中,当需要对待解码视频流中的待解码视频帧进行解码时,如果建立的线程过多,会造成资源浪费;如果建立的线程过少,会无法满足待解码视频流对应的视频解码需求。
57.本实施中,为了在满足待解码视频流的视频解码需求的情况下,又不造成资源浪费,在为待解码视频流建立多个线程之前,先建立一个测试线程,通过该测试线程调用一个视频解码器对预先设置的待测试视频流中的测试视频帧进行解码,以确定当前硬件环境下视频解码器对应的视频解码能力;之后,基于确定的视频解码能力,确定解码待解码视频流中的待解码视频帧要建立的线程数量。其中,预先设置的待测试视频流可以是一个包含有设定数量测试视频帧的视频流,比如:包含有15个测试视频帧的视频流。其中,测试视频帧已被编码压缩,为待解码视频帧。
58.可选地,可以预先存储对应于多种编码格式的多个待测试视频流,在确定当前硬件环境下视频解码器对应的视频解码能力时,从多个待测试视频流中确定出与待解码视频流对应的编码格式相同的目标待测试视频流,并对目标待测试视频流中的测试视频帧进行视频解码,之后,根据目标待测试视频流的视频解码结果,确定当前硬件环境下视频解码器对应的视频解码能力。
59.可选地,视频解码器的解码能力可通过单位时间内解码的视频帧的数量来表征;或者,通过解码得到的视频帧数据的数量来表征。
60.可选地,待解码视频流的视频解码需求可以通过待解码视频流对应的帧率表征。相应地,在确定当前硬件环境下视频解码器的视频解码能力之后,可以根据当前硬件环境下视频解码器的视频解码能力和待解码视频流对应的帧率,确定并建立匹配数量的线程。举例来说,假设当前硬件环境下视频解码器单位时间内能够解码m个视频帧,待解码视频流对应的帧率为单位时间内显示2m个视频帧,则可以建立2个线程,用于调用2个视频解码器对待解码视频流进行解码。
61.本实施例中,在为待解码视频流建立多个线程时,通过测试当前硬件环境下视频解码器的视频解码能力,建立与硬件环境和视频解码需求相适应数量的线程,能够在既满足待解码视频流的解码需求的情况下,又不造成资源浪费。
62.图5为本发明实施例提供的又一种视频流播放方法的流程图,应用于web端的播放器,可以包括如下步骤:
63.501、响应于视频播放请求,获取与视频播放请求对应的待解码视频流,待解码视频流中包括待解码视频帧和待解码音频帧。
64.502、根据待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器。
65.503、根据多个线程对应的线程数量,确定待解码视频流对应的多个目标待解码视频帧队列,多个目标待解码视频帧队列与多个线程一一对应。
66.504、通过多个视频解码器分别解码多个目标待解码视频帧队列中包含的待解码视频帧,以得到多个目标待解码视频帧队列分别对应的目标视频帧数据。
67.505、根据目标视频帧数据,确定待解码视频流对应的视频帧数据。
68.506、通过音频解码器解码待解码音频帧,以得到待解码视频流对应的音频帧数据。
69.507、播放视频帧数据和音频帧数据。
70.其中,步骤501、步骤502、步骤506和步骤507的具体实施过程可参考前述实施例,本实施例中不再进行赘述。
71.实际应用中,待解码视频流在进行传输时,待解码视频帧通常以画面组(group of picture,简称gop)为单位进行传输,画面组是待解码视频流中一组连续的画面,一个画面组中包含有多个待解码视频帧。
72.可以理解的是,播放器在获取待解码视频流时,实际上是逐个获取待解码视频流对应的画面组。为保证解码的实时性,视频解码器对当前获取到的画面组进行解码。在视频解码时以画面组为单位进行解码,因此,确定待解码视频流对应的多个目标待解码视频帧队列,也可以理解为确定多个待解码画面组队列。播放器每获取到一个画面组,就确定其所属的目标待解码视频帧队列,以便视频解码器对其进行视频解码。具体实施过程中,多个目
标待解码视频帧队列的数量与建立的多个线程的数量匹配,每个目标待解码视频帧队列与一个线程对应,每个目标待解码视频帧队列中以画面组为单位包含有多个待解码视频帧。
73.在一可选实施例中,通过多个视频解码器分别解码多个目标待解码视频帧队列中画面组所包含的多个待解码视频帧,以得到多个目标待解码视频帧队列分别对应的目标视频帧数据,包括:确定待解码视频流包含的多个画面组分别所属的目标待解码视频帧队列,通过多个视频解码器分别解码多个目标待解码视频帧队列中的画面组所包含的多个待解码视频帧,以得到多个目标待解码视频帧队列分别对应的目标视频帧数据。
74.可选地,播放器在获取到某一画面组之后,可根据当前多个目标待解码视频帧队列中分别包含的未被解码的画面组的数量,确定当前获取的画面组所属的目标待解码视频帧队列。
75.为便于理解,结合图6举例说明。图6为本发明实施例提供的又一种视频流播放过程的示意图,如图6所示,假设待解码视频流包含有若干个画面组,分别为gop1、gop2、gop3等,播放器在获取待解码视频流时,按照gop1、gop2、gop3
…
的顺序依次获取若干个画面组。假设根据待解码视频流建立了2个线程,则对应的确定2个目标待解码视频帧队列,分别为目标待解码视频帧队列1和目标待解码视频帧队列2。其中,目标待解码视频帧队列1对应于线程1,线程1调用视频解码器1;目标待解码视频帧队列2对应于线程2,线程2调用视频解码器2。
76.当播放器获取到gop1时,由于目标待解码视频帧队列1和目标待解码视频帧队列2中均未包含任何未被解码的画面组,因此,既可以将gop1归属于目标待解码视频帧队列1,也可以将gop1归属于目标待解码视频帧队列2,图6所示意的情形中,将gop1归属于目标待解码视频帧队列1。
77.当播放器获取到gop2时,由于目标待解码视频帧队列1已经包含有gop1,因此,将gop2归属于目标待解码视频帧队列2。之后,再将gop3归属于目标待解码视频帧队列1,以此类推。也就是说,播放器在获取到待解码视频流对应的若干个画面组之后,根据获取顺序,将若干个画面组交替归属于确定的多个目标待解码视频帧队列。
78.针对目标待解码视频帧队列1中的gop1、gop3等画面组,由视频解码器1对其进行解码,以得到目标视频帧数据1。针对目标待解码视频帧队列2中的gop2等画面组,由视频解码器2对其进行解码,以得到目标视频帧数据2。之后,根据目标视频帧数据1和目标视频帧数据2,确定待解码视频流对应的视频帧数据。最后,播放待解码视频流对应的视频帧数据和通过音频解码器解码待解码视频流中的待解码音频帧得到的音频帧数据。
79.本方案中,根据待解码视频流,建立多个线程,并根据建立的线程数量确定待解码视频流对应的多个目标待解码视频帧队列。在对待解码视频流进行解码时,每个线程对应的视频解码器对该线程对应的目标待解码视频帧队列中的画面组进行解码,从而可以实现多个画面组的并行解码,保证了视频解码效率,使得web端播放器能适应视频流播放的多种场景需求。
80.以下将详细描述本发明的一个或多个实施例的视频流播放装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
81.图7为本发明实施例提供的一种视频流播放装置的结构示意图,应用于web端的播放器,如图7所示,该装置包括:获取模块11、处理模块12、播放模块13。
82.获取模块11,用于响应于视频播放请求,获取与所述视频播放请求对应的待解码视频流,所述待解码视频流中包括待解码视频帧和待解码音频帧。
83.处理模块12,用于根据所述待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器;通过多个所述视频解码器解码所述待解码视频帧,以得到所述待解码视频流对应的视频帧数据;通过音频解码器解码所述待解码音频帧,以得到所述待解码视频流对应的音频帧数据。
84.播放模块13,用于播放所述视频帧数据和所述音频帧数据。
85.可选地,所述处理模块12,具体用于建立测试线程,所述测试线程对应于一个视频解码器;通过所述测试线程对应的视频解码器解码预设的待测试视频流中的测试视频帧,以确定当前硬件环境下所述视频解码器对应的视频解码能力;根据所述视频解码能力和所述待解码视频流,建立多个线程。
86.可选地,所述处理模块12,还具体用于根据所述视频解码能力和所述待解码视频流对应的帧率,建立多个线程。
87.可选地,所述处理模块12,还具体用于根据所述多个线程对应的线程数量,确定所述待解码视频流对应的多个目标待解码视频帧队列,所述多个目标待解码视频帧队列与所述多个线程一一对应;通过多个所述视频解码器分别解码所述多个目标待解码视频帧队列中包含的所述待解码视频帧,以得到所述多个目标待解码视频帧队列分别对应的目标视频帧数据;根据所述目标视频帧数据,确定所述待解码视频流对应的视频帧数据。
88.可选地,所述待解码视频流包括多个画面组,每个画面组中包含多个所述待解码视频帧,所述处理模块12,还具体用于确定所述多个画面组所属的目标待解码视频帧队列;通过多个所述视频解码器分别解码所述多个目标待解码视频帧队列中的画面组所包含的多个待解码视频帧,以得到所述多个目标待解码视频帧队列分别对应的目标视频帧数据。
89.可选地,所述处理模块12,还具体用于根据所述多个目标待解码视频帧队列中未被解码的画面组的数量,确定当前获取的画面组所属的目标待解码视频帧队列。
90.可选地,所述播放器使用第一编程语言,所述解码器使用第二编程语言,所述播放器建立的线程通过webassembly调用所述解码器。
91.图7所示装置可以执行前述实施例中介绍的步骤,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
92.在一个可能的设计中,上述图7所示视频流播放装置的结构可实现为一电子设备,如图8所示,该电子设备可以包括:存储器21、处理器22、通信接口23。其中,存储器21上存储有可执行代码,当所述可执行代码被处理器22执行时,使处理器22至少可以实现如前述实施例中提供的视频流播放方法。
93.另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述实施例中提供的视频流播放方法。
94.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
95.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
96.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种视频流播放方法,其特征在于,应用于web端的播放器,包括:响应于视频播放请求,获取与所述视频播放请求对应的待解码视频流,所述待解码视频流中包括待解码视频帧和待解码音频帧;根据所述待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器;通过多个所述视频解码器解码所述待解码视频帧,以得到所述待解码视频流对应的视频帧数据;通过音频解码器解码所述待解码音频帧,以得到所述待解码视频流对应的音频帧数据;播放所述视频帧数据和所述音频帧数据。2.根据权利要求1所述的方法,其特征在于,所述根据所述待解码视频流,建立多个线程,包括:建立测试线程,所述测试线程对应于一个视频解码器;通过所述测试线程对应的视频解码器解码预设的待测试视频流中的测试视频帧,以确定当前硬件环境下所述视频解码器对应的视频解码能力;根据所述视频解码能力和所述待解码视频流,建立多个线程。3.根据权利要求2所述的方法,其特征在于,所述根据所述视频解码能力和所述待解码视频,建立多个线程,包括:根据所述视频解码能力和所述待解码视频流对应的帧率,建立多个线程。4.根据权利要求1所述的方法,其特征在于,所述通过多个所述视频解码器解码所述待解码视频帧,以得到所述待解码视频流对应的视频帧数据,包括:根据所述多个线程对应的线程数量,确定所述待解码视频流对应的多个目标待解码视频帧队列,所述多个目标待解码视频帧队列与所述多个线程一一对应;通过多个所述视频解码器分别解码所述多个目标待解码视频帧队列中包含的所述待解码视频帧,以得到所述多个目标待解码视频帧队列分别对应的目标视频帧数据;根据所述目标视频帧数据,确定所述待解码视频流对应的视频帧数据。5.根据权利要求4所述的方法,其特征在于,所述待解码视频流包括多个画面组,每个画面组中包含多个所述待解码视频帧,所述通过多个所述视频解码器分别解码所述多个目标待解码视频帧队列中包含的所述待解码视频帧,以得到所述多个目标待解码视频帧队列分别对应的目标视频帧数据,包括:确定所述多个画面组所属的目标待解码视频帧队列;通过多个所述视频解码器分别解码所述多个目标待解码视频帧队列中的画面组所包含的多个待解码视频帧,以得到所述多个目标待解码视频帧队列分别对应的目标视频帧数据。6.根据权利要求5所述的方法,其特征在于,所述确定所述多个画面组所属的目标待解码视频帧队列,包括:根据所述多个目标待解码视频帧队列中未被解码的画面组的数量,确定当前获取的画面组所属的目标待解码视频帧队列。7.根据权利要求1至6中任一项所述的方法,其特征在于,所述播放器使用第一编程语言,所述解码器使用第二编程语言,所述播放器建立的线程通过webassembly调用所述解码
器。8.一种视频流播放装置,其特征在于,应用于web端的播放器,包括:获取模块,用于响应于视频播放请求,获取与所述视频播放请求对应的待解码视频流,所述待解码视频流中包括待解码视频帧和待解码音频帧;处理模块,用于根据所述待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器;通过多个所述视频解码器解码所述待解码视频帧,以得到所述待解码视频流对应的视频帧数据;通过音频解码器解码所述待解码音频帧,以得到所述待解码视频流对应的音频帧数据;播放模块,用于播放所述视频帧数据和所述音频帧数据。9.一种电子设备,其特征在于,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至7中任一项所述的视频流播放方法。10.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至7中任一项所述的视频流播放方法。
技术总结
本发明实施例提供一种视频流播放方法、装置、设备和存储介质,应用于Web端的播放器,包括:响应于视频播放请求,获取与视频播放请求对应的待解码视频流,待解码视频流中包括待解码视频帧和待解码音频帧;根据待解码视频流,建立多个线程,每个线程分别对应于一个视频解码器;通过多个视频解码器解码待解码视频帧,以得到待解码视频流对应的视频帧数据;通过音频解码器解码待解码音频帧,以得到待解码视频流对应的音频帧数据;播放视频帧数据和音频帧数据。本方案在符合每个线程只能对应一个单线程解码的视频解码器的安全要求下,同时使用多个视频解码器对待解码视频帧进行解码,有效提高视频帧的解码效率,保证Web端视频播放的流畅性。畅性。畅性。
技术研发人员:高上 冷志勇 李凤山
受保护的技术使用者:北京花房科技有限公司
技术研发日:2023.06.26
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/