一种视频播放方法及装置制造方法及图纸

技术编号:32782710 阅读:14 留言:0更新日期:2022-03-23 19:41
本发明专利技术提供一种视频播放方法及装置。通过在启动视频播放时,通过对当前创建的surface和当前创建的surface对应的key进行判断,在当前创建的surface和当前创建的surface对应的key发生变化时,确定当前为在视频播放过程中切换出去再切换回来的播放状态,然后再根据视频包的来源,确定如果视频包来自于缓存GOP队列则为旧的,已经播放过的视频,则丢弃,若非来自于GOP队列则为新的视频,渲染所述视频帧输出并与当前创建的surface绑定。从而解决现有视频播放过程中切换出去再切换回来时,导致黑屏或者前后画面不连续等播放体验差的问题,实现改善以及提升用户播放体验的目的。现改善以及提升用户播放体验的目的。现改善以及提升用户播放体验的目的。

【技术实现步骤摘要】
一种视频播放方法及装置


[0001]本专利技术涉及移动终端流媒体播放
,尤其涉及一种视频播放方法及装置。

技术介绍

[0002]基于当前的视频播放技术,在视频启播的时候需要设置给播放器渲染模块一个view组件,view组件是创建UI时最基础的组件。当视频解码输出时需要在这个view组件上进行画面渲染。
[0003]目前,在使用android平台的移动终端中,通常视频解码播放时使用硬解码mediacodec。在视频使用mediacodec硬解码播放的过程中,所使用到的view组件主要包括surfaceview组件和textureview组件。在mediacodec创建后,在进行configure配置时需要绑定用于画面渲染的surface,其中,surface来源于surfaceview生命周期。但是,在视频播放过程中一旦通过菜单键进行前后台切换或者切换到别的应用后切换回来播放,来回切换的操作会导致surface发生销毁再创建的过程。
[0004]而在现有技术中,android平台在surface发生销毁时会停止播放器播放视频,而在surface再次被创建时则会通过设置再次使播放器重新启播,但是在这个停止播放再重新启播的过程中,会导致出现黑屏或者前后画面不连续的问题,导致播放体验差。

技术实现思路

[0005]有鉴于此,本专利技术实施例提供一种视频播放方法及装置,以解决现有视频播放过程中切换出去再切换回来时,导致黑屏或者前后画面不连续等播放体验差的问题。
[0006]为实现上述目的,本专利技术实施例提供如下技术方案:
[0007]本专利技术实施例第一方面公开了一种视频播放方法,所述方法包括:
[0008]当启动视频播放时,获取当前创建的surface和所述当前创建的surface对应的key;
[0009]若所述当前创建的surface经由编解码器进行配置,获取视频包;
[0010]判断所述当前创建的surface是否为非空,以及所述当前创建的surface是否与上一次创建的surface为同一个对象,以及所述当前创建的surface对应的key是否与所述上一次创建的surface对应的key相同;
[0011]若任一判断为否,将所述当前创建的surface设置为true;
[0012]对所述视频包进行解码,得到解码后的视频帧;
[0013]判断所述视频帧的来源是否为缓存GOP队列;
[0014]若是,则丢弃所述视频帧;
[0015]若否,则渲染所述视频帧,并输出至设置为true的当前创建的surface。
[0016]可选的,还包括:
[0017]若所述当前创建的surface未经由编解码器进行配置,获取解复用视频队列中的视频包;
[0018]判断来自解复用视频队列中的视频包是否为关键帧;
[0019]若所述来自解复用视频队列中的视频包是关键帧,清空缓存GOP队列,并将所述来自解复用视频队列中的视频包添加至所述缓存GOP队列,所述缓存GOP队列的参数buffer_deep递增1;
[0020]若所述来自解复用视频队列中的视频包不是关键帧,则将所述来自解复用视频队列中的视频包直接添加至所述缓存GOP队列,所述缓存GOP队列的参数buffer_deep递增1。
[0021]可选的,所述获取视频包,包括:
[0022]判断所述缓存GOP队列的参数buffer_index与参数buffer_deep是否相等;
[0023]若相等,由解复用视频队列中获取视频包;
[0024]若不相等,获取所述缓存GOP队列中的第一个视频包,所述缓存GOP队列的参数buffer_index递增1。
[0025]可选的,还包括:
[0026]若所述当前创建的surface为非空,所述当前创建的surface与上一次创建的surface为同一个对象,所述当前创建的surface对应的key与所述上一次创建的surface对应的key相同,对所述视频包进行解码,得到解码后的视频帧。
[0027]可选的,还包括:
[0028]在渲染所述视频帧并输出的过程中,当接收到暂停播放触发指令时,将所述当前创建的surface和所述当前创建的surface对应的key设置为空。
[0029]本专利技术实施例第二方面一种视频播放装置,其特征在于,所述视频播放装置包括:数据模块、解复用模块、解码模块和渲染模块;
[0030]所述数据模块,用于当启动视频播放时,获取当前创建的surface和所述当前创建的surface对应的key;若所述当前创建的surface经由所述解码模块进行配置,获取视频包;判断所述当前创建的surface是否为非空,以及所述当前创建的surface是否与上一次创建的surface为同一个对象,以及所述当前创建的surface对应的key是否与所述上一次创建的surface对应的key相同;若任一判断为否,则通过所述解复用模块和所述解码模块将所述当前创建的surface设置为true;
[0031]所述解码模块,用于对所述视频包进行解码,得到解码后的视频帧,判断所述视频帧的来源是否为缓存GOP队列,若是,则丢弃所述视频帧;若否,则执行所述渲染模块;
[0032]所述渲染模块,用于渲染所述视频帧,并输出至设置为true的当前创建的surface。
[0033]可选的,所述数据模块,还用于,若所述当前创建的surface未经由所述解码模块进行配置,获取所述解复用模块输出的视频队列中的视频包;判断所述解复用模块输出的视频队列中的视频包是否为关键帧;若所述解复用模块输出的视频队列中的视频包是关键帧,清空缓存GOP队列,并将所述解复用模块输出的视频队列中的视频包添加至所述缓存GOP队列,所述缓存GOP队列的参数buffer_deep递增1;若所述视频包不是关键帧,则将所述解复用模块输出的视频队列中的视频包直接添加至所述缓存GOP队列,所述缓存GOP队列的参数buffer_deep递增1。
[0034]可选的,所述获取视频包的数据模块,具体用于:
[0035]判断所述缓存GOP队列的参数buffer_index与参数buffer_deep是否相等;若相
等,由所述解复用模块输出的视频队列中获取视频包;若不相等,获取所述缓存GOP队列中的第一个视频包,所述缓存GOP队列的参数buffer_index递增1。
[0036]可选的,所述数据模块,还用于:
[0037]若所述当前创建的surface为非空,所述当前创建的surface与上一次创建的surface为同一个对象,所述当前创建的surface对应的key与所述上一次创建的surface对应的key相同,执行所述解码模块;
[0038]所述解码模块,用于对所述视频包进行解码,得到解码后的视频帧。
[0039]可选的,所述解码模块,还用于在所述渲染模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种视频播放方法,其特征在于,所述方法包括:当启动视频播放时,获取当前创建的surface和所述当前创建的surface对应的key;若所述当前创建的surface经由编解码器进行配置,获取视频包;判断所述当前创建的surface是否为非空,以及所述当前创建的surface是否与上一次创建的surface为同一个对象,以及所述当前创建的surface对应的key是否与所述上一次创建的surface对应的key相同;若任一判断为否,将所述当前创建的surface设置为true;对所述视频包进行解码,得到解码后的视频帧;判断所述视频帧的来源是否为缓存GOP队列;若是,则丢弃所述视频帧;若否,则渲染所述视频帧,并输出至设置为true的当前创建的surface。2.根据权利要求1所述的方法,其特征在于,还包括:若所述当前创建的surface未经由编解码器进行配置,获取解复用视频队列中的视频包;判断来自解复用视频队列中的视频包是否为关键帧;若所述来自解复用视频队列中的视频包是关键帧,清空缓存GOP队列,并将所述来自解复用视频队列中的视频包添加至所述缓存GOP队列,所述缓存GOP队列的参数buffer_deep递增1;若所述来自解复用视频队列中的视频包不是关键帧,则将所述来自解复用视频队列中的视频包直接添加至所述缓存GOP队列,所述缓存GOP队列的参数buffer_deep递增1。3.根据权利要求1所述的方法,其特征在于,所述获取视频包,包括:判断所述缓存GOP队列的参数buffer_index与参数buffer_deep是否相等;若相等,由解复用视频队列中获取视频包;若不相等,获取所述缓存GOP队列中的第一个视频包,所述缓存GOP队列的参数buffer_index递增1。4.根据权利要求1所述的方法,其特征在于,还包括:若所述当前创建的surface为非空,所述当前创建的surface与上一次创建的surface为同一个对象,所述当前创建的surface对应的key与所述上一次创建的surface对应的key相同,对所述视频包进行解码,得到解码后的视频帧。5.根据权利要求1所述的方法,其特征在于,还包括:在渲染所述视频帧并输出的过程中,将所述当前创建的surface和所述当前创建的surface对应的key设置为空。6.一种视频播放装置,其特征在于,所述视频播放装置包括:数据模块、解复用模块、解码模块和渲染模块;所述数据模块,用于当启动视频播放时,获取当前创建的surface和对应所述当前创建的surfac...

【专利技术属性】
技术研发人员:陈小波田细亚李云龙
申请(专利权)人:湖南快乐阳光互动娱乐传媒有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1