CN110519640B - 视频处理方法、编码器、cdn服务器、解码器、设备及介质 - Google Patents

视频处理方法、编码器、cdn服务器、解码器、设备及介质 Download PDF

Info

Publication number
CN110519640B
CN110519640B CN201910749725.3A CN201910749725A CN110519640B CN 110519640 B CN110519640 B CN 110519640B CN 201910749725 A CN201910749725 A CN 201910749725A CN 110519640 B CN110519640 B CN 110519640B
Authority
CN
China
Prior art keywords
ltr
frame
image group
idr
encoded
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.)
Active
Application number
CN201910749725.3A
Other languages
English (en)
Other versions
CN110519640A (zh
Inventor
王晓楠
郑云飞
陈敏
闻兴
赵明菲
陈宇聪
黄跃
郭磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN201910749725.3A priority Critical patent/CN110519640B/zh
Publication of CN110519640A publication Critical patent/CN110519640A/zh
Application granted granted Critical
Publication of CN110519640B publication Critical patent/CN110519640B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234381Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing 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/4402Processing 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/440281Processing 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请提供了一种视频处理方法、编码器、CDN缓存服务器、解码器、设备及介质。所述编码方法包括:将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组,然后发送给CDN缓存服务器;按照IDR帧间隔为多个LTR帧间隔的编码规则,参考在前的IDR帧或在前的LTR帧编码将当前待编码的视频流编码为多个LTR编码图像组;为多个LTR编码图像组各自的首帧添加帧类型标识,以使CDN缓存服务器根据帧类型标识能够识别多个LTR编码图像组各自的首帧的帧类型;最后将多个携带帧类型标识的LTR编码图像组分别发送给CDN缓存服务器。本申请通过使用LTR帧代替IDR帧来扩大IDR帧之间的间隔,以避免频繁地对IDR帧进行编码,从而提高视频流的编码效率,改善用户终端接收到的视频的质量。

Description

视频处理方法、编码器、CDN服务器、解码器、设备及介质
技术领域
本申请实施例涉及视频处理技术领域,尤其涉及一种视频处理方法、编码器、CDN缓存服务器、解码器、设备及介质。
背景技术
随着信息时代的到来,观看直播视频已经成为一种非常受欢迎的信息获取方式。目前,直播视频技术的应用通常涉及直播视频编码端(即:直播视频流推送端)、转发服务器(例如:CDN缓存服务器)以及直播视频解码端(即:观看直播的用户终端),直播视频编码端实时获取直播产生的视频流,在进行编码处理后发送到转发服务器,由转发服务器进行缓存。当直播视频解码端需要观看直播时,向转发服务器发起获取视频流的请求,转发服务器首先将缓存的视频流以GOP(Group Of Pictueres,图像组)为单位发送给直播视频解码端,然后再实时发送由直播视频编码端发送的视频流。
为了使用户能够在任何时间都能观看正在进行的直播,同时方便转发服务器缓存视频流和转发视频流,在相关技术中,直播视频编码通常会将直播产生的视频流划分为较短的GOP,以减少用户接收视频流的平均延时(用户接收视频流的平均延时理论上为GOP时长的一半)。
然而,缩短用户接收视频流的平均延时将直接缩短IDR(Instantaneous DecodingRefresh,立即解码刷新帧)帧间隔(IDR帧间隔为一个GOP的长度,每个GOP的首帧为IDR帧),使直播视频编码端频繁地编码IDR帧,由于IDR帧的编码效率明显低于普通的P帧的编码效率,因此,通过相关技术中的编码方式所得到的直播视频的质量较低。
发明内容
本申请实施例提供一种视频处理方法、编码器、CDN缓存服务器、解码器、设备及介质,以改善编码得到的视频的质量。
本申请实施例第一方面提供了一种视频流处理方法,应用于编码器,所述方法包括:
将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组;
将所述IDR编码图像组发送给CDN缓存服务器;
按照IDR帧间隔为多个LTR帧间隔的编码规则,将当前待编码的视频流编码为多个LTR编码图像组,所述LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的;
为所述多个LTR编码图像组各自的首帧添加帧类型标识,以使所述CDN缓存服务器根据所述帧类型标识能够识别所述多个LTR编码图像组各自的首帧的帧类型;
将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器。
可选地,所述多个LTR编码图像组各自的首帧是按照以下步骤编码得到的:
确定最新编码的IDR帧;
参考所述最新编码的IDR帧,将所述多个LTR编码图像组中第一个LTR编码图像组的首帧编码为LTR帧;
确定目标参考帧,所述目标参考帧为最新编码的IDR帧或最新编码的LTR帧;
参考所述目标参考帧,将所述多个LTR编码图像组中其他各个LTR编码图像组的首帧编码为LTR帧或LTRP帧。
可选地,所述LTR编码图像组中除首帧外的其他帧是按照以下步骤编码得到的:
参考该LTR编码图像组的首帧,编码B帧或P帧;或
参考该LTR编码图像组中的首帧之后的其他参考帧,编码B帧或P帧,所述其他参考帧为已编码的并用作短期参考帧的B帧或P帧。
可选地,所述方法还包括:按照以下步骤对编码图像组进行FEC编码,所述编码图像组包括IDR编码图像组和LTR编码图像组:
对所述编码图像组的首帧进行第一保护强度的FEC编码,对所述LTR编码图像组的除首帧外的其他帧进行第二保护强度的FEC编码,所述第二保护强度弱于所述第一保护强度;
将所述IDR编码图像组发送给CDN缓存服务器,包括:
将经过FEC编码后的IDR编码图像组发送给所述CDN缓存服务器;
将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器,包括:
将多个携带帧类型标识且经过FEC编码后的LTR编码图像组分别发送给所述CDN缓存服务器。
可选地,所述方法还包括:
接收时延调整指令,所述时延调整指令用于调整视频流观看的延时;
响应于所述时延调整指令,缩短所述LTR帧间隔。
可选地,响应于所述时延调整指令,缩短所述LTR帧间隔,包括:
响应于所述时延调整指令,减少所述LTR编码图像组包括的编码图像帧的数量。
本申请实施例第二方面提供一种视频处理方法,应用于CDN缓存服务器,所述方法包括:
接收视频播放客户端发送的视频流请求;
提取所缓存的所述编码器最新发送的一个编码图像组;
对所提取的编码图像组进行解析,确定该编码图像组是否是携带帧类型标识的LTR编码图像组;
在所提取的编码图像组是所述LTR编码图像组的情况下,提取所缓存的该LTR编码图像组的所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
将所提取的LTR编码图像组及其所有参考编码图像组,发送给所述视频播放客户端,以使所述视频播放客户端解码该LTR编码图像组。
可选地,所述方法还包括:
在所提取的编码图像组是以IDR帧为首帧的IDR编码图像的情况下,将该IDR编码图像组发送给所述视频播放客户端,以使所述视频播放客户端解码该IDR编码图像组。
可选地,所述CDN缓存服务器中设置有缓存队列;所述方法还包括:
接收所述编码器当前发送的一个编码图像组;
对当前接收的该编码图像组进行解析,确定当前接收的该编码图像组是携带帧类型标识的LTR编码图像组,还是所述IDR编码图像组;
在当前接收的该编码图像组是所述LTR编码图像组的情况下,将该LTR编码图像组添加到所述缓存队列的队尾,并去除该LTR编码图像组之前的各个编码图像组中除首帧之外的其他帧;
在当前接收的该编码图像组是所述IDR编码图像组的情况下,将所述缓存队列清空,并将该IDR图像组添加到该空的缓存队列的队首。
可选地,所述缓存队列的总长度是根据所述编码器的IDR帧间隔确定的,所述IDR帧间隔为N个LTR帧间隔;
所述缓存队列包括N个缓存块,每个缓存块用于缓存所述编码器发送的一个编码图像组。
本申请实施例第三方面提供一种视频处理方法,应用于解码器,所述方法包括:
接收并缓存CDN缓存服务器当前发送的LTR编码图像组及其所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
参考当前接收到的LTR编码图像组的所有参考编码图像组,对该LTR编码图像组进行解码;
将解码后的视频流发送给所述视频播放客户端。
本申请实施例第四方面提供一种编码器,所述编码器包括:
第一编码模块,用于将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组;
第一发送模块,用于将所述IDR编码图像组发送给CDN缓存服务器;
第二编码模块,用于按照IDR帧间隔为多个LTR帧间隔的编码规则,将当前待编码的视频流编码为多个LTR编码图像组,所述LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的;
标识模块,用于为所述多个LTR编码图像组各自的首帧添加帧类型标识,以使所述CDN缓存服务器根据所述帧类型标识能够识别所述多个LTR编码图像组各自的首帧的帧类型;
第二发送模块,用于将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器。
本申请实施例第五方面提供一种CDN缓存服务器,所述CDN缓存服务器包括:
第一接收模块,用于接收视频播放客户端发送的视频流请求;
第一提取模块,用于提取所缓存的所述编码器最新发送的一个编码图像组;
确定模块,用于对所提取的编码图像组进行解析,确定该编码图像组是否是携带帧类型标识的LTR编码图像组;
第二提取模块,用于在所提取的编码图像组是所述LTR编码图像组的情况下,提取所缓存的该LTR编码图像组的所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
第三发送模块,用于将所提取的LTR编码图像组及其所有参考编码图像组,发送给所述视频播放客户端,以使所述视频播放客户端解码该LTR编码图像组。
本申请实施例第六方面提供一种解码器,所述解码器配置在用户终端中,所述用户终端还配置有视频播放客户端;所述解码器包括:
第二接收模块,用于接收并缓存CDN缓存服务器当前发送的LTR编码图像组及其所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
解码模块,用于参考当前接收到的LTR编码图像组的所有参考编码图像组,对该LTR编码图像组进行解码;
第四发送模块,用于将解码后的视频流发送给所述视频播放客户端。
本申请实施例第七方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请第一方面所述的方法中的步骤。
本申请实施例第八方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请第一方面所述的方法的步骤。
本申请实施例提供了一种视频处理方法,在对当前的视频流进行编码时,将原来的IDR帧间隔作为LTR帧间隔,将当前的视频流编码成多个LTR编码图像组,即:利用LTR帧代替采用原来的规则时应当编码为IDR帧的各帧,达到利用多个LTR编码图像组代替原来的IDR编码图像组的目的,使得本申请可以按照一定的倍数扩大原来的IDR帧之间的间隔,从而避免编码器频繁地对IDR帧进行编码。由于CDN缓存服务器只能辨别IDR帧,因此,在编码完成LTR帧后,还需要为各个LTR编码图像组的首帧添加帧类型标识,使得CDN缓存服务器可以识别LTR帧,并进一步实现编码后的视频流的缓存和转发。本申请通过使用LTR帧代替IDR帧,扩大了IDR帧之间的间隔,避免了频繁地对码效率较低的IDR帧进行编码,从而提高了视频流的编码效率,改善了用户终端接收到的视频的质量,当本申请中的视频流编码方法应用到直播场景中,直播端实时编码视频流并提供给用户终端时,改善直播视频的质量的效果尤为突出。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例示出的一种实施环境的示意图;
图2是本申请一实施例示出的第一种视频处理方法的流程图;
图2A是相关技术中的一种已编码的视频流的结构示意图;
图2B是本申请中的一种已编码的视频流的结构示意图;
图3是本申请一实施例示出的编码LTR编码图像组的首帧的方法的流程图;
图4是本申请一实施例示出的调整视频流观看的延时的方法的流程图;
图5是本申请一实施例示出的第二种视频处理方法的流程图;
图6是本申请一实施例示出的CDN缓存服务器缓存视频流的方法的流程图;
图6A-图6B是本申请一实施例示出的CDN缓存服务器缓存视频流的方法的步骤图;
图7是本申请一实施例示出的去帧处理后的缓存队列的状态示意图;
图8是本申请一实施例示出的第三种视频处理方法的流程图;
图8A-图8B是本申请一实施例示出的解码视频流的步骤图;
图9是本申请一实施例示出的一种编码器的结构示意图;
图10是本申请一实施例示出的一种CDN缓存服务器的结构示意图;
图11是本申请一实施例示出的一种解码器的结构示意图;
图12是本申请一实施例示出的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的视频处理方法可以应用到视频直播场景中,视频直播端实时获取直播视频流并通过编码器进行编码,CDN(Content Delivery Network,内容分发网络)缓存服务器缓存与转发视频直播端发送的编码后的视频流,用户终端通过CDN缓存服务器获取到实时的直播视频流,通过解码器解码视频流,并观看视频直播。当然,本申请中的视频处理方法还可以直接或间接地应用其他视频编码的场景中,以改善用户终端观看的视频的质量,本申请对此不作具体限制。
为便于陈述本申请所提出的视频处理方法,本申请各个实施例将视频处理方法应用到视频直播场景中,即:本申请中所指的编码器设置于视频直播端,本申请中所指的解码器设置于正在观看视频直播端发送的直播视频的用户终端。
图1是本申请一实施例示出的一种实施环境的示意图。参照图1,该实施环境包括:视频直播端100、CDN缓存服务器200以及用户终端300。CDN缓存服务器200分别与视频直播端100和用户终端300通信连接。本申请中出现的CDN服务器即为CDN缓存服务器200。
其中,视频直播端100可以是任意设置有编码器的终端设备,例如:个人电脑(Personal Computer,PC)、平板电脑、智能手机等终端设备;CDN缓存服务器200可以是任意具有接收、存储以及转发视频流功能的网络服务器,或者,若干台网络服务器组成的服务器集群;用户终端300可以是任意设置有解码器的终端设备,例如:个人电脑、平板电脑、智能手机等终端设备。
在对本申请所提供的视频处理方法进行说明之前,首先参照图1,对相关技术中的视频直播端100实时编码直播视频流以供用户终端300观看直播的过程做简要说明。
图2A是相关技术中的一种已编码的视频流的结构示意图。参照图2A,在相关技术中,视频直播端100将直播视频流编码为IDR编码图像组。其中,IDR编码图像组可以包括:IDR帧、P帧以及B帧。IDR帧是采用帧内压缩技术所编码得到的帧(在不参考其他帧的情况下,IDR帧可独立解码得到完整的图像)。
一个IDR编码图像组仅编码有一个IDR帧,且该IDR帧为该IDR编码图像组的首帧。视频直播端100以IDR编码图像组为单位向CDN缓存服务器200发送视频流,视频直播端100每编码完一个IDR编码图像组,将该IDR编码图像组发送到CDN缓存服务器200,CDN缓存服务器200以IDR编码图像组为单位进行缓存,当用户终端300向CDN缓存服务器200发起获取视频流的请求时,CDN缓存服务器200将所有已缓存的IDR编码图像组(通常情况下,CDN缓存服务器200只缓存最新的一定数量的IDR编码图像组)发送给用户终端300,以供用户终端300观看。
一个IDR编码图像组也即一个GOP(Group of Pictures,图像组,也即由IDR帧及与其相邻的下一个IDR帧之间的帧所组成的图像组),由于用户终端300观看从CDN缓存服务器200获取的视频流的延时与GOP(Group of Pictures,图像组)的时长成正比(理论上,用户观看视频流的平均延时为GOP时长的一半),因此,为了缩短用户终端300观看视频流的延时,IDR帧间隔通常被设置的较短,例如:可通过减少IDR编码图像组的图像帧的数量以缩短IDR帧间隔,然而,这种方式使得视频直播端100频繁地对IDR帧进行编码,由于IDR帧的编码效率明显高于P帧或B帧,因此,相关技术中的这种视频处理方式的编码效率较低。
图2B是本申请中的一种已编码的视频流的结构示意图。参照图2B,本申请正是基于相关技术中的视频处理方式存在编码效率较低的问题,做出了改进,具体的改进思路为:将相关技术中的一部分IDR帧替换为LTR(Long Term Reference,长期参考帧)帧,换言之,将一部分IDR编码图像组替换为LTR编码图像组,以增大IDR帧间隔,避免频繁地编码IDR帧,从而提高编码效率,改善用户终端300观看到的直播视频的质量。同时,在将一部分IDR编码图像组替换为LTR编码图像组之后,不再通过调整IDR帧间隔来控制用户终端300观看视频流的延时,而是通过调整LTR帧间隔来控制用户终端300观看视频流的延时。上述改进思路中同时考虑到观看视频流的延时和视频流质量,能保证在将观看视频流的延时控制住在一定范围内的情况下,有效改善视频流质量,提高用户的直播观看体验。
下面将对本申请提供的一种视频处理方法进行详细说明。
本申请首先提供了一种视频流编码方法,应用于一种编码器,该编码器设置于图1中的视频直播端100。在本申请各个实施例中,编码器采用的编码标准为支持LTR帧技术的编码标准,例如:编码器可以采用H.264标准或者HEVC编码标准对视频流进行编码。
图2是本申请一实施例示出的第一种视频处理方法的流程图。参照图2,该视频流编码方法包括:
步骤S11:将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组。
在本申请各个实施例中,如未特别说明,所提到的一个GOP均是指:相邻的两个IDR帧之间所有的编码图像组。
一个GOP中的编码图像组的类型包括:IDR编码图像组和LTR编码图像组。在一个GOP中,IDR编码图像组只有一个,且该IDR编码图像组为该GOP中的首个编码图像组,因此,在编码LTR编码图像组之前,需要首先编码得到IDR编码图像组。
示例地,当IDR编码图像组规则为:一个IDR编码图像组中的IDR帧的数量为1,P帧的数量为2,B帧的数量为2时,得到的IDR编码图像组的帧序列可以为:IDR P B P B。当然,P帧和B帧的数量可以根据实际需求任意设置,如图2B中的IDR编码图像组所示。
步骤S12:将所述IDR编码图像组发送给CDN缓存服务器。
在本申请各个实施例中,编码器是以编码图像组为单位向CDN缓存服务器200发送编码后的视频流的。换言之,编码器每编码完成一个IDR编码图像组或LTR编码图像组,会将该IDR编码图像组或LTR编码图像组发送至CDN缓存服务器200。其中,CDN缓存服务器200用于缓存编码器发送的编码图像组,本申请中CDN缓存服务器200缓存编码图像组的方式,与相关技术中CDN缓存服务器200缓存编码图像组的方式不同,关于CDN缓存服务器200具体如何缓存编码图像组将下文详细说明。
因此,当GOP中的首个IDR编码图像组编码完成后,编码器会立即将该IDR编码图像组发送至CDN缓存服务器200。示例地,当步骤S11中帧序列为:IDR P B P B的IDR编码图像组编码完成后,编码器会立即将该IDR编码图像组发送至CDN缓存服务器200以缓存。
步骤S13:按照IDR帧间隔为多个LTR帧间隔的编码规则,将当前待编码的视频流编码为多个LTR编码图像组,所述LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的。
IDR帧间隔为多个LTR帧间隔的编码规则,是指:LTR编码图像组的长度与首个IDR编码图像组的长度相同的编码规则。在本申请各个实施例中,编码图像组的长度指的是编码图像组中包含的图像帧的数量。
LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的。即:在一个GOP中,第一个IDR编码图像组的首帧采用帧内压缩技术编码,其余的LTR编码图像组的首帧可以参考之前所有的已编码得到的IDR帧或者LTR帧进行编码。举例来讲,在编码完首个IDR编码图像组后,可以将第二个LTR编码图像组的首帧参考第一个IDR帧进行编码,可以将第三个LTR编码图像组的首帧参考第一个IDR帧或第二个LTR帧进行编码。
示例地,当IDR编码图像组规则为:一个IDR编码图像组中的IDR帧的数量为1,P帧的数量为2,B帧的数量为2时,采用相关技术中提供的视频流编码方法编码得到的视频流的结构可以如图2A所示。
而采用本申请提供的视频流编码方法编码得到的一个GOP的结构可以如图2B所示。IDR编码图像组1、LTR编码图像组2-LTR编码图像组4表示按照时间先后顺序依次编码得到的编码图像组。因此,图2B中的一个GOP的长度是图2A中的一个GOP的长度的4倍。
步骤S14:为所述多个LTR编码图像组各自的首帧添加帧类型标识,以使所述CDN缓存服务器根据所述帧类型标识能够识别所述多个LTR编码图像组各自的首帧的帧类型。
在相关技术中,CDN缓存服务器200为每个IDR编码图像组分配一个缓存块,以IDR编码图像组为单位对视频流进行缓存,因此CDN缓存服务器200只能识别IDR帧。而采用本申请的视频流编码方法在将一部分IDR编码图像组替换为LTR编码图像组以后,为使CDN缓存服务器200能够识别LTR帧,需要为LTR帧添加帧类型标识,使得CDN缓存服务器200在缓存多个LTR编码图像组时可以以LTR编码图像组为单位对视频流进行缓存。
步骤S15:将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器。
在本实施例中,编码器每编码完一个LTR编码图像组,首先为该LTR编码图像组的首帧添加帧类型标识,然后将该LTR编码图像组发送给CDN缓存服务器200。
本申请通过扩大IDR帧之间的间隔来避免频繁地对编码效率较低的IDR帧进行编码,与相关技术中的编码方式相比,本申请能显著提高视频流的编码效率(即:压缩效率),在相同码率下,采用本申请的编码方式得到的视频流的质量,显著高于采用相关技术中的编码方式所得到的视频流的质量。换言之,当视频流的质量相同时,采用本申请的编码方式得到的视频流所要求的码率明显低于采用相关技术中的编码方式得到的视频流所要求的码率,因此,能有效地提高用户观看直播视频的体验。
本申请中,在利用编码器对当前的视频流进行编码时,首先编码得到IDR编码图像组,然后将原来的IDR帧间隔(该IDR编码图像组的长度)作为LTR帧间隔,将当前的视频流编码成多个LTR编码图像组,即:利用LTR帧代替采用原来的规则时应当编码为IDR帧的各帧,达到利用多个LTR编码图像组代替原来的IDR编码图像组的目的,使得本申请可以按照一定的倍数扩大原来的IDR帧之间的间隔,从而避免编码器频繁地对IDR帧进行编码。由于CDN缓存服务器200只能辨别IDR帧,因此,在编码完成LTR帧后,还需要为各个LTR编码图像组的首帧添加帧类型标识,使得CDN缓存服务器200可以识别LTR帧,并进一步实现编码后的视频流的存储和转发。本申请通过扩大IDR帧之间的间隔,来避免频繁地对编码效率较低的IDR帧进行编码,可以显著提高视频流的编码效率,改善用户终端300接收到的视频的质量。当本申请中的视频流编码方法应用到直播场景中,直播端实时编码视频流并提供给用户终端300观看时,改善直播视频的质量的效果尤为突出。
图3是本申请一实施例示出的编码LTR编码图像组的首帧的方法的流程图。参照图3,多个LTR编码图像组各自的首帧可以按照以下步骤编码得到:
步骤S21:确定最新编码的IDR帧。
在本实施例中,最新编码的IDR帧即为当前帧所在的GOP的首帧。
步骤S22:参考所述最新编码的IDR帧,将所述多个LTR编码图像组中第一个LTR编码图像组的首帧编码为LTR帧。
以图2B中的LTR编码图像组2为例,其首帧是参考IDR编码图像组1的首帧编码得到的。
步骤S23:确定目标参考帧,所述目标参考帧为最新编码的IDR帧或最新编码的LTR帧。
步骤S24:参考所述目标参考帧,将所述多个LTR编码图像组中其他各个LTR编码图像组的首帧编码为LTR帧或LTRP帧。
在图2B中,对于LTR编码图像组3的首帧,目标参考帧可以是IDR编码图像组1的首帧,也可以是LTR编码图像组2的首帧;对于LTR编码图像组4的首帧,目标参考帧可以是LTR编码图像组3的首帧,也可以是IDR编码图像组1的首帧,以此类推。
在本申请中,目标参考帧既可以是最新编码的IDR帧或最新编码的LTR帧,还可以是最新编码的IDR帧和该最新编码的IDR帧之后所有已编码的LTR帧。
示例地,在图2B中,对于LTR编码图像组4的首帧,目标参考帧还可以是LTR编码图像组2的首帧。
在本实施例中,IDR帧也是LTR帧,LTR帧也是LTRP(Long Term ReferencePicture,以LTR帧为参考帧的图像帧)帧。LTRP帧是参考在前的LTR帧编码而成的,且编码效率高于IDR帧。
示例地,在图2B中,如果LTR编码图像组3的首帧是参考LTR编码图像组2的首帧编码得到的,则其本质上是一个LTRP帧,也可以写作LTRP帧,当LTR编码图像组3的首帧参考IDR编码图像组1的首帧编码时,其本质上也是一个LTRP帧,也可以写作LTRP帧。LTRP帧既可以作为长期参考帧,也可以作为短期参考帧。在本申请各个实施例中,所有的LTR帧都是参考IDR帧或LTR帧编码得到的,因此都可以写作LTRP帧。
可选地,多个LTR编码图像组中除首帧外的其他帧可以按照以下步骤编码得到:
参考该LTR编码图像组的首帧,编码B帧或P帧;或
参考该LTR编码图像组中的首帧之后的其他参考帧,编码B帧或P帧,所述其他参考帧为已编码的并用作短期参考帧的B帧或P帧。
示例地,对于一个序列为LTR P0 B1 P2 B3 P4的LTR编码图像组,LTR帧之后已编码的B帧或P帧可以作为短期参考帧,为该LTR编码图像组中还未编码的帧提供参考,例如:P0帧可以参考LTR帧编码(一般情况下,P0帧只参考该LTR图像组里的LTR帧编码),B1帧可以参考LTR帧和P0帧编码,P2帧可以参考P0帧编码。此外,当编码器允许多帧参考时,P2帧可以同时参考LTR帧和P0帧编码,B3帧可以参考P0帧和P2帧编码,以此类推。在本申请实施例中,编码B帧或P帧的方式为编码IDR图像组时采用的常规的编码B帧或P帧的方式,故在此不作赘述。
实际上,没有被CDN缓存服务器成功接收到的LTR帧/LTRP帧无法被编码器用作参考帧。为便于陈述本申请所提出的视频处理方法,本申请各个实施例均是以CDN缓存服务器能成功接收到编码器发送的LTR帧/LTRP帧为前提条件进行说明的。
可选地,在本申请中,可以对编码图像组(包括:IDR编码图像组和LTR编码图像组)进行FEC(Forward Error Correction,前向纠错)保护,以增强编码图像组的解码恢复能力。具体地,可以按照以下步骤对编码图像组进行FEC编码:
对所述编码图像组的首帧进行第一保护强度的FEC编码,对所述编码图像组的除首帧外的其他帧进行第二保护强度的FEC编码,所述第二保护强度弱于所述第一保护强度。在本实施例中,由于增加了IDR帧间隔,使得GOP的长度较长,当某个GOP中的参考帧(例如:LTR帧)出现故障时,可能导致错误传播,使参考该出现故障的参考帧编码而成的其他帧无法正常解码,进而导致用户终端300播放视频流时出现卡顿或中断,需要等待下一个GOP才能恢复视频流,而等待下一个GOP的时长通常较长。为了克服这个问题,本申请对每个编码图像组的首帧做较强的FEC保护,以保证该帧的解码恢复能力;而除首帧以外的其他帧即便无法正常解码,也不会导致错误传播,因此对这些除首帧以外的其他帧做较弱的FEC保护,或者不做FEC保护。
本申请为不同类型的帧分别进行了两种不同保护强度的FEC编码,例如,第一保护强度的FEC编码和第二保护强度的FEC编码,且第一保护强度强于第二保护强度。针对编码图像组的首帧(例如:IDR帧、LTR帧,或者LTRP帧)进行第一保护强度的FEC编码,针对编码图像组的除首帧外的其他帧(例如:P或B帧)进行第二保护强度的FEC编码。
本申请将所有的帧划分为两个层次,通过对第一层次的帧(包括:IDR帧、LTR帧以及LTRP帧)做较强的FEC保护(第一保护强度的FEC编码),对第二层次的帧(包括:P帧和B帧)做较弱的FEC保护(第二保护强度的FEC编码)或者不做FEC保护(当第二保强度为零时,相当于不做FEC保护),保证了IDR帧/LTR帧/LTRP帧的可靠传输以及解码恢复能力。
在此基础上,上述步骤S15可以包括:
将多个携带帧类型标识且经过FEC编码后的LTR编码图像组分别发送给所述CDN缓存服务器200。
在本实施例中,在编码各个编码图像组时采用了FEC前向纠错技术,保证了各个编码图像组中的参考帧的解码恢复能力,防止参考帧出现故障时影响其他帧的解码,进而保证了在图像帧出现故障以后能快速恢复视频流。
图4是本申请一实施例示出的调整视频流观看的延时的方法的流程图。参照图4,可以按照以下步骤调整视频流观看的延时:
步骤S31:接收时延调整指令,所述时延调整指令用于调整视频流观看的延时;
步骤S32:响应于所述时延调整指令,缩短所述LTR帧间隔。
在本实施例中,视频流观看的延时与LTR帧间隔成正比,具体地:LTR帧间隔越长,视频流观看的延时越长;LTR帧间隔越短,视频流观看的延时越短。因此,通过控制LTR帧间隔可以调整用户终端300的用户观看视频流的延时。
可选地,上述步骤S32可以为:
响应于所述时延调整指令,减少所述LTR编码图像组包括的编码图像帧的数量。
在本实施例中,由于各个帧的大小通常是固定的,或者只存在细微的差距,因此,LTR帧间隔与编码图像组中的图像帧的数量成正比,当编码图像组中的图像帧越多,LTR帧间隔越长,当编码图像组中的图像帧越少,LTR帧间隔越短。因此,通过控制码图像组中的图像帧的数量可以调整用户终端300的用户观看视频流的延时。
本申请实施例所提供的视频流编码方法同时兼顾了编码效率与观看延时,即:在通过增大IDR帧间隔来提升编码效率以及改善视频流的质量的同时,可以通过控制LTR帧间隔来调整用户终端300的用户观看视频流的延时,克服了相关技术中存在的在缩短观看延时的同时无法保证编码效率的问题。
本申请还提供了一种编码图像组传输方法,应用于图1中的CDN缓存服务器200。图5是本申请一实施例示出的第二种视频处理方法的流程图。
参照图5,传输编码图像组的过程包括以下步骤:
步骤S41:接收视频播放客户端发送的视频流请求。
在本实施例中,用户可以在用户终端300安装视频播放客户端,通过视频客户端发起获取视频流的请求。举例来讲,用户可以在视频播放客户端发起观看目标视频直播的请求,视频播放客户端将该请求发送给视频直播端100,视频直播端100向视频播放客户端返回负责缓存及转发目标视频直播的视频流的CDN缓存服务器200的IP地址,视频播放客户端根据该IP地址向CDN缓存服务器200发起获取视频流的请求。
步骤S42:提取所缓存的所述编码器最新发送的一个编码图像组。
CDN缓存服务器200采用FIFO(First In First Out,先入先出)规则缓存视频直播端100发送的已编码的视频流。且CDN缓存服务器200通常情况下只缓存预设数量的编码图像组。因此,当CDN缓存服务器200接收到获取视频流的请求时,根据接收到该请求的时刻,可以首先提取出距离该时刻的最新发送的一个编码图像组。
参照图2B,若当前的CDN缓存服务器200中只缓存了4个编码图像组1,那么提取出的最新发送的一个编码图像组应当为LTR编码图像组4。
步骤S43:对所提取的编码图像组进行解析,确定该编码图像组是否是携带帧类型标识的LTR编码图像组。
由于CDN缓存服务器200在缓存之前已经判断过该LTR编码图像组的首帧是否携带帧类型标识,因此,已经存入CDN缓存服务器200的各个LTR编码图像组的首帧必然携带帧类型标识。
步骤S44:在所提取的编码图像组是所述LTR编码图像组的情况下,提取所缓存的该LTR编码图像组的所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组。
参照图2B,若当前的CDN缓存服务器200中只缓存了4个编码图像组,那么总的提取出的编码图像组应当为:IDR编码图像组1、LTR编码图像组2-LTR编码图像组4。其中,最新发送的一个编码图像组为LTR编码图像组4,最新的IDR编码图像组为IDR编码图像组1。
步骤S45:将所提取的LTR编码图像组及其所有参考编码图像组,发送给所述视频播放客户端,以使所述视频播放客户端解码该LTR编码图像组。
在本实施例中,所有参考编码图像组用于为用户终端300解码视频流提供参考帧。由于用户请求的视频是直播视频,因此,CDN缓存服务器200将最新的一个LTR编码图像组发送给用户终端300,使得用户终端300从该最新的LTR编码图像组开始播放直播视频。由于该最新的LTR编码图像组的首帧需要参考之前已编码的编码图像组的首帧才能解码,因此,CDN缓存服务器200除了将该最新的LTR编码图像组发送给CDN缓存服务器200之外,还需要将该最新的LTR编码图像组的所有参考编码图像组一并发送给用户终端300。
可选地,在上述步骤S44之后,还可以包括:
在所提取的编码图像组是以IDR帧为首帧的IDR编码图像的情况下,将该IDR编码图像组发送给所述视频播放客户端,以使所述视频播放客户端解码该IDR编码图像组。
参照图2B,若CDN缓存服务器200只缓存了IDR编码图像组1,当接收到获取视频流的请求时,将该IDR编码图像组1发送给用户终端300即可。
在本申请实施例中,CDN缓存服务器200中设置有缓存队列。图6是本申请一实施例示出的CDN缓存服务器缓存视频流的方法的流程图。参照图6,CDN缓存服务器200缓存视频流的方法包括以下步骤:
步骤S51:接收所述编码器当前发送的一个编码图像组;
步骤S52:对当前接收的该编码图像组进行解析,确定当前接收的该编码图像组是携带帧类型标识的LTR编码图像组,还是所述IDR编码图像组;
步骤S53:在当前接收的该编码图像组是所述LTR编码图像组的情况下,将该LTR编码图像组添加到所述缓存队列的队尾,并去除该LTR编码图像组之前的各个编码图像组中除首帧之外的其他帧;
步骤S54:在当前接收的该编码图像组是所述IDR编码图像组的情况下,将所述缓存队列清空,并将该IDR图像组添加到该空的缓存队列的队首。
图6A-图6B是本申请一实施例示出的CDN缓存服务器缓存视频流的方法的步骤图,下面将参照图6A-图6B对上述步骤S51-步骤S54进行详细说明。
若缓存队列设置有N个缓存块,即队列长度为N,且已缓存有一个IDR编码图像组1,如图6A所示。
在缓存多个LTR编码图像组时,首先接收编码器当前发送的一个编码图像组,然后判断该编码图像组是IDR编码图像组还是LTR编码图像组,若该编码图像组为LTR编码图像组,CDN缓存服务器200将该LTR编码图像组缓存入名称为LTR编码图像组2的缓存块中,如图6B所示。
当接收到下一个LTR编码图像组时,将该LTR编码图像组添加到名称为LTR编码图像组3的缓存块中。以此类推,在接收到其他LTR编码图像组时,依次将该LTR编码图像组添加对原来的缓存队列的队尾。
当接收到IDR编码图像组时,CDN缓存服务器200将缓存队列中所有的编码图像组清空,重新在名称为IDR编码图像组1的缓存块中缓存入该新的IDR编码图像组。通常情况下,缓存队列只缓存最近的一个GOP,对于以前的GOP,由于缓存时间较长,对于直播视频来说意义不大,因此一般不做长时间存储,当然,也可以保留缓存时间较长的GOP,在向用户终端300发送视频流的时候只发送当前存储的最新的一个GOP即可。
在本申请中,CDN缓存服务器200会对缓存的编码图像组进行去帧处理。
在本实施例中,CDN缓存服务器每接收到一个新的LTR编码图像组,就对该新的LTR编码图像组之前的所有的编码图像组做去帧处理。
示例地,去帧以后的缓存队列的结构如图7所示,图7是本申请一实施例示出的去帧处理后的缓存队列的状态示意图。图7中,LTR编码图像组4为CDN缓存服务器中最新的编码图像组。
在对整个缓存队列做去帧处理以后,当接收到用户终端300发起的获取视频流的请求时,可以直接将最新的编码图像组、最新编码的IDR帧以及最新的编码图像组与最新编码的IDR帧之间的所有编码图像组的首帧按照从队首到队尾的顺序依次发送给用户终端300。
在本申请实施例中,CDN缓存服务器200对缓存的编码图像组进行去帧处理,能有效地减轻服务器的缓存压力,使用户终端300在接收到经过去帧处理的各个编码图像组时,能快速得解码得到参考帧,能提高用户终端300的解码速度,方便用户快速地观看到直播视频。
在本申请中,缓存队列的总长度是根据编码器的IDR帧间隔确定的,IDR帧间隔为N个LTR帧间隔;缓存队列包括N个缓存块,每个缓存块用于缓存编码器发送的一个编码图像组。
在本实施例中,缓存队列的长度可以根据一个GOP中的LTR编码图像组的数量来设置。若一个GOP中的LTR编码图像组有N个,缓存队列可以设置N个缓存块。其中,每一个缓存块的大小可以根据编码图像组的大小来设置。
本申请还提供了一种视频流解码方法,应用于图1中的解码器,该解码器设置于图1中的用户终端300,用户终端300还设置有视频播放客户端。图8是本申请一实施例示出的第三种视频处理方法的流程图。参照图8,本申请的视频流解码方法可以包括以下步骤:
步骤S71:接收并缓存CDN缓存服务器当前发送的LTR编码图像组及其所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组。
步骤S72:参考当前接收到的LTR编码图像组的所有参考编码图像组,对该LTR编码图像组进行解码。
步骤S73:将解码后的视频流发送给所述视频播放客户端。
图8A-图8B是本申请一实施例示出的解码视频流的步骤图,下面将参照图8A-图8B对上述步骤S71-步骤S73进行详细说明。
在本实施例中,CDN缓存服务器200中设置有DPB(Decoded Picture Buffer,解码图像缓存),用于存放所有解码得到的参考帧,其结构如图8A所示。
假设CDN缓存服务器200将图7中缓存的所有视频流发送给用户终端300,用户终端300的解码器首先提取出IDR编码图像组1,将解码首帧IDR帧得到的完整图像帧缓存到参考帧1的位置;然后提取出LTR编码图像组2,将解码首帧LTR帧得到的完整图像帧缓存到参考帧2的位置,此时的DPB的结构如图8B所示;以此类推,直到完成图7中缓存的所有的编码图像组的解码。用户终端300在利用视频播放客户端播放直播视频时,直接跳到最新的编码图像组进行播放。
在发送完缓存队列中缓存的视频以后,CDN缓存服务器200再实时接收视频直播端100发送的编码图像组,一方面将这些编码图像组进行缓存,另一方面将这些实时的编码图像组完整地发送给已经在观看直播视频的用户终端300。
基于同一发明构思,本申请还提供了一种编码器900。图9是本申请一实施例示出的一种编码器的结构示意图。参照图9,编码器900包括:
第一编码模块901,用于将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组;
第一发送模块902,用于将所述IDR编码图像组发送给CDN缓存服务器200;
第二编码模块903,用于按照IDR帧间隔为多个LTR帧间隔的编码规则,将当前待编码的视频流编码为多个LTR编码图像组,所述LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的;
标识模块904,用于为所述多个LTR编码图像组各自的首帧添加帧类型标识,以使所述CDN缓存服务器200根据所述帧类型标识能够识别所述多个LTR编码图像组各自的首帧的帧类型;
第二发送模块905,用于将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器200。
可选地,所述第二编码模块903包括:
IDR帧确定模块,用于确定最新编码的IDR帧;
第一LTR帧编码模块,用于参考所述最新编码的IDR帧,将所述多个LTR编码图像组中第一个LTR编码图像组的首帧编码为LTR帧;
目标参考帧确定模块,用于确定目标参考帧,所述目标参考帧为最新编码的IDR帧或最新编码的LTR帧;
第二LTR帧编码模块,用于参考所述目标参考帧,将所述多个LTR编码图像组中其他各个LTR编码图像组的首帧编码为LTR帧或LTRP帧。
可选地,所述第二编码模块903还包括:
第一B/P帧编码模块,用于参考该LTR编码图像组的首帧,编码B帧或P帧;或
第二B/P帧编码模块,用于参考该LTR编码图像组的首帧之后的其他参考帧,编码B帧或P帧,所述其他参考帧为已编码的并用作短期参考帧的B帧或P帧。
可选地,编码图像组包括IDR编码图像组和LTR编码图像组,所述编码器900还包括:
FEC编码模块,用于对所述编码图像组的首帧进行第一保护强度的FEC编码,对所述编码图像组的除首帧外的其他帧进行第二保护强度的FEC编码,所述第二保护强度弱于所述第一保护强度;
所述第一发送模块902包括:
第一发送子模块,用于将经过FEC编码后的IDR编码图像组发送给所述CDN缓存服务器;
所述第二发送模块905包括:
第二发送子模块,用于将多个携带帧类型标识且经过FEC编码后的LTR编码图像组分别发送给所述CDN缓存服务器200。
可选地,所述编码器900还包括:
延时指令接收模块,用于接收时延调整指令,所述时延调整指令用于调整视频流观看的延时;
延时指令响应模块,用于响应于所述时延调整指令,缩短所述LTR帧间隔。
可选地,所述延时指令响应模块包括:
数量调整模块,用于响应于所述时延调整指令,减少所述LTR编码图像组包括的编码图像帧的数量。
基于同一发明构思,本申请还提供了一种CDN缓存服务器200。图10是本申请一实施例示出的一种CDN缓存服务器的结构示意图。参照图10,CDN缓存服务器200包括:
第一接收模块201,用于接收视频播放客户端发送的视频流请求;
第一提取模块202,用于提取所缓存的所述编码器最新发送的一个编码图像组;
确定模块203,用于对所提取的编码图像组进行解析,确定该编码图像组是否是携带帧类型标识的LTR编码图像组;
第二提取模块204,用于在所提取的编码图像组是所述LTR编码图像组的情况下,提取所缓存的该LTR编码图像组的所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
第三发送模块205,用于将所提取的LTR编码图像组及其所有参考编码图像组,发送给所述视频播放客户端,以使所述视频播放客户端解码该LTR编码图像组。
可选地,CDN缓存服务器200还包括:
第三提取模块,用于在所提取的编码图像组是以IDR帧为首帧的IDR编码图像的情况下,将该IDR编码图像组发送给所述视频播放客户端,以使所述视频播放客户端解码该IDR编码图像组。
可选地,CDN缓存服务器200中设置有缓存队列;CDN缓存服务器200还包括:
图像组接收模块,用于接收所述编码器当前发送的一个编码图像组;
图像组解析模块,用于对当前接收的该编码图像组进行解析,确定当前接收的该编码图像组是携带帧类型标识的LTR编码图像组,还是所述IDR编码图像组;
第一缓存模块,用于在当前接收的该编码图像组是所述LTR编码图像组的情况下,将该LTR编码图像组添加到所述缓存队列的队尾;
第二缓存模块,用于在当前接收的该编码图像组是所述IDR编码图像组的情况下,将所述缓存队列清空,并将该IDR图像组添加到该空的缓存队列的队首。
可选地,所述缓存队列的总长度是根据所述编码器900的IDR帧间隔确定的,所述IDR帧间隔为N个LTR帧间隔;所述缓存队列包括N个缓存块,每个缓存块用于缓存所述编码器900发送的一个编码图像组。
基于同一发明构思,本申请还提供了一种解码器1100,配置在用户终端300中,用户终端300还配置有视频播放客户端。图11是本申请一实施例示出的一种解码器的结构示意图。参照图11,解码器1100包括:
第二接收模块1101,用于接收并缓存CDN缓存服务器当前发送的LTR编码图像组及其所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
解码模块1102,用于参考当前接收到的LTR编码图像组的所有参考编码图像组,对该LTR编码图像组进行解码;
第四发送模块1103,用于将解码后的视频流发送给所述视频播放客户端。
基于同一发明构思,本申请另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的方法中的步骤。
基于同一发明构思,本申请另一实施例提供一种电子设备1200。图12是本申请一实施例示出的一种电子设备的结构示意图。参照图12,电子设备1200包括存储器1202、处理器1201及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的方法中的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种视频处理方法、编码器、CDN转发服务器、解码器、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种视频处理方法,其特征在于,应用于编码器,所述方法包括:
将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组;
将所述IDR编码图像组发送给CDN缓存服务器;
按照IDR帧间隔为多个LTR帧间隔的编码规则,将当前待编码的视频流编码为多个LTR编码图像组,所述LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的;
为所述多个LTR编码图像组各自的首帧添加帧类型标识,以使所述CDN缓存服务器根据所述帧类型标识能够识别所述多个LTR编码图像组各自的首帧的帧类型;
将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器;
所述多个LTR编码图像组各自的首帧是按照以下步骤编码得到的:
确定最新编码的IDR帧;
参考所述最新编码的IDR帧,将所述多个LTR编码图像组中第一个LTR编码图像组的首帧编码为LTR帧;
确定目标参考帧,所述目标参考帧为最新编码的IDR帧或最新编码的LTR帧;
参考所述目标参考帧,将所述多个LTR编码图像组中其他各个LTR编码图像组的首帧编码为LTR帧或LTRP帧。
2.根据权利要求1所述的方法,其特征在于,所述LTR编码图像组中除首帧外的其他帧是按照以下步骤编码得到的:
参考该LTR编码图像组的首帧,编码B帧或P帧;或
参考该LTR编码图像组中的首帧之后的其他参考帧,编码B帧或P帧,所述其他参考帧为已编码的并用作短期参考帧的B帧或P帧。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照以下步骤对编码图像组进行FEC编码,所述编码图像组包括IDR编码图像组和LTR编码图像组:
对所述编码图像组的首帧进行第一保护强度的FEC编码,对所述LTR编码图像组的除首帧外的其他帧进行第二保护强度的FEC编码,所述第二保护强度弱于所述第一保护强度;
将所述IDR编码图像组发送给CDN缓存服务器,包括:
将经过FEC编码后的IDR编码图像组发送给所述CDN缓存服务器;
将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器,包括:
将多个携带帧类型标识且经过FEC编码后的LTR编码图像组分别发送给所述CDN缓存服务器。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收时延调整指令,所述时延调整指令用于调整视频流观看的延时;
响应于所述时延调整指令,缩短所述LTR帧间隔。
5.根据权利要求4所述的方法,其特征在于,响应于所述时延调整指令,缩短所述LTR帧间隔,包括:
响应于所述时延调整指令,减少所述LTR编码图像组包括的编码图像帧的数量。
6.一种视频处理方法,应用于CDN缓存服务器,方法包括:
接收视频播放客户端发送的视频流请求;
提取所缓存的编码器最新发送的一个编码图像组;
对所提取的编码图像组进行解析,确定该编码图像组是否是携带帧类型标识的LTR编码图像组;
在所提取的编码图像组是所述LTR编码图像组的情况下,提取所缓存的该LTR编码图像组的所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
将所提取的LTR编码图像组及其所有参考编码图像组,发送给所述视频播放客户端,以使所述视频播放客户端解码该LTR编码图像组。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所提取的编码图像组是以IDR帧为首帧的IDR编码图像的情况下,将该IDR编码图像组发送给所述视频播放客户端,以使所述视频播放客户端解码该IDR编码图像组。
8.根据权利要求6所述的方法,其特征在于,所述CDN缓存服务器中设置有缓存队列;所述方法还包括:
接收所述编码器当前发送的一个编码图像组;
对当前接收的该编码图像组进行解析,确定当前接收的该编码图像组是携带帧类型标识的LTR编码图像组,还是所述IDR编码图像组;
在当前接收的该编码图像组是所述LTR编码图像组的情况下,将该LTR编码图像组添加到所述缓存队列的队尾,并去除该LTR编码图像组之前的各个编码图像组中除首帧之外的其他帧;
在当前接收的该编码图像组是所述IDR编码图像组的情况下,将所述缓存队列清空,并将该IDR编码图像组添加到空的缓存队列的队首。
9.根据权利要求8所述的方法,其特征在于,所述缓存队列的总长度是根据所述编码器的IDR帧间隔确定的,所述IDR帧间隔为N个LTR帧间隔;
所述缓存队列包括N个缓存块,每个缓存块用于缓存所述编码器发送的一个编码图像组。
10.一种视频处理方法,应用于解码器,所述解码器配置在用户终端中,所述用户终端还配置有视频播放客户端;所述方法包括:
接收并缓存CDN缓存服务器当前发送的LTR编码图像组及其所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
参考当前接收到的LTR编码图像组的所有参考编码图像组,对该LTR编码图像组进行解码;
将解码后的视频流发送给所述视频播放客户端。
11.一种编码器,其特征在于,包括:
第一编码模块,用于将当前待编码的视频流编码为以IDR帧为首帧的IDR编码图像组;
第一发送模块,用于将所述IDR编码图像组发送给CDN缓存服务器;
第二编码模块,用于按照IDR帧间隔为多个LTR帧间隔的编码规则,将当前待编码的视频流编码为多个LTR编码图像组,所述LTR编码图像组的首帧是参考在前的IDR帧或在前的LTR帧编码而成的;
标识模块,用于为所述多个LTR编码图像组各自的首帧添加帧类型标识,以使所述CDN缓存服务器根据所述帧类型标识能够识别所述多个LTR编码图像组各自的首帧的帧类型;
第二发送模块,用于将多个携带帧类型标识的LTR编码图像组分别发送给所述CDN缓存服务器;
其中,所述第二编码模块包括:
第一确定子模块,用于确定最新编码的IDR帧;
第一LTR帧编码子模块,用于参考所述最新编码的IDR帧,将所述多个LTR编码图像组中第一个LTR编码图像组的首帧编码为LTR帧;
第二确定子模块,用于确定目标参考帧,所述目标参考帧为最新编码的IDR帧或最新编码的LTR帧;
第二LTR帧编码子模块,用于参考所述目标参考帧,将所述多个LTR编码图像组中其他各个LTR编码图像组的首帧编码为LTR帧或LTRP帧。
12.一种CDN缓存服务器,其特征在于,包括:
第一接收模块,用于接收视频播放客户端发送的视频流请求;
第一提取模块,用于提取所缓存的编码器最新发送的一个编码图像组;
确定模块,用于对所提取的编码图像组进行解析,确定该编码图像组是否是携带帧类型标识的LTR编码图像组;
第二提取模块,用于在所提取的编码图像组是所述LTR编码图像组的情况下,提取所缓存的该LTR编码图像组的所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
第三发送模块,用于将所提取的LTR编码图像组及其所有参考编码图像组,发送给所述视频播放客户端,以使所述视频播放客户端解码该LTR编码图像组。
13.一种解码器,其特征在于,所述解码器配置在用户终端中,所述用户终端还配置有视频播放客户端;所述解码器包括:
第二接收模块,用于接收并缓存CDN缓存服务器当前发送的LTR编码图像组及其所有参考编码图像组,该LTR编码图像组的所有参考编码图像组包括:最新的IDR编码图像组、该LTR编码图像组与该最新的IDR编码图像组之间的各个LTR编码图像组;
解码模块,用于参考当前接收到的LTR编码图像组的所有参考编码图像组,对该LTR编码图像组进行解码;
第四发送模块,用于将解码后的视频流发送给所述视频播放客户端。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-10任一所述的方法中的步骤。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行时实现如权利要求1-10任一所述的方法的步骤。
CN201910749725.3A 2019-08-14 2019-08-14 视频处理方法、编码器、cdn服务器、解码器、设备及介质 Active CN110519640B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910749725.3A CN110519640B (zh) 2019-08-14 2019-08-14 视频处理方法、编码器、cdn服务器、解码器、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910749725.3A CN110519640B (zh) 2019-08-14 2019-08-14 视频处理方法、编码器、cdn服务器、解码器、设备及介质

Publications (2)

Publication Number Publication Date
CN110519640A CN110519640A (zh) 2019-11-29
CN110519640B true CN110519640B (zh) 2021-08-13

Family

ID=68625939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910749725.3A Active CN110519640B (zh) 2019-08-14 2019-08-14 视频处理方法、编码器、cdn服务器、解码器、设备及介质

Country Status (1)

Country Link
CN (1) CN110519640B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111010603A (zh) * 2019-12-18 2020-04-14 浙江大华技术股份有限公司 一种视频缓存转发处理方法及装置
CN114339268B (zh) * 2020-10-10 2023-08-29 腾讯科技(深圳)有限公司 一种直播数据处理方法、装置和计算机可读存储介质
CN112822516B (zh) * 2020-12-30 2022-07-26 北京大学 基于数据块重组的图像组传输方法、装置、设备和系统
CN114630124B (zh) * 2022-03-11 2024-03-22 商丘市第一人民医院 一种神经内窥镜备份方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505481A (zh) * 2008-02-05 2009-08-12 天宝导航有限公司 资源调度的装置和方法
CN101841717A (zh) * 2010-05-07 2010-09-22 华为技术有限公司 一种解码的实现方法、软件解码器和解码设备
CN103024374A (zh) * 2011-10-20 2013-04-03 斯凯普公司 视频数据的传输

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104954812A (zh) * 2014-03-27 2015-09-30 腾讯科技(深圳)有限公司 一种视频同步播放的方法、装置及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505481A (zh) * 2008-02-05 2009-08-12 天宝导航有限公司 资源调度的装置和方法
CN101841717A (zh) * 2010-05-07 2010-09-22 华为技术有限公司 一种解码的实现方法、软件解码器和解码设备
CN103024374A (zh) * 2011-10-20 2013-04-03 斯凯普公司 视频数据的传输

Also Published As

Publication number Publication date
CN110519640A (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
CN110519640B (zh) 视频处理方法、编码器、cdn服务器、解码器、设备及介质
US11032575B2 (en) Random access in a video bitstream
US9961398B2 (en) Method and device for switching video streams
JP6562992B2 (ja) デジタルビデオストリーミングにおけるトリック再生
WO2016131223A1 (zh) 一种视频帧丢帧方法及视频发送装置
CN107690073B (zh) 一种视频直播方法及视频直播服务器
CN110784740A (zh) 视频处理方法、装置、服务器及可读存储介质
US10771821B2 (en) Overcoming lost IP packets in streaming video in IP networks
US10277927B2 (en) Movie package file format
US10958972B2 (en) Channel change method and apparatus
CN106998485B (zh) 视频直播方法及装置
WO2020228482A1 (zh) 视频处理方法、装置及系统
CN111447455A (zh) 直播视频流回放处理方法、装置及计算设备
CN111726657A (zh) 直播视频的播放处理方法、装置及服务器
CN111836076A (zh) 视频分辨率切换方法及装置、电子设备
CN107801049B (zh) 一种实时视频传送、播放方法及装置
CN112423140A (zh) 视频播放方法、装置、电子设备和存储介质
CN110708569B (zh) 一种视频处理方法、装置、电子设备及存储介质
CN110996122B (zh) 视频帧传输方法、装置、计算机设备及存储介质
CN105379281B (zh) 用于使用图形处理器的视频解码的图片参考控制
US9667885B2 (en) Systems and methods to achieve interactive special effects
CN111279694A (zh) Gdr码流编码方法、终端设备、机器可读存储介质
CN114615549B (zh) 流媒体seek方法、客户端、存储介质和移动设备
CN116962764A (zh) 流媒体传输方法、装置、设备和存储介质
US20090296701A1 (en) Method and apparatus for improving channel acquisition

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
GR01 Patent grant
GR01 Patent grant