CN115052191A - 码流切换处理方法、装置、存储介质与电子设备 - Google Patents
码流切换处理方法、装置、存储介质与电子设备 Download PDFInfo
- Publication number
- CN115052191A CN115052191A CN202210657521.9A CN202210657521A CN115052191A CN 115052191 A CN115052191 A CN 115052191A CN 202210657521 A CN202210657521 A CN 202210657521A CN 115052191 A CN115052191 A CN 115052191A
- Authority
- CN
- China
- Prior art keywords
- code stream
- key frame
- switching
- currently played
- frame
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 81
- 230000001360 synchronised effect Effects 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 42
- 230000008447 perception Effects 0.000 abstract description 9
- 230000003044 adaptive effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
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
- H04N21/4402—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 reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440281—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 reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
-
- 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/4302—Content synchronisation processes, e.g. decoder synchronisation
-
- 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/44008—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 operations for analysing video streams, e.g. detecting features or characteristics in the video stream
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Studio Circuits (AREA)
Abstract
本公开提供一种码流切换处理方法、装置、存储介质与电子设备,涉及视频播放技术领域,所述码流切换处理方法包括:获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,第一码流为当前所播放的码流;基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流。本公开基于码流关键帧的同步状态实现码流切换,能够提升码流切换过程中所播放视频画面的连续性,进而减少用户对码流切换的感知。
Description
技术领域
本公开涉及视频播放技术领域,尤其涉一种码流切换处理方法、码流切换处理装置、计算机可读存储介质与电子设备。
背景技术
随着视频播放技术的不断发展,视频播放需求日益增多。为了满足用户对视频播放清晰度的质量要求,通常会为用户提供多种不同码率的码流以供切换。
相关技术中,在进行码流切换时,通常需要先停止对当前码流的播放,将播放组件置为加载状态,然后拉取需要切换的目标码流,所拉取的目标码流需要完成一定缓存后才可通过播放组件进行播放,期间存在不确定性的等待过程,导致视频播放画面的连续性较差,用户对码流切换操作感知较为明显。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开提供了一种码流切换处理方法、码流切换处理装置、计算机可读存储介质与电子设备,进而至少在一定程度上解决相关技术中视频播放画面的连续性较差的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种码流切换处理方法,所述方法包括:获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,所述第一码流为当前所播放的码流;基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,包括:基于所述第一码流中的关键帧与所述第二码流中的关键帧,确定所述第一码流与所述第二码流之间的码流同步状态;若所述第二码流超前于所述第一码流,则将媒体源缓冲区的码流缓存数据播放完毕后,从所述第二码流的第一关键帧或第二关键帧处开始播放;若所述第二码流落后于所述第一码流,则清除媒体源缓冲区的码流缓存数据,并从所述第二码流的第一关键帧或第二关键帧处开始播放;其中,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:若所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的时间差值小于第一时间阈值,或所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的帧差值小于第一帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:若所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的时间差值小于第二时间阈值,或所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的帧差值小于第二帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:若所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的时间差值大于第三时间阈值,或所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:若所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的时间差值大于第四时间阈值,或所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:若当前切换时长达到预设切换超时时长且所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的时间差值大于第三时间阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流;若当前切换时长达到预设切换超时时长且所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流;其中,所述第一关键帧为拉取所述第二码流后码流的首个关键帧。
在本公开的一种示例性实施例中,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:若当前切换时长达到预设切换超时时长且所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的时间差值大于第四时间阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流;若当前切换时长达到预设切换超时时长且所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,则将当前所播放的码流从所述第一码流切换为所述第二码流;其中,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
在本公开的一种示例性实施例中,所述方法还包括:若所述第二码流拉取失败、解码出错或编码出错,则删除所述第二码流,并生成码流切换失败提示。
在本公开的一种示例性实施例中,在将当前所播放的码流从所述第一码流切换为所述第二码流之前,所述方法还包括:继续播放所述第一码流,并持续更新所述第一码流以及所述第二码流。
在本公开的一种示例性实施例中,所述播放所述第一码流,包括:根据所述第一码流所对应的流媒体格式,将所述第一码流进行解码,得到第一解码数据;根据当前播放视频所对应的媒体播放格式,将所述第一解码数据进行编码,得到第一编码数据;将所述第一编码数据传入播放组件中进行播放。
在本公开的一种示例性实施例中,所述将当前所播放的码流从所述第一码流切换为所述第二码流,包括:删除所述第一码流;根据当前播放视频所对应的媒体播放格式,将第二解码数据进行编码,得到第二编码数据,所述第二解码数据为所述第二码流解码后的数据;将所述第二编码数据传入播放组件中进行播放。
在本公开的一种示例性实施例中,在获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息之前,所述方法还包括:判断所述第一码流的码率与当前网络状态是否匹配;若所述第一码流的码率与当前网络状态不匹配,则拉取所述第二码流,所述第二码流的码率与所述当前网络状态相匹配。
在本公开的一种示例性实施例中,拉取所述第二码流后,所述方法还包括:将所述第一码流开播时刻的时间戳信息覆盖掉所述第二码流开播时刻的时间戳信息,以使所述第一码流与所述第二码流相对于开播时刻偏移同步。
在本公开的一种示例性实施例中,拉取所述第二码流后,所述方法还包括:根据所述第二码流所对应的流媒体格式,将所述第二码流进行解码,得到所述第二解码数据。
根据本公开的第二方面,提供一种码流切换处理装置,所述装置包括:帧信息获取模块,用于获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,所述第一码流为当前所播放的码流;码流切换模块,用于基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述码流切换处理方法。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述码流切换处理方法。
本公开的技术方案具有以下有益效果:
上述码流切换处理过程中,获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,第一码流为当前所播放的码流;基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流。一方面,通过码流关键帧的同步状态,实现了帧级别的码流切换,可以使得码流切换前后视频播放画面能够进行平滑过渡,能够提升码流切换过程中所播放视频画面的连续性,进而减少用户对码流切换过程的感知,确保用户的观看体验。另一方面,在码流切换之前便获取第二码流的相关信息,使得第一码流和第二码流同时存在,可以在一定程度上减少码流切换过程所用时间,从而加快码流切换速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本示例性实施方式中一种码流切换处理方法的流程图;
图2示出本示例性实施方式中一种拉取第二码流的流程图;
图3示出本示例性实施方式中一种播放第一码流的流程图;
图4示出本示例性实施方式中一种将当前所播放的码流从第一码流切换为第二码流的流程图;
图5示出本示例性实施方式中一种直播场景下的码流切换处理流程图;
图6示出本示例性实施方式中一种码流切换处理装置的结构框图;
图7示出本示例性实施方式中一种用于实现码流切换处理方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
相关技术中,在进行码流切换时,通常需要先停止当前码流的播放,并将播放组件置为加载状态,在获取到需要切换的目标码流后,将播放组件重新置为播放状态。这种方式中,当前码流与目标码流不同时存在,播放组件从停止播放到从新开始播放期间存在不确定的等待时长,可能会导致视频播放画面的连续性较差且码流切换时间较长,用户对码流切换操作感知较为明显。
鉴于上述一个或多个问题,本公开的示例性实施方式提供码流切换处理方法,可应用于直播等视频播放应用场景。该码流切换方法可由用户终端设备执行,例如手机、电脑、电视、平板等可播放视频的智能显示设备。
本公开的示例性实施方式提供一种码流切换处理方法,如图1所示,具体包括以下步骤S110至步骤S120:
步骤S110,获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,第一码流为当前所播放的码流;
步骤S120,基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流。
上述码流切换处理过程中,一方面,通过码流关键帧的同步状态,实现了帧级别的码流切换,可以使得码流切换前后视频播放画面能够进行平滑过渡,能够提升码流切换过程中所播放视频画面的连续性,进而减少用户对码流切换过程的感知,确保用户的观看体验。另一方面,在码流切换之前便获取第二码流的相关信息,使得第一码流和第二码流同时存在,可以在一定程度上减少码流切换过程所用时间,从而加快切换速度。
下面分别对图1中的每个步骤进行具体说明。
步骤S110,获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,第一码流为当前所播放的码流。
当前播放视频指的是包含两条或两条以上码流的视频,可以通过播放组件进行播放。第一码流和第二码流均为当前播放视频所对应的码流。其中,第一码流为当前正在播放的码流,第二码流为待切换的目标码流。
码流的关键帧指的是视频中单幅影像画面,关键帧信息可包括关键帧标识、关键帧所对应的时间戳信息等可以体现出关键帧在码流中所在位置的信息。
在一种可选的实施方式中,在获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息之前,还可以执行如图2所示的步骤以拉取第二码流,具体可包括以下步骤S210至步骤S220:
步骤S210,判断第一码流的码率与当前网络状态是否匹配;
步骤S220,若第一码流的码率与当前网络状态不匹配,则拉取第二码流,第二码流的码率与当前网络状态相匹配。
第一码流和第二码流可具有不同的码率,其中码率指的是码流在单位时间内传递的数据量。若第一码流的码率与当前网络状态匹配,则无需对第一码流进行切换,若第一码流的码率与当前网络状态不匹配,则可拉取第二码流。
示例性的,若当前网络适配带宽无法满足当前码流的码率所需带宽时,可以切换码率较低的码流;若当前网络适配带宽远大于当前码流的码率所需带宽时,可以切换码率较高的码流。
由于网络状态是实时变化的,在码流播放过程中,可能会出现码流的码率与当前网络状态不匹配的情况,从而导致视频播放出现卡顿。通过实时监测当前网络状态,能够及时调整所播放的码流,以便用户终端设备能够采用最适宜的码率进行播放,进而确保视频播放的质量。
在一种可选的实施方式中,在拉取第二码流后,还可以将第一码流开播时刻的时间戳信息覆盖掉第二码流开播时刻的时间戳信息,以使第一码流与第二码流相对于开播时刻偏移同步。
对于直播类视频,可将第一码流的开播时刻的时间戳信息覆盖掉第二码流开播时刻的时间戳信息,使得第一码流与第二码流相对于开播时刻偏移同步,以便快速定位码流切换时第一码流与第二码流衔接的关键帧所在位置。
在一种可选的实施方式中,在拉取第二码流后,还可以根据第二码流所对应的流媒体格式,将第二码流进行解码,得到第二解码数据。
示例性的,第二码流的流媒体格式可以为flv格式,flv格式可由头部(header)和主体(body)两部分构成,可携带视频(video)和音频(audio)轨道。
上述过程中,在拉取第二码流后,实时对第二码流进行解码,以便后续在执行码流切换操作时,无需再对第二码流进行解码,以加快码流切换速度,减少用户对切换过程的感知,提升视频播放的流畅性。
在执行步骤S110后,可继续执行步骤S120。
步骤S120,基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流。
第一码流中的关键帧与第二码流中的关键帧之间的同步状态指的是第一码流与第二码流在帧级别上的相对偏移状态。可以用帧差值以及时间差值来表征第一码流中的关键帧与第二码流中的关键帧之间的同步状态。
在一种可选的实施方式中,在将当前所播放的码流从第一码流切换为第二码流之前,可以继续播放第一码流,并持续更新第一码流以及第二码流。
上述过程在码流切换执行之前,可以继续播放第一码流,并同步更新第一码流和第二码流的最新关键帧,这样能够避免在码流切换过程中由于直播码流的加载所造成的不确定等待,以减少切换过程中的无用耗时,从而加快切换执行速率。
在一种可选的实施方式中,可通过执行图3所示的步骤来播放第一码流,具体包括以下步骤S310至步骤S330:
步骤S310,根据第一码流所对应的流媒体格式,将第一码流进行解码,得到第一解码数据;
步骤S320,根据当前播放视频所对应的媒体播放格式,将第一解码数据进行编码,得到第一编码数据;
步骤S330,将第一编码数据传入播放组件中进行播放。
示例性的,第一码流的流媒体格式可以为flv格式,当前播放视频所对应的媒体播放格式可以为mp4格式,第一解码数据为第一码流经过flv数据解码后的码流数据,第一编码数据为第一解码数据经过mp4编码后的码流数据。其中mp4是一套用于音频、视频信息的压缩编码标准。
上述过程中,在码流切换执行之前,通过对第一码流进行解码、编码等一系列连续的处理将码流转换为可被播放组件播放的媒体数据,以实现对第一码流的播放,使得在码流切换完成之前视频播放不会中断。
在更新第一码流以及第二码流时,可以判断第一码流中的关键帧与第二码流中的关键帧的同步状态是否满足特定条件,当第一码流中的关键帧与第二码流中的关键帧的同步状态满足特定条件时,可将当前所播放的码流从第一码流切换为第二码流,下面将进行详细说明。
在一种可选的实施方式中,步骤S120中基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,还可以通过以下方式来实现:基于第一码流中的关键帧与第二码流中的关键帧,确定第一码流与第二码流之间的码流同步状态;若第二码流超前于第一码流,则将媒体源缓冲区的码流缓存数据播放完毕后,从第二码流的第一关键帧或第二关键帧处开始播放;若第二码流落后于第一码流,则清除媒体源缓冲区的码流缓存数据,并从第二码流的第一关键帧或第二关键帧处开始播放;其中,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
若第二码流超前于第一码流,可以将媒体源缓冲区(mediaSouce buffer)的码流缓存数据播放完毕后,从第二码流的第一关键帧或第二关键帧处开始对第二码流进行播放,以尽可能减少损失画面,确保视频播放的连续性;若第二码流落后于第一码流,可以清除媒体源缓冲区的码流缓存数据,并从第二码流的第一关键帧或第二关键帧处开始对第二码流进行播放,以尽可能减少重复播放的画面,确保视频播放的连续性。
在一种可选的实施方式中,步骤S120中基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,具体可以通过以下方式来实现:若第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值小于第一时间阈值,或第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值小于第一帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧。
示例性的,|next_keyframe_first_pts-first_keyframe_first_pts|<t1,或|next_keyframe_first-first_keyframe_first|<k1时,可将当前所播放的码流从第一码流切换为第二码流。
其中next_keyframe_first_pts为第二码流的第一关键帧所对应的显示时间戳、first_keyframe_first_pts为第一码流的第一关键帧所对应的显示时间戳、t1为第一时间阈值、next_keyframe_first为第二码流的第一关键帧、first_keyframe_first为第一码流的第一关键帧、k1为第一帧阈值。需要说明的是,这里的第一时间阈值、第一帧阈值可以根据实际应用需求进行设定,例如可将第一时间阈值设置为5000ms、第一帧阈值设置为5帧。
当第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值小于第一时间阈值,或第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值小于第一帧阈值时,将当前所播放的码流从第一码流切换为第二码流。具体的,可在第一码流的第一关键帧处停止对第一码流的播放,在第二码流的第一关键帧处开始对第二码流的播放。该过程通过设置阈值使得两条码流的帧对齐偏差处于肉眼难以感知的范围内,能够实现无缝切换的观看效果。
在一种可选的实施方式中,步骤S120中基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,具体可以通过以下方式来实现:若第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值小于第二时间阈值,或第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值小于第二帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
示例性的,|next_keyframe_last_pts-first_keyframe_first_pts|<t2,或|next_keyframe_last-first_keyframe_first|<k2时,可将当前所播放的码流从第一码流切换为第二码流。
其中next_keyframe_last_pts为第二码流的第二关键帧所对应的显示时间戳、first_keyframe_first_pts为第一码流的第一关键帧所对应的显示时间戳、t2为第二时间阈值、next_keyframe_last为第二码流的第二关键帧、first_keyframe_first为第一码流的第一关键帧、k2为第二帧阈值。需要说明的是,这里的第二时间阈值、第二帧阈值可以根据实际应用需求进行设定,例如可将第二时间阈值设置为5000ms、第二帧阈值设置为5帧。
当第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值小于第二时间阈值,或第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值小于第二帧阈值时,将当前所播放的码流从第一码流切换为第二码流。具体的,可在第一码流的第一关键帧处停止对第一码流的播放,在第二码流的第二关键帧处开始对第二码流的播放。当第二时间阈值与第二帧阈值较小时,切换过程中所造成的帧偏差,肉眼基本无感知,能够达到无缝切换的观看效果。
在一种可选的实施方式中,步骤S120中基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,具体可以通过以下方式来实现:若第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值大于第三时间阈值,或第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧。
示例性的,next_keyframe_first_pts-first_keyframe_first_pts>t3,或next_keyframe_first-first_keyframe_first>k3时,第二码流超前于第一码流,此时,可执行码流切换处理,将当前所播放的码流从第一码流切换为第二码流。具体的,第二码流超前于第一码流时,可以将媒体源缓冲区(mediaSouce buffer)的码流缓存数据播放完毕后,从第二码流的第一关键帧处开始对第二码流进行播放,以尽可能减少损失画面。
示例性的,first_keyframe_first_pts-next_keyframe_first_pts>t3,或first_keyframe_first-next_keyframe_first>k3时,第二码流落后于第一码流,此时,可执行码流切换处理,将当前所播放的码流从第一码流切换为第二码流。具体的,第二码流落后于第一码流时,可清除媒体源缓冲区的码流缓存数据,并从第二码流的帧的第一关键帧处开始对第二码流进行播放,以尽可能减少重复播放的画面。
其中,t3为第三帧阈值,k3为第三帧阈值。这里的第三时间阈值、第三帧阈值可以根据实际应用需求进行设定,示例性的,可将第三时间阈值设置为5000ms、第三帧阈值设置为5帧。
当第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值大于第三时间阈值,或第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值大于第三帧阈值时,将当前所播放的码流从第一码流切换为第二码流。该过程采用实时判断同步的方式,在第一码流与第二码流帧对齐偏差较大,难以通过追赶实现帧对齐时,通过强制切换处理,将当前所播放的码流及时切换,以尽可能避免由于第一码流的码率不适配当前网络状态而对视频播放所造成的持续卡顿影响。
在一种可选的实施方式中,步骤S120中基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,具体可以通过以下方式来实现:若第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值大于第四时间阈值,或第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
示例性的,next_keyframe_last_pts-first_keyframe_first_pts>t4,或next_keyframe_last-first_keyframe_first>k4时,第二码流超前于第一码流,此时,可执行码流切换处理,将当前所播放的码流从第一码流切换为第二码流。具体的,第二码流超前于第一码流时,可以将媒体源缓冲区(mediaSouce buffer)的码流缓存数据播放完毕后,从第二码流的第二关键帧处开始对第二码流进行播放,以尽可能减少损失画面。
示例性的,first_keyframe_first_pts-next_keyframe_last_pts>t4,或first_keyframe_first-next_keyframe_last>k4时,第二码流落后于第一码流,此时,可执行码流切换处理,将当前所播放的码流从第一码流切换为第二码流。具体的,第二码流落后于第一码流时,可清除媒体源缓冲区的码流缓存数据,并从第二码流的第二关键帧处开始对第二码流进行播放,以尽可能减少重复播放的画面。
其中,t4为第四帧阈值,k4为第四帧阈值。这里的第四时间阈值、第四帧阈值可以根据实际应用需求进行设定,示例性的,可将第四时间阈值设置为5000ms、第四帧阈值设置为5帧。
上述过程采用实时判断同步的方式,在第二码流超前或落后第一码流过多,难追赶对齐时,进行强制切换,以避免切换时间过长影响到后续码流的正常播放。
当前切换时长达到预设切换超时时长还未进行码流切换时,可以进行强制兜底切换处理。
在一种可选的实施方式中,步骤S120中基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,具体可以通过以下方式来实现:若当前切换时长达到预设切换超时时长且第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值大于第三时间阈值,则将当前所播放的码流从第一码流切换为第二码流;若当前切换时长达到预设切换超时时长且第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从第一码流切换为第二码流;其中,第一关键帧为拉取第二码流后码流的首个关键帧。
可以通过设置超时计时器进行切换计时,以得到当前切换时长。超时切换时长可以根据用户对切换操作时长的容忍程度进行设定,这里不做具体限定。示例性的,可以将超时切换时长设置为5000ms。
示例性的,若当前切换时长达到预设切换超时时长,且|next_keyframe_first_pts-first_keyframe_first_pts|>t3时,可执行码流切换处理,将当前所播放的码流从第一码流切换为第二码流。
示例性的,若当前切换时长达到预设切换超时时长,且|next_keyframe_first-first_keyframe_first|>k3时,可执行码流切换处理,将当前所播放的码流从第一码流切换为第二码流。
上述过程通过预留一定的码流追赶时间,在第一码流与第二码流帧对齐偏差较大,难以通过追赶实现帧对齐时,强制进行码流切换处理,以便在尽可能满足无缝切换的同时,快速完成码流切换处理。
在一种可选的实施方式中,基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流,具体可以通过以下方式来实现:若当前切换时长达到预设切换超时时长且第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值大于第四时间阈值,则将当前所播放的码流从第一码流切换为第二码流;若当前切换时长达到预设切换超时时长且第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从第一码流切换为第二码流,则将当前所播放的码流从第一码流切换为第二码流;其中,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
示例性的,若当前切换时长达到预设切换超时时长,且|next_keyframe_last_pts-first_keyframe_first_pts|>t4时,可执行码流切换处理,将当前所播放的码流从第一码流强制切换为第二码流。
示例性的,若当前切换时长达到预设切换超时时长,且|next_keyframe_last-first_keyframe_first|>k4时,可执行码流切换处理,将当前所播放的码流从第一码流强制切换为第二码流。
上述过程通过预留一定的码流追赶时间,在第二码流落后第一码流过多时,无法追赶上时,通过销毁码流缓存数据,强制进行码流切换处理,以便尽可能缓解播放不连续性的同时,快速完成码流切换处理。
此外,将当前所播放的码流从第一码流强制切换为第二码流后,还可生成切换成功提示,以便提醒用户所观看的视频的码率发生了变化。
需要说明的是,上述所提供的几种实施例中采用第一码流的第一关键帧来判断与第二码流的同步状态,在实际应用过程中,由于同一码流的第一关键帧与第二关键帧的帧差不是很大,因此还可以将上述第一码流的第一关键帧替换为第二关键帧来判断与第二码流的同步状态,具体实施过程和第一码流的第一关键帧实施过程类似,这里将不再进行赘述。
在一种可选的实施方式中,若第二码流拉取失败、解码出错或编码出错,则删除第二码流,并生成码流切换失败提示。
通过生成码流切换失败提示信息,能够提醒用户码流切换失败,当前网络状态可能处于不稳定状态,以便于用户及时更换网络。
在一种可选的实施方式中,可以通过如图4所示的步骤将当前所播放的码流从第一码流切换为第二码流,具体包括以下步骤S410至步骤S430:
步骤S410,删除第一码流;
步骤S420,根据当前播放视频所对应的媒体播放格式,将第二解码数据进行编码,得到第二编码数据,第二解码数据为第二码流解码后的数据;
步骤S430,将第二编码数据传入播放组件中进行播放。
通过分散执行针对第二码流的解码和编码处理,能够减轻处理器的瞬时处理压力,而且在码流切换时无需再对第二码流进行解码处理,能够加快码流切换速度,减少用户对切换过程的感知,进而提升视频播放的流畅性。
需要说明的是,可以在删除第一码流的同时,停止对第一码流的更新、解码以及编码处理。
如图5所示,提供一种直播场景下的码流切换处理流程,具体可包括以下步骤:
步骤S501,初始化目标直播间播放组件;
步骤S502,记录第一码流开播时刻的时间戳信息;
步骤S503,实时监测当前网络状态,若第一码流的码率与当前网络状态不匹配,则拉取与当前网络状态相匹配的第二码流;
步骤S504,将第一码流开播时刻的时间戳信息覆盖掉第二码流开播时刻的时间戳信息,以使第一码流与第二码流相对于开播时刻偏移同步;
步骤S505,根据第一码流所对应的流媒体格式,将第一码流进行解码,得到第一解码数据;根据当前播放视频所对应的媒体播放格式,将第一解码数据进行编码,得到第一编码数据;将第一编码数据传入播放组件中进行播放;根据第二码流所对应的流媒体格式,将第二码流进行解码,得到第二解码数据;
步骤S506,持续更新第一码流的关键帧信息与第二码流的关键帧信息;
步骤S507,基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,删除第一码流,将第二解码数据进行编码,得到第二编码数据,将第二编码数据传入播放组件中进行播放;
步骤S508,生成码流切换成功提示。
图5所示的步骤中,通过码率匹配以及帧级别的衔接技术使得播放组件播放与当前网络状态相匹配的码流,以减少用户对拉流操作的感知,能够减少由于网络卡顿导致直播画面缺失的情况,进而确保直播的同步特性,提升直播画面的连续性。此外,第一码流与第二码流的同步更新还可以减少切换过程中的无用耗时。
本公开基于码流关键帧的同步状态实现码流切换,能够提升码流切换过程中所播放视频画面的连续性,进而减少用户对码流切换的感知。
本公开的示例性实施方式还提供一种码流切换处理装置,如图6所示,该码流切换处理装置600可以包括:
帧信息获取模块610,用于获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,第一码流为当前所播放的码流;
码流切换模块620,用于基于第一码流中的关键帧与第二码流中的关键帧之间的同步状态,将当前所播放的码流从第一码流切换为第二码流。
在一种可选的实施方式中,码流切换模块,可以被配置为:基于第一码流中的关键帧与第二码流中的关键帧,确定第一码流与第二码流之间的码流同步状态;若第二码流超前于第一码流,则将媒体源缓冲区的码流缓存数据播放完毕后,从第二码流的第一关键帧或第二关键帧处开始播放;若第二码流落后于第一码流,则清除媒体源缓冲区的码流缓存数据,并从第二码流的第一关键帧或第二关键帧处开始播放;其中,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
在一种可选的实施方式中,码流切换模块,还可以被配置为:若第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值小于第一时间阈值,或第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值小于第一帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧。
在一种可选的实施方式中,码流切换模块,还可以被配置为:若第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值小于第二时间阈值,或第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值小于第二帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
在一种可选的实施方式中,码流切换模块,还可以被配置为:若第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值大于第三时间阈值,或第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧。
在一种可选的实施方式中,码流切换模块,还可以被配置为:若第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值大于第四时间阈值,或第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从第一码流切换为第二码流,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
在一种可选的实施方式中,码流切换模块,还可以被配置为:若当前切换时长达到预设切换超时时长且第二码流的第一关键帧与第一码流的第一关键帧之间的时间差值大于第三时间阈值,则将当前所播放的码流从第一码流切换为第二码流;若当前切换时长达到预设切换超时时长且第二码流的第一关键帧与第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从第一码流切换为第二码流;其中,第一关键帧为拉取第二码流后码流的首个关键帧。
在一种可选的实施方式中,码流切换模块,还可以被配置为:若当前切换时长达到预设切换超时时长且第二码流的第二关键帧与第一码流的第一关键帧之间的时间差值大于第四时间阈值,则将当前所播放的码流从第一码流切换为第二码流;若当前切换时长达到预设切换超时时长且第二码流的第二关键帧与第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从第一码流切换为第二码流,则将当前所播放的码流从第一码流切换为第二码流;其中,第一关键帧为拉取第二码流后码流的首个关键帧,第二关键帧为码流中的最新关键帧。
在一种可选的实施方式中,码流切换装置600还包括:切换失败提示模块,用于若第二码流拉取失败、解码出错或编码出错,则删除第二码流,并生成码流切换失败提示。
在一种可选的实施方式中,在将当前所播放的码流从第一码流切换为第二码流之前,码流切换装置600还包括:视频播放模块,用于继续播放第一码流,并持续更新第一码流以及第二码流。
在一种可选的实施方式中,视频播放模块还包括第一视频播放子模块,用于播放第一码流;第一视频播放子模块,可以被配置为:根据第一码流所对应的流媒体格式,将第一码流进行解码,得到第一解码数据;根据当前播放视频所对应的媒体播放格式,将第一解码数据进行编码,得到第一编码数据;将第一编码数据传入播放组件中进行播放。
在一种可选的实施方式中,码流切换模块620,还可以被配置为:删除第一码流;根据当前播放视频所对应的媒体播放格式,将第二解码数据进行编码,得到第二编码数据,第二解码数据为第二码流解码后的数据;将第二编码数据传入播放组件中进行播放。
在一种可选的实施方式中,在获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息之前,码流切换装置600还包括:判断模块,用于判断第一码流的码率与当前网络状态是否匹配;拉流模块,用于若第一码流的码率与当前网络状态不匹配,则拉取第二码流,第二码流的码率与当前网络状态相匹配。
在一种可选的实施方式中,拉取第二码流后,码流切换装置600还包括:时间戳信息覆盖模块,用于将第一码流开播时刻的时间戳信息覆盖掉第二码流开播时刻的时间戳信息,以使第一码流与第二码流相对于开播时刻偏移同步。
在一种可选的实施方式中,拉取第二码流后,码流切换装置600还包括:第二码流解码模块,用于根据第二码流所对应的流媒体格式,将第二码流进行解码,得到第二解码数据。
上述码流切换处理装置600中各部分的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述码流切换处理方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。该程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施方式还提供了一种能够实现上述码流切换处理方法的电子设备。下面参照图7来描述根据本公开的这种示例性实施方式的电子设备700。图7显示的电子设备700仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图7所示,电子设备700可以以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同系统组件(包括存储单元720和处理单元710)的总线730和显示单元740。
存储单元720存储有程序代码,程序代码可以被处理单元710执行,使得处理单元710执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。例如,处理单元710可以执行图1至图5中任意一个或多个方法步骤。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)721和/或高速缓存存储单元722,还可以进一步包括只读存储单元(ROM)723。
存储单元720还可以包括具有一组(至少一个)程序模块725的程序/实用工具724,这样的程序模块725包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备800(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器760通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。
此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。
Claims (18)
1.一种码流切换处理方法,其特征在于,所述方法包括:
获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,所述第一码流为当前所播放的码流;
基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,包括:
基于所述第一码流中的关键帧与所述第二码流中的关键帧,确定所述第一码流与所述第二码流之间的码流同步状态;
若所述第二码流超前于所述第一码流,则将媒体源缓冲区的码流缓存数据播放完毕后,从所述第二码流的第一关键帧或第二关键帧处开始播放;
若所述第二码流落后于所述第一码流,则清除媒体源缓冲区的码流缓存数据,并从所述第二码流的第一关键帧或第二关键帧处开始播放;
其中,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:
若所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的时间差值小于第一时间阈值,或所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的帧差值小于第一帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:
若所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的时间差值小于第二时间阈值,或所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的帧差值小于第二帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
5.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:
若所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的时间差值大于第三时间阈值,或所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧。
6.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:
若所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的时间差值大于第四时间阈值,或所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
7.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:
若当前切换时长达到预设切换超时时长且所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的时间差值大于第三时间阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流;
若当前切换时长达到预设切换超时时长且所述第二码流的第一关键帧与所述第一码流的第一关键帧之间的帧差值大于第三帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流;
其中,所述第一关键帧为拉取所述第二码流后码流的首个关键帧。
8.根据权利要求1所述的方法,其特征在于,所述基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流,还包括:
若当前切换时长达到预设切换超时时长且所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的时间差值大于第四时间阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流;
若当前切换时长达到预设切换超时时长且所述第二码流的第二关键帧与所述第一码流的第一关键帧之间的帧差值大于第四帧阈值,则将当前所播放的码流从所述第一码流切换为所述第二码流,则将当前所播放的码流从所述第一码流切换为所述第二码流;
其中,所述第一关键帧为拉取所述第二码流后码流的首个关键帧,所述第二关键帧为码流中的最新关键帧。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第二码流拉取失败、解码出错或编码出错,则删除所述第二码流,并生成码流切换失败提示。
10.根据权利要求1所述的方法,其特征在于,在将当前所播放的码流从所述第一码流切换为所述第二码流之前,所述方法还包括:
继续播放所述第一码流,并持续更新所述第一码流以及所述第二码流。
11.根据权利要求10所述的方法,其特征在于,所述播放所述第一码流,包括:
根据所述第一码流所对应的流媒体格式,将所述第一码流进行解码,得到第一解码数据;
根据当前播放视频所对应的媒体播放格式,将所述第一解码数据进行编码,得到第一编码数据;
将所述第一编码数据传入播放组件中进行播放。
12.根据权利要求1所述的方法,其特征在于,所述将当前所播放的码流从所述第一码流切换为所述第二码流,包括:
删除所述第一码流;
根据当前播放视频所对应的媒体播放格式,将第二解码数据进行编码,得到第二编码数据,所述第二解码数据为所述第二码流解码后的数据;
将所述第二编码数据传入播放组件中进行播放。
13.根据权利要求1所述的方法,其特征在于,在获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息之前,所述方法还包括:
判断所述第一码流的码率与当前网络状态是否匹配;
若所述第一码流的码率与当前网络状态不匹配,则拉取所述第二码流,所述第二码流的码率与所述当前网络状态相匹配。
14.根据权利要求13所述的方法,其特征在于,拉取所述第二码流后,所述方法还包括:
将所述第一码流开播时刻的时间戳信息覆盖掉所述第二码流开播时刻的时间戳信息,以使所述第一码流与所述第二码流相对于开播时刻偏移同步。
15.根据权利要求13所述的方法,其特征在于,拉取所述第二码流后,所述方法还包括:
根据所述第二码流所对应的流媒体格式,将所述第二码流进行解码,得到所述第二解码数据。
16.一种码流切换处理装置,其特征在于,所述装置包括:
帧信息获取模块,用于获取当前播放视频的第一码流的关键帧信息与第二码流的关键帧信息,所述第一码流为当前所播放的码流;
码流切换模块,用于基于所述第一码流中的关键帧与所述第二码流中的关键帧之间的同步状态,将当前所播放的码流从所述第一码流切换为所述第二码流。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15任一项所述的方法。
18.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至15任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210657521.9A CN115052191A (zh) | 2022-06-10 | 2022-06-10 | 码流切换处理方法、装置、存储介质与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210657521.9A CN115052191A (zh) | 2022-06-10 | 2022-06-10 | 码流切换处理方法、装置、存储介质与电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115052191A true CN115052191A (zh) | 2022-09-13 |
Family
ID=83161295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210657521.9A Pending CN115052191A (zh) | 2022-06-10 | 2022-06-10 | 码流切换处理方法、装置、存储介质与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115052191A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144613A (zh) * | 2018-09-03 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | Android清晰度切换方法、装置、终端及可读介质 |
CN110139148A (zh) * | 2019-05-22 | 2019-08-16 | 武汉瓯越网视有限公司 | 一种视频切换清晰度的方法及相关装置 |
CN110636346A (zh) * | 2019-09-19 | 2019-12-31 | 北京达佳互联信息技术有限公司 | 一种码率自适应切换方法、装置、电子设备及存储介质 |
CN111836076A (zh) * | 2019-04-18 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 视频分辨率切换方法及装置、电子设备 |
CN111866433A (zh) * | 2020-07-31 | 2020-10-30 | 腾讯科技(深圳)有限公司 | 视频源切换方法、播放方法、装置、设备和存储介质 |
CN112637661A (zh) * | 2020-12-22 | 2021-04-09 | 广州博冠信息科技有限公司 | 视频流的切换方法及装置、计算机存储介质、电子设备 |
-
2022
- 2022-06-10 CN CN202210657521.9A patent/CN115052191A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109144613A (zh) * | 2018-09-03 | 2019-01-04 | 武汉斗鱼网络科技有限公司 | Android清晰度切换方法、装置、终端及可读介质 |
CN111836076A (zh) * | 2019-04-18 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 视频分辨率切换方法及装置、电子设备 |
CN110139148A (zh) * | 2019-05-22 | 2019-08-16 | 武汉瓯越网视有限公司 | 一种视频切换清晰度的方法及相关装置 |
CN110636346A (zh) * | 2019-09-19 | 2019-12-31 | 北京达佳互联信息技术有限公司 | 一种码率自适应切换方法、装置、电子设备及存储介质 |
CN111866433A (zh) * | 2020-07-31 | 2020-10-30 | 腾讯科技(深圳)有限公司 | 视频源切换方法、播放方法、装置、设备和存储介质 |
CN112637661A (zh) * | 2020-12-22 | 2021-04-09 | 广州博冠信息科技有限公司 | 视频流的切换方法及装置、计算机存储介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6562992B2 (ja) | デジタルビデオストリーミングにおけるトリック再生 | |
CN109168078B (zh) | 一种视频清晰度切换方法及装置 | |
US8270819B2 (en) | Performing trick play functions in a digital video recorder with efficient use of resources | |
JP2023138511A (ja) | 置換コンテンツの最後を被置換コンテンツの最後と揃えるのに役立つ置換コンテンツ再生における動的短縮 | |
CN113225585B (zh) | 一种视频清晰度的切换方法、装置、电子设备以及存储介质 | |
WO2019170073A1 (zh) | 媒体播放 | |
WO2017197828A1 (zh) | 一种视频编解码方法及设备 | |
CN111836076B (zh) | 视频分辨率切换方法及装置、电子设备 | |
CN112637661B (zh) | 视频流的切换方法及装置、计算机存储介质、电子设备 | |
CN110519640B (zh) | 视频处理方法、编码器、cdn服务器、解码器、设备及介质 | |
CN112087642B (zh) | 云导播播放方法、云导播服务器及远程管理终端 | |
JP3774662B2 (ja) | 画像処理装置、画像処理システム、画像処理方法、プログラム、及び記録媒体 | |
CN112788360A (zh) | 直播方法、直播装置与计算机程序产品 | |
CN110351576B (zh) | 一种在工业场景下进行实时视频流快速显示的方法及其系统 | |
CN112019858B (zh) | 一种视频播放方法、装置、计算机设备和存储介质 | |
CN112055227A (zh) | 云游戏交互方法、系统、装置、存储介质与电子设备 | |
CN115052191A (zh) | 码流切换处理方法、装置、存储介质与电子设备 | |
CN109218809B (zh) | 一种流媒体的播放方法和装置 | |
CN106231414B (zh) | 基于iptv的播放模式切换的控制方法及装置 | |
CN105430527B (zh) | 一种流媒体提醒方法及终端设备 | |
CN101262600A (zh) | 一种网络视频快进快退播放系统和方法 | |
CN113395531A (zh) | 播放切换方法、装置、电子设备及计算机可读存储介质 | |
CN113923468B (zh) | 直播控制方法、装置、存储介质和电子设备 | |
CN112954483B (zh) | 数据传输方法、系统及非易失性存储介质 | |
CN115243089A (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 |
Application publication date: 20220913 |
|
RJ01 | Rejection of invention patent application after publication |