CN107786890A - 视频切换方法、装置及存储介质 - Google Patents
视频切换方法、装置及存储介质 Download PDFInfo
- Publication number
- CN107786890A CN107786890A CN201711055276.XA CN201711055276A CN107786890A CN 107786890 A CN107786890 A CN 107786890A CN 201711055276 A CN201711055276 A CN 201711055276A CN 107786890 A CN107786890 A CN 107786890A
- Authority
- CN
- China
- Prior art keywords
- video
- frame
- hardware
- software
- decoder
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000004044 response Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/44004—Processing 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing 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/44016—Processing 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 splicing one content stream with another content stream, e.g. for substituting a video clip
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8193—Monomedia components thereof involving executable data, e.g. software dedicated tools, e.g. video decoder software or IPMP tool
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种视频切换方法、装置及存储介质。本发明当第一路视频流使用硬件解码器进行解码时,对第二路视频流采用软件解码器进行解码,在获取到视频切换指令时,可将所述第二路视频流已经解码的视频帧发送至硬件帧缓存器中,并将第二路视频流使用硬件解码器进行解码,由显示屏从硬件帧缓存器中读取并显示视频帧,从而在仅有一个硬件解码器的情况下,实现了多视频的快速切换,甚至可以达到无缝衔接。
Description
技术领域
本发明涉及视频播放技术领域,尤其涉及一种视频切换方法、装置及存储介质。
背景技术
目前HbbTV标准在欧洲发展非常快速,很多国家的运营商都选择了HbbTV来作为其交互电视的设计方案,且HbbTV已经开始从欧洲往澳洲推广,澳大利亚和新西兰已经运营了几年,目前出口到欧洲的电视,HbbTV已经成为标配。
而随着HbbTV的被接受,其标准也日益更新。最新的HbbTV2.0.1对于广告插入要求极为严格,要求两个视频的切换时间在250ms以内。目前的业内,除非使用支持两个硬件解码器的芯片,否则无法达成。而目前大多的芯片都只有一个硬件解码器。
如果另外一个视频完全使用软件解码,现有的系统级芯片(System on Chip,SOC)基本都无法达到这样的性能要求。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种视频切换方法、装置及存储介质,旨在解决在只有一个硬件解码器的情况下,无法实现视频切换的技术问题。
为实现上述目的,本发明提供一种视频切换方法,所述视频切换方法包括以下步骤:
将第一路视频流发送至硬件解码器和将所述硬件解码器解码获得的第一视频帧发送至与显示屏相连的硬件帧缓存器中,以使所述显示屏读取并显示硬件帧缓存器中的视频帧;
将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧软件帧缓存器;
响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换。
优选地,所述将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器,具体包括:
将第二路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器。
优选地,所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器之前,所述视频切换方法还包括:
停止将所述第一路视频流发送至所述硬件解码器,并停止将所述第二路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中。
优选地,所述停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中之后,所述视频切换方法还包括:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器的步骤。
优选地,所述响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换之后,所述视频切换方法还包括:
将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器;
响应于再次接收到的视频切换指令,将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器,并返回所述将第一路视频流发送至硬件解码器的步骤。
优选地,所述将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器,具体包括:
将所述第一路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器。
优选地,所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器之前,所述视频切换方法还包括:
停止将所述第二路视频流发送至所述硬件解码器,并停止将所述第一路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中。
优选地,所述停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中之后,所述视频切换方法还包括:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器的步骤。
此外,为实现上述目的,本发明还提供一种视频切换装置,所述视频切换装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的视频切换程序,所述视频切换程序配置为实现所述的视频切换方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有视频切换程序,所述视频切换程序被处理器执行时实现所述的视频切换方法的步骤。
本发明当第一路视频流使用硬件解码器进行解码时,对第二路视频流采用软件解码器进行解码,在获取到视频切换指令时,可将所述第二路视频流已经解码的视频帧发送至硬件帧缓存器中,并将第二路视频流使用硬件解码器进行解码,由显示屏从硬件帧缓存器中读取并显示视频帧,从而在仅有一个硬件解码器的情况下,实现了多视频的快速切换,甚至可以达到无缝衔接。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的视频切换装置结构示意图;
图2为本发明视频切换方法第一实施例的流程示意图;
图3为本发明实施例中第一路视频流正常播放的示意图;
图4为本发明实施例中第一路视频流切换到第二路视频流的示意图;
图5为本发明实施例中第二路视频流正常播放的示意图;
图6为本发明视频切换方法第二实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的视频切换装置的结构示意图。
如图1所示,该视频切换装置可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如按键,还可包括遥控器等设备,可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对视频切换装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及视频切换程序。
在图1所示的视频切换装置中,网络接口1004主要用于接收视频流;用户接口1003主要用于接收用户的输入指令;所述视频切换装置通过处理器1001调用存储器1005中存储的视频切换程序,并执行以下操作:
将第一路视频流发送至硬件解码器和将所述硬件解码器解码获得的第一视频帧发送至与显示屏相连的硬件帧缓存器中,以使所述显示屏读取并显示硬件帧缓存器中的视频帧;
将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧软件帧缓存器;
响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
将第二路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
停止将所述第一路视频流发送至所述硬件解码器,并停止将所述第二路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器的步骤。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器;
响应于再次接收到的视频切换指令,将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器,并返回所述将第一路视频流发送至硬件解码器的步骤。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
将所述第一路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
停止将所述第二路视频流发送至所述硬件解码器,并停止将所述第一路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中。
进一步地,处理器1001可以调用存储器1005中存储的视频切换程序,还执行以下操作:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器的步骤。
本实施例通过上述方案,当第一路视频流使用硬件解码器进行解码时,对第二路视频流采用软件解码器进行解码,在获取到视频切换指令时,可将所述第二路视频流已经解码的视频帧发送至硬件帧缓存器中,并将第二路视频流使用硬件解码器进行解码,由显示屏从硬件帧缓存器中读取并显示视频帧,从而在仅有一个硬件解码器的情况下,实现了多视频的快速切换,甚至可以达到无缝衔接。
基于上述硬件结构,提出本发明视频切换方法实施例。
参照图2,图2为本发明视频切换方法第一实施例的流程示意图。
在第一实施例中,所述视频切换方法包括以下步骤:
S10:将第一路视频流发送至硬件解码器和将所述硬件解码器解码获得的第一视频帧发送至与显示屏相连的硬件帧缓存器中,以使所述显示屏读取并显示硬件帧缓存器中的视频帧;
需要说明的是,所述硬件解码器即为图形处理器(Graphics Processing Unit,GPU),其可实现视频流解码的工作,而无需占用中央处理器(Central Processing Unit,CPU)的资源。
可理解的是,所述硬件帧缓存器与所述显示屏相连,显示屏可直接读取并显示硬件帧缓存器中的视频帧。
参照图3,可由第一数据注入程序(即Data Inject1)负责源源不断的将第一路视频流(即Stream1)发送至硬件解码器(即HW Decoder),HW Decoder正常解码,将解码后的第一视频帧Frame发送至硬件帧缓存器(即HW FrameBuffer),并最终由显示屏(即VOUT)读取并显示硬件帧缓存器中的视频帧。
S20:将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器;
需要说明的是,所述软件解码器即为用于对视频流进行解码的程序,其需要占用CPU的资源。
为了防止所述软件解码器占用过多的CPU资源,同时避免第二路视频流出现丢帧现象,本实施例中,可将第二路视频流中的至少一个画面组(Group of Pictures,GOP)发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器,也就是说,所述软件解码器只需要对接收到的GOP进行解码即可,从而防止所述软件解码器占用过多的CPU资源。
在具体实现中,由于不同视频流的GOP帧数不一样,时间长度也不一样,这里可以根据经验,按照软件解码器解码所需预设时间长度(例如:1s,也可为2s、3s等时间长度)来计算,发送至预设数量的GOP到软件解码器,对于常见的视频流而言,软件解码器的解码帧数一般不超过60帧,消耗的CPU资源相对较小。
另外,由于每一个GOP都是可以独立解码的单元,避免了第二路视频流出现丢帧现象。
继续参照图3,可由第二数据注入程序(即DataInject2)负责将第二路视频流(即Stream2)中的至少一个GOP发送至到软件解码器(即SW Decoder)和将解码后的第二视频帧Frame发送至到软件帧缓存器(即SW FrameBuffer)。
S30:响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换。
需要说明的是,所述视频切换指令可以由用户输入,也就是说,接收到的视频切换指令可理解为接收到用户输入的视频切换指令。
当然,所述视频切换指令也可以根据触发条件自动生成,所述触发条件可根据需要进行设置,例如:在第一路视频流通过硬件解码器进行解码持续时间长度时,自动生成所述视频切换指令,此时,可认定为接收到的视频切换指令。
可理解的是,由于所述显示屏可直接读取并显示硬件帧缓存器中的视频帧,故而,在将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器后,所述显示屏也会读取并显示所述第二视频帧。
为避免视频流出现数据丢失,本实施例中,步骤S30中,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器之前,可先停止将所述第一路视频流发送至所述硬件解码器,并停止将所述第二路视频流发送至所述软件解码器;再停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中。
另外,为了防止硬件解码器中还存在残留数据,因此,可在停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中之后,对所述硬件解码器及软件解码器分别进行数据清除处理。
为保证所述第一路视频流解码获得的视频帧均被显示,从而避免第一路视频流解码获得的视频帧被直接丢弃,本实施例中,步骤S30中,在停止将所述第一路视频流发送至所述硬件解码器,停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中之后,可判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器的步骤。
可理解的是,由于预先停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,故而,所述硬件帧缓存器中不会再增加视频帧,此时,可判断所述硬件解码器中的视频帧是否全部被所述显示屏读取;
在所述硬件解码器中的视频帧未全部被所述显示屏读取时,可返回所述判断所述硬件解码器中的视频帧是否全部被所述显示屏读取的步骤。
在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器的步骤,也就是说,在所述硬件解码器中的视频帧全部被所述显示屏读取并显示后,才会将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器。
参照图4,首先断开第一数据注入程序(即Data Inject1)与硬件解码器(即HWDecoder)之间的连接(即停止将所述第一路视频流发送至所述硬件解码器),并断开第二数据注入程序(即DataInject2)与软件解码器(即SW Decoder)之间的连接(即停止将所述第二路视频流发送至所述软件解码器),避免视频数据被丢弃。
然后断开硬件解码器(即HW Decoder)与硬件帧缓存器(即HW FrameBuffer)之间的连接(即停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中),断开软件解码器(即SW Decoder)与软件帧缓存器(即SW FrameBuffer)之间的连接(即停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中),并对硬件解码器(即HWDecoder)与软件解码器(即SW Decoder)分别进行数据清除处理。
在硬件帧缓存器(即HW FrameBuffer)中的第一视频帧全部显示后,可通过帧切换单元(即FrameSwich)将软件帧缓存器(即SW FrameBuffer)中的视频帧发送至硬件帧缓存器(即HW FrameBuffer),这样显示屏(即VOUT)显示完第一视频帧后,会立刻显示第二视频帧,从而达到快速切换,甚至是无缝切换。
参照图5,为了维持第二路视频流能够被正常显示,本实施例中,可将第二路视频流(即Stream2)接入到硬件解码器(即HW Decoder),由于第二数据注入程序(即DataInject2)发送至软件解码器(即SW Decoder)的都是完整的GOP,此时发送至硬件解码器(即HW Decoder)的也是完整的GOP,硬件解码器(即HW Decoder)可以实现对其的快速解码。硬件解码器(即HW Decoder)解码后的视频帧在帧切换单元(即FrameSwich)工作完成之后就马上将接下来解码获取的帧发送至硬件帧缓存器(即HW FrameBuffer),实现第二路视频流的完美对接,不会出现跳帧现象。
本实施例中,当第一路视频流使用硬件解码器进行解码时,对第二路视频流采用软件解码器进行解码,在获取到视频切换指令时,可将所述第二路视频流已经解码的视频帧发送至硬件帧缓存器中,并将第二路视频流使用硬件解码器进行解码,由显示屏从硬件帧缓存器中读取并显示视频帧,从而在仅有一个硬件解码器的情况下,实现了多视频的快速切换,甚至可以达到无缝衔接。
进一步地,如图6所示,基于第一实施例提出本发明视频切换方法第二实施例。
在本实施例中,步骤S30之后,所述视频切换方法还包括:
S40:将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器;
由于第一路视频流可能需要再次播放,因此,可能需要再次进行视频播放,因此,本实施例中,可将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器,便于进行后续的快速切换。
为了防止所述软件解码器占用过多的CPU资源,同时避免第一路视频流出现丢帧现象,本实施例中,可将第一路视频流中的至少一个画面组(Group of Pictures,GOP)发送至软件解码器,将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器,也就是说,所述软件解码器只需要对接收到的GOP进行解码即可,从而防止所述软件解码器占用过多的CPU资源。
在具体实现中,由于不同视频流的GOP帧数不一样,时间长度也不一样,这里可以根据经验,按照软件解码器解码所需预设时间长度(例如:1s,也可为2s、3s等时间长度)来计算,发送至预设数量的GOP到软件解码器,对于常见的视频流而言,软件解码器的解码帧数一般不超过60帧,消耗的CPU资源相对较小。
另外,由于每一个GOP都是可以独立解码的单元,避免了第一路视频流出现丢帧现象。
继续参照图5,可由第一数据注入程序(即DataInject1)负责将第一路视频流(即Stream1)中的至少一个GOP发送至软件解码器(即SW Decoder)和将解码后的第四视频帧Frame发送至软件帧缓存器(即SW FrameBuffer)。
S50:响应于再次接收到的视频切换指令,将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器,并返回步骤S10。
同样,再次接收到的视频切换指令,可以由用户输入,也就是说,再次接收到的视频切换指令可理解为再次接收到用户输入的视频切换指令。
当然,再次接收到的视频切换指令也可以根据触发条件自动生成,所述触发条件可根据需要进行设置,例如:在第一路视频流通过硬件解码器进行解码持续时间长度时,自动生成所述视频切换指令,此时,可认定为再次接收到的视频切换指令。
为避免视频流出现数据丢失,本实施例中,步骤S50中,将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器之前,可先停止将所述第二路视频流发送至所述硬件解码器,并停止将所述第一路视频流发送至所述软件解码器;再停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中。
另外,为了防止硬件解码器中还存在残留数据,因此,可停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中之后,对所述硬件解码器及软件解码器分别进行数据清除处理。
为保证所述第二路视频流解码获得的视频帧均被显示,从而避免第二路视频流解码获得的视频帧被直接丢弃,本实施例中,步骤S50中,在停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中之后,可判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器的步骤。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有视频切换程序,所述视频切换程序被处理器执行时实现如下操作:
将第一路视频流发送至硬件解码器和将所述硬件解码器解码获得的第一视频帧发送至与显示屏相连的硬件帧缓存器中,以使所述显示屏读取并显示硬件帧缓存器中的视频帧;
将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧软件帧缓存器;
响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
将第二路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
停止将所述第一路视频流发送至所述硬件解码器,并停止将所述第二路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器的步骤。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器;
响应于再次接收到的视频切换指令,将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器,并返回所述将第一路视频流发送至硬件解码器的步骤。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
将所述第一路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
停止将所述第二路视频流发送至所述硬件解码器,并停止将所述第一路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中。
进一步地,所述视频切换程序被处理器执行时还实现如下操作:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器的步骤。
本实施例通过上述方案,当第一路视频流使用硬件解码器进行解码时,对第二路视频流采用软件解码器进行解码,在获取到视频切换指令时,可将所述第二路视频流已经解码的视频帧发送至硬件帧缓存器中,并将第二路视频流使用硬件解码器进行解码,由显示屏从硬件帧缓存器中读取并显示视频帧,从而在仅有一个硬件解码器的情况下,实现了多视频的快速切换,甚至可以达到无缝衔接。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种视频切换方法,其特征在于,所述视频切换方法包括以下步骤:
将第一路视频流发送至硬件解码器和将所述硬件解码器解码获得的第一视频帧发送至与显示屏相连的硬件帧缓存器中,以使所述显示屏读取并显示硬件帧缓存器中的视频帧;
将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器;
响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换。
2.如权利要求1所述的视频切换方法,其特征在于,所述将第二路视频流发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器,具体包括:
将第二路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器。
3.如权利要求1所述的视频切换方法,其特征在于,所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器之前,所述视频切换方法还包括:
停止将所述第一路视频流发送至所述硬件解码器,并停止将所述第二路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中。
4.如权利要求3所述的视频切换方法,其特征在于,所述停止将所述硬件解码器解码获得的第一视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第二视频帧发送至软件帧缓存器中之后,所述视频切换方法还包括:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器的步骤。
5.如权利要求1~4中任一项所述的视频切换方法,其特征在于,所述响应于接收到的视频切换指令,将所述软件帧缓存器中的第二视频帧经转换后发送至所述硬件帧缓存器和将所述第二路视频流发送至所述硬件解码器,并将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,以实现视频切换之后,所述视频切换方法还包括:
将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器;
响应于再次接收到的视频切换指令,将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器,并返回所述将第一路视频流发送至硬件解码器的步骤。
6.如权利要求5所述的视频切换方法,其特征在于,所述将所述第一路视频流发送至所述软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器,具体包括:
将所述第一路视频流中的至少一个画面组发送至软件解码器和将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器。
7.如权利要求5所述的视频切换方法,其特征在于,所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器之前,所述视频切换方法还包括:
停止将所述第二路视频流发送至所述硬件解码器,并停止将所述第一路视频流发送至所述软件解码器;
停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中。
8.如权利要求7所述的视频切换方法,其特征在于,所述停止将所述硬件解码器解码获得的第三视频帧发送至所述硬件帧缓存器中,并停止将所述软件解码器解码获得的第四视频帧发送至软件帧缓存器中之后,所述视频切换方法还包括:
判断所述硬件解码器中的视频帧是否全部被所述显示屏读取,在所述硬件解码器中的视频帧全部被所述显示屏读取时,执行所述将所述软件帧缓存器中的第四视频帧经转换后发送至所述硬件帧缓存器的步骤。
9.一种视频切换装置,其特征在于,所述视频切换装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的视频切换程序,所述视频切换程序配置为实现如权利要求1至8中任一项所述的视频切换方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有视频切换程序,所述视频切换程序被处理器执行时实现如权利要求1至8中任一项所述的视频切换方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711055276.XA CN107786890A (zh) | 2017-10-30 | 2017-10-30 | 视频切换方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711055276.XA CN107786890A (zh) | 2017-10-30 | 2017-10-30 | 视频切换方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107786890A true CN107786890A (zh) | 2018-03-09 |
Family
ID=61432623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711055276.XA Pending CN107786890A (zh) | 2017-10-30 | 2017-10-30 | 视频切换方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107786890A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737893A (zh) * | 2018-06-05 | 2018-11-02 | 上海哔哩哔哩科技有限公司 | 基于混合解码实现快速首帧出图的视频播放方法、装置和介质 |
CN109218763A (zh) * | 2018-11-12 | 2019-01-15 | 青岛海信传媒网络技术有限公司 | 一种流媒体视频切换的方法及智能电视 |
CN110113658A (zh) * | 2019-04-04 | 2019-08-09 | 武汉精立电子技术有限公司 | 一种超高分辨率视频播放方法及系统 |
WO2020151397A1 (zh) * | 2019-01-23 | 2020-07-30 | 上海哔哩哔哩科技有限公司 | 软硬件解码分辨率无缝切换方法、装置及存储介质 |
CN112804577A (zh) * | 2019-11-14 | 2021-05-14 | 西安诺瓦星云科技股份有限公司 | 视频切换显示方法及装置、视频处理设备和存储介质 |
CN114363637A (zh) * | 2021-12-08 | 2022-04-15 | 广州方硅信息技术有限公司 | 视频预解码方法、电子设备及计算机可读存储介质 |
CN115174991A (zh) * | 2022-06-28 | 2022-10-11 | Vidaa国际控股(荷兰)公司 | 一种显示设备及视频播放方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130132966A1 (en) * | 2011-05-26 | 2013-05-23 | Rupen Chanda | Video Player Instance Prioritization |
CN103339959A (zh) * | 2011-01-19 | 2013-10-02 | 高通股份有限公司 | 动态视频切换 |
US20160014423A1 (en) * | 2012-11-28 | 2016-01-14 | Cisco Technology, Inc. | Fast Switching Hybrid Video Decoder |
CN105592314A (zh) * | 2015-12-17 | 2016-05-18 | 清华大学 | 并行解码方法和并行解码装置 |
CN105812914A (zh) * | 2014-12-29 | 2016-07-27 | Tcl集团股份有限公司 | 一种视频的混合多路解码方法及装置 |
CN106231343A (zh) * | 2016-10-11 | 2016-12-14 | 青岛海信电器股份有限公司 | 视频播放处理方法、装置及电视 |
CN107071549A (zh) * | 2017-05-05 | 2017-08-18 | 深圳Tcl数字技术有限公司 | 单解码器下多播放器快速切换方法、装置及存储介质 |
-
2017
- 2017-10-30 CN CN201711055276.XA patent/CN107786890A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103339959A (zh) * | 2011-01-19 | 2013-10-02 | 高通股份有限公司 | 动态视频切换 |
US20130132966A1 (en) * | 2011-05-26 | 2013-05-23 | Rupen Chanda | Video Player Instance Prioritization |
US20160014423A1 (en) * | 2012-11-28 | 2016-01-14 | Cisco Technology, Inc. | Fast Switching Hybrid Video Decoder |
CN105812914A (zh) * | 2014-12-29 | 2016-07-27 | Tcl集团股份有限公司 | 一种视频的混合多路解码方法及装置 |
CN105592314A (zh) * | 2015-12-17 | 2016-05-18 | 清华大学 | 并行解码方法和并行解码装置 |
CN106231343A (zh) * | 2016-10-11 | 2016-12-14 | 青岛海信电器股份有限公司 | 视频播放处理方法、装置及电视 |
CN107071549A (zh) * | 2017-05-05 | 2017-08-18 | 深圳Tcl数字技术有限公司 | 单解码器下多播放器快速切换方法、装置及存储介质 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737893B (zh) * | 2018-06-05 | 2021-04-30 | 上海哔哩哔哩科技有限公司 | 基于混合解码实现快速首帧出图的视频播放方法、装置和介质 |
CN108737893A (zh) * | 2018-06-05 | 2018-11-02 | 上海哔哩哔哩科技有限公司 | 基于混合解码实现快速首帧出图的视频播放方法、装置和介质 |
US11128879B2 (en) | 2018-06-05 | 2021-09-21 | Shanghai Bilibili Technology Co., Ltd. | Hybrid decoding |
CN109218763A (zh) * | 2018-11-12 | 2019-01-15 | 青岛海信传媒网络技术有限公司 | 一种流媒体视频切换的方法及智能电视 |
US11930246B2 (en) | 2019-01-23 | 2024-03-12 | Shanghai Bilibili Technology Co., Ltd. | Seamless switching method, device and storage medium of software and hardware decoding resolution |
WO2020151397A1 (zh) * | 2019-01-23 | 2020-07-30 | 上海哔哩哔哩科技有限公司 | 软硬件解码分辨率无缝切换方法、装置及存储介质 |
CN111479165A (zh) * | 2019-01-23 | 2020-07-31 | 上海哔哩哔哩科技有限公司 | 软硬件解码分辨率无缝切换方法、装置及存储介质 |
CN110113658A (zh) * | 2019-04-04 | 2019-08-09 | 武汉精立电子技术有限公司 | 一种超高分辨率视频播放方法及系统 |
CN112804577A (zh) * | 2019-11-14 | 2021-05-14 | 西安诺瓦星云科技股份有限公司 | 视频切换显示方法及装置、视频处理设备和存储介质 |
CN112804577B (zh) * | 2019-11-14 | 2023-10-20 | 西安诺瓦星云科技股份有限公司 | 视频切换显示方法及装置、视频处理设备和存储介质 |
CN114363637A (zh) * | 2021-12-08 | 2022-04-15 | 广州方硅信息技术有限公司 | 视频预解码方法、电子设备及计算机可读存储介质 |
CN115174991A (zh) * | 2022-06-28 | 2022-10-11 | Vidaa国际控股(荷兰)公司 | 一种显示设备及视频播放方法 |
CN115174991B (zh) * | 2022-06-28 | 2023-11-24 | Vidaa国际控股(荷兰)公司 | 一种显示设备及视频播放方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107786890A (zh) | 视频切换方法、装置及存储介质 | |
US11930197B2 (en) | Video decoding method and apparatus, computer device, and storage medium | |
KR101564521B1 (ko) | 운영 체제 초기화 중에 멀티미디어 데이터를 디스플레이하기 위한 기술들 | |
US7715481B2 (en) | System and method for allocation of resources for processing video | |
US20230232076A1 (en) | Remote User Interface | |
CN102981894B (zh) | 显示方法和电子设备 | |
CN111290725A (zh) | 一种投屏方法、设备及存储介质 | |
CN104780378A (zh) | 一种用于解码视频的方法、装置和播放器 | |
CN109803179A (zh) | 视频自动播放方法、装置、存储介质及电子设备 | |
CN111901832B (zh) | 一种一体机的无线投屏模块及投屏方法 | |
CN105578295A (zh) | 一种视频播放控制方法及设备 | |
US20050120387A1 (en) | Device and method of selecting and executing middleware for motion picture reproduction | |
CN108769806B (zh) | 媒体内容的展示方法和装置 | |
CN112019858B (zh) | 一种视频播放方法、装置、计算机设备和存储介质 | |
CN113596583A (zh) | 视频流子弹时间数据处理方法及装置 | |
CN112055238B (zh) | 视频播放的控制方法、设备及系统 | |
CN112672147A (zh) | 一种基于投屏的解码方法、设备及系统 | |
US9351011B2 (en) | Video pipeline with direct linkage between decoding and post processing | |
KR102459197B1 (ko) | 프리젠테이션 커스터마이제이션 및 인터랙티비티를 위한 방법 및 장치 | |
US11917241B2 (en) | Electronic device and its execution method and computer-readable medium | |
CN109218777A (zh) | 一种开机展示信息播放方法、装置、设备和存储介质 | |
US20230009756A1 (en) | Electronic device, method, and computer-readable medium for quickly switching channels | |
CN107920259A (zh) | 虚拟化平台视频播放加速方法、虚拟机服务器及存储介质 | |
CN108055573A (zh) | 数据处理方法及智能电视 | |
CN111954068B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180309 |