本公开涉及视频播放,尤其涉及一种显示设备、视频无缝切换方法、及存储介质。
背景技术:
1、用户在观看视频的过程中,随时有向上切换或者向下切换视频的需求。无论是本地视频还是在线视频,均需要无缝切换功能。但是,目前安卓系统的播放器mediaplayer没有无缝切换功能。
2、现有技术中,基于安卓系统播放器mediaplayer的视频间切换是通过关闭之前的原始码流,重新启播新规格的码流来实现的。然而,这种视频切换方式会导致播放页面出现短暂的黑屏现象,导致用户观看体验较差。
3、因此,如何实现视频码流之间的无缝切换是当前亟需解决的技术问题。
技术实现思路
1、为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种显示设备和视频无缝切换方法,能够实现安卓系统播放器mediaplayer的视频间无缝切换,避免视频切换过程中出现短暂的黑屏现象。
2、第一方面,本公开提供了一种显示设备,包括:
3、控制器,被配置为:
4、响应于第一播放指令,播放第一视频数据;所述第一播放指令用于指示目标处理模块对第一视频流的第一帧解码完成,所述目标处理模块用于对第一视频流进行解封装处理以及解码处理;
5、在播放所述第一视频数据的过程中,响应于切换指令,停止所述目标处理模块对所述第一视频流的处理,并通过所述目标处理模块对第二视频流进行处理,得到第二视频数据,将所述第一视频数据切换为第二视频数据;所述切换指令用于指示从第一视频流无缝切换到第二视频流;所述第一视频流的编码格式与所述第二视频流的编码格式相同。
6、作为本发明实施例一种可选的实施方式,所述第一视频流无缝切换到所述第二视频流是基于多媒体框架gstreamer中的各个功能插件完成的,所述多媒体框架gstreamer包括以下功能插件:
7、视频源获取插件、码流封装格式插件、解复用器插件、多重队列缓冲插件、视频解码插件、音轨选择插件、音频解码插件、声音处理插件、重采样插件、音画同步插件、视频播放插件、音频播放插件。
8、作为本发明实施例一种可选的实施方式,所述控制器,还被配置为:
9、将第一视频源获取插件、第一码流封装格式插件、第一解复用器插件替换为第二视频源获取插件、第二码流封装格式插件、第二解复用器插件;
10、针对音频通路,将第一音轨选择插件、第一音频解码插件替换为第二音轨选择插件、第二音频解码插件。
11、作为本发明实施例一种可选的实施方式,所述控制器,具体被配置为:
12、所述将所述第一视频数据切换为第二视频数据,包括:
13、基于所述第一解复用器插件获取第一视频流的最后一帧对应的显示时间戳;
14、设置所述第一视频流的最后一帧对应的显示时间戳为所述第二视频流的第一帧对应的显示时间戳,将所述第一视频数据无缝切换为所述第二视频数据。
15、作为本发明实施例一种可选的实施方式,所述控制器,还被配置为:
16、所述通过所述目标处理模块对第二视频流进行处理,还包括:
17、根据所述目标处理模块对所述第二视频流进行解封装,判断所述第二视频流进行解封装后的数据中是否包括第二音频流压缩编码数据;
18、若所述第二视频流进行解封装后的数据中包括第二音频流压缩编码数据,则将所述各个功能插件的时钟切换为音频时钟;
19、基于所述第二解复用器插件,获取第二视频流压缩编码数据和第二音频流压缩编码数据;
20、将所述第二视频流压缩编码数据和所述第二音频流压缩编码数据分别发送给所述多重队列缓冲插件。
21、作为本发明实施例一种可选的实施方式,所述控制器,还被配置为:
22、所述判断所述第二视频流进行解封装后的数据中是否包括第二音频流压缩编码数据,还包括:
23、若所述第二视频流进行解封装后的数据中不包括第二音频流压缩编码数据,则将所述各个功能插件的时钟切换为系统时钟;
24、基于所述第二解复用器插件,获取第二视频流压缩编码数据;
25、将所述第二视频流压缩编码数据发送给所述多重队列缓冲插件。
26、作为本发明实施例一种可选的实施方式,所述控制器,还被配置为:
27、若所述第二视频流进行解封装后的数据中不包括第二音频流压缩编码数据,则基于所述第二解复用器插件创建预设第二音频流压缩编码数据;
28、根据所述预设第二音频流压缩编码数据,创建预设第二音轨选择插件、预设第二音频解码插件;
29、将所述预设第二音轨选择插件、以及所述预设第二音频解码插件与所述多重队列缓冲插件、以及所述声音处理插件进行链接,形成预设音频通路。
30、第二方面,提供一种视频无缝切换方法,所述方法包括:
31、响应于第一播放指令,播放第一视频数据;所述第一播放指令用于指示目标处理模块对第一视频流的第一帧解码完成,所述目标处理模块用于对第一视频流进行解封装处理以及解码处理;
32、在播放所述第一视频数据的过程中,响应于切换指令,停止所述目标处理模块对所述第一视频流的处理,并通过所述目标处理模块对第二视频流进行处理,得到第二视频数据,将所述第一视频数据切换为第二视频数据;所述切换指令用于指示从第一视频流无缝切换到第二视频流;所述第一视频流的编码格式与所述第二视频流的编码格式相同。
33、作为本发明实施例一种可选的实施方式,所述第一视频流无缝切换到所述第二视频流是基于多媒体框架gstreamer中的各个功能插件完成的,所述多媒体框架gstreamer包括以下功能插件:
34、视频源获取插件、码流封装格式插件、解复用器插件、多重队列缓冲插件、视频解码插件、音轨选择插件、音频解码插件、声音处理插件、重采样插件、音画同步插件、视频播放插件、音频播放插件。
35、作为本发明实施例一种可选的实施方式,所述方法还包括:
36、将第一视频源获取插件、第一码流封装格式插件、第一解复用器插件替换为第二视频源获取插件、第二码流封装格式插件、第二解复用器插件;
37、针对音频通路,将第一音轨选择插件、第一音频解码插件替换为第二音轨选择插件、第二音频解码插件。
38、作为本发明实施例一种可选的实施方式,所述将所述第一视频数据切换为第二视频数据,包括:
39、基于所述第一解复用器插件获取第一视频流的最后一帧对应的显示时间戳;
40、设置所述第一视频流的最后一帧对应的显示时间戳为所述第二视频流的第一帧对应的显示时间戳,将所述第一视频数据无缝切换为所述第二视频数据。
41、作为本发明实施例一种可选的实施方式,所述通过所述目标处理模块对第二视频流进行处理,还包括:
42、根据所述目标处理模块对所述第二视频流进行解封装,判断所述第二视频流进行解封装后的数据中是否包括第二音频流压缩编码数据;
43、若所述第二视频流进行解封装后的数据中包括第二音频流压缩编码数据,则将所述各个功能插件的时钟切换为音频时钟;
44、基于所述第二解复用器插件,获取第二视频流压缩编码数据和第二音频流压缩编码数据;
45、将所述第二视频流压缩编码数据和所述第二音频流压缩编码数据分别发送给所述多重队列缓冲插件。
46、作为本发明实施例一种可选的实施方式,所述判断所述第二视频流进行解封装后的数据中是否包括第二音频流压缩编码数据,还包括:
47、若所述第二视频流进行解封装后的数据中不包括第二音频流压缩编码数据,则将所述各个功能插件的时钟切换为系统时钟;
48、基于所述第二解复用器插件,获取第二视频流压缩编码数据;
49、将所述第二视频流压缩编码数据发送给所述多重队列缓冲插件。
50、作为本发明实施例一种可选的实施方式,若所述第二视频流进行解封装后的数据中不包括第二音频流压缩编码数据,则基于所述第二解复用器插件创建预设第二音频流压缩编码数据;
51、根据所述预设第二音频流压缩编码数据,创建预设第二音轨选择插件、预设第二音频解码插件;
52、将所述预设第二音轨选择插件、以及所述预设第二音频解码插件与所述多重队列缓冲插件、以及所述声音处理插件进行链接,形成预设音频通路。
53、第三方面,提供一种计算机可读存储介质,包括:计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如第二方面所示的视频无缝切换方法。
54、第四方面,提供一种计算机程序产品,包括:当计算机程序产品在计算机上运行时,使得计算机实现如第二方面所示的视频无缝切换方法。
55、本公开实施例提供的技术方案与现有技术相比具有如下优点:响应于第一播放指令,播放第一视频数据,其中,第一播放指令用于指示目标处理模块对第一视频流的第一帧解码完成,目标处理模块用于对第一视频流进行解封装处理以及解码处理,在播放第一视频数据的过程中,响应于切换指令,停止目标处理模块对第一视频流的处理,并通过目标处理模块对第二视频流进行处理,得到第二视频数据,将第一视频数据切换为第二视频数据。由于,切换指令用于指示从第一视频流无缝切换到第二视频流,且,第一视频流的编码格式与第二视频流的编码格式相同,所以在视频切换过程中,无需关闭第一视频流,直接通过目标处理模块对第二视频流进行解封装处理以及解码处理,得到第二视频数据,将第一视频数据切换为第二视频数据,可以避免由于关闭原始码流,重新启播新规格的码流,导致播放页面出现的短暂黑屏现象,从而实现不同视频间的无缝切换,提高了用户在视频切换过程中的体验。