CN110149491B - 视频编码方法、视频解码方法、终端及存储介质 - Google Patents
视频编码方法、视频解码方法、终端及存储介质 Download PDFInfo
- Publication number
- CN110149491B CN110149491B CN201810140540.8A CN201810140540A CN110149491B CN 110149491 B CN110149491 B CN 110149491B CN 201810140540 A CN201810140540 A CN 201810140540A CN 110149491 B CN110149491 B CN 110149491B
- Authority
- CN
- China
- Prior art keywords
- video data
- decoding
- frame
- reference frame
- previous 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.)
- Active
Links
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, rendering scenes according to MPEG-4 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/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/141—Systems for two-way working between two video terminals, e.g. videophone
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/14—Systems for two-way working
- H04N7/15—Conference systems
Abstract
本发明公开了一种视频编码方法、视频解码方法、终端及存储介质,属于互联网技术领域。所述方法包括:接收解码失败提示消息,该解码失败提示消息包括前一帧已编码视频数据的标签索引;将第一参考帧列表中位于标签索引所指示的存储位置上的视频数据设置为不可用参考帧;根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至解码端。本发明在接收到解码失败提示消息时,将解码失败的视频数据设置为不可用参考帧,后续在进行视频编码时,依据可用参考帧进行编码,从而保证解码端可对已编码视频数据进行解码,提高了视频通信质量。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种视频编码方法、视频解码方法、终端及存储介质。
背景技术
随着互联网技术的发展,视频通信具有广泛的应用场景,包括与家人、朋友的双人视频通信场景,以及视频直播、视频会议等多人视频通信场景。视频通信作为现代生活中沟通交流的主要方式,为用户的生活提供了极大的便利,然而由于受网络丢包、网络抖动等因素影响,解码端播放编码端所编码的视频数据时画面质量较差。因此,如何对视频数据进行编码,成为提高视频通信质量的关键。
目前,相关技术在进行视频编码时,主要采用如下方法:预先设定时域层级、帧间隔等编码参数;根据所设置的编码参数,确定参考帧;基于所确定的参考帧,对每帧视频数据进行编码,得到每帧已编码视频数据,进而通过服务器将每帧已编码视频数据发送至解码端。
由于所确定的参考帧是固定的,当网络状况不佳时,如果作为参考帧的已编码视频数据在传输过程中出现丢包现象,解码端不仅无法对该参考帧进行解码,更无法对基于该参考帧所编码的视频数据进行解码,因而视频通信质量较差。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种视频编码方法、视频解码方法、终端及存储介质。所述技术方案如下:
一方面,提供了一种视频编码方法,所述方法包括:
接收解码失败提示消息,所述解码失败提示消息为解码端对前一帧已编码视频数据解码失败时发送,所述解码失败提示消息包括所述前一帧已编码视频数据的标签索引,所述标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储视频通信过程中每帧已编码视频数据所对应的编码前的视频数据;
将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧;
根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
另一方面,提供了一种视频解码方法,所述方法包括:
接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
对所述前一帧已编码视频数据进行解码;
当对所述前一帧已编码视频数据解码失败,向所述服务器发送解码失败提示消息,由所述服务器发送至所述编码端,所述解码失败提示消息包括所述标签索引,所述解码失败提示消息用于所述编码端将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
另一方面,提供了一种视频编解码方法,所述方法包括:
解码端接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
所述解码端对所述前一帧已编码视频数据进行解码;
当对所述前一帧已编码视频数据解码失败,所述解码端向所述服务器发送解码失败提示消息,由所述服务器发送至所述编码端,所述解码失败提示消息包括所述标签索引;
当接收到所述解码失败提示消息,所述编码端将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧,得到更新的第一参考帧列表;
所述编码端根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
另一方面,提供了一种视频编码装置,所述装置包括:
接收模块,用于接收解码失败提示消息,所述解码失败提示消息为解码端对前一帧已编码视频数据解码失败时发送,所述解码失败提示消息包括所述前一帧已编码视频数据的标签索引,所述标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储视频通信过程中每帧已编码视频数据所对应的编码前的视频数据;
设置模块,用于将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧;
编码模块,用于根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
另一方面,提供了一种视频解码装置,所述装置包括:
接收模块,用于接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
解码模块,用于对所述前一帧已编码视频数据进行解码;
发送模块,用于当对所述前一帧已编码视频数据解码失败,向所述服务器发送解码失败提示消息,由所述服务器发送至所述编码端,所述解码失败提示消息包括所述标签索引,所述解码失败提示消息用于所述编码端将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
另一方面,提供了一种视频编解码系统,所述系统包括:编码端、解码端及服务器;
所述解码端,用于接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
所述解码端,用于对所述前一帧已编码视频数据进行解码;
所述解码端,用于当对所述前一帧已编码视频数据解码失败,向所述服务器发送解码失败提示消息,所述解码失败提示消息包括所述标签索引;
所述服务器,用于将所述解码失败提示消息发送至所述编码端;
所述编码端,用于当接收到所述解码失败提示消息,将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧,得到更新的第一参考帧列表;
所述编码端,用于根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器;
所述服务器,用于将所述当前帧已编码视频数据发送至所述解码端。
另一方面,提供了一种用于视频编码的终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现第一方面所述的视频编码方法。
另一方面,提供了一种用于视频解码的终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现另一方面所述的视频解码方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如一方面所述的视频编码方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现另一方面所述的视频解码方法。
本发明实施例提供的技术方案带来的有益效果是:
在接收到解码失败提示消息时,将解码失败的视频数据设置为不可用参考帧,后续在进行视频编码时,依据可用参考帧进行编码,从而保证解码端可对已编码视频数据进行解码,提高了视频通信质量。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种视频编解码系统;
图2是本发明实施例提供的一种视频编解码方法的流程图;
图3是本发明实施例提供的一种视频编码过程的示意图;
图4是本发明实施例提供的一种视频解码过程的示意图;
图5是本发明实施例提供的一种视频编码及解码过程的示意图;
图6是本发明实施例提供的视频编码装置的结构示意图;
图7是本发明实施例提供的视频解码装置的结构示意图;
图8是本发明实施例提供的视频编解码系统的结构示意图;
图9示出了本发明一个示例性实施例提供的用于视频编码及解码的终端的结构框图;
图10是根据一示例性实施例示出的一种用于视频编码及解码的服务器。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了一种视频编解码系统,该系统包括编码端101、服务器102及解码端103。
其中,编码端101可以为笔记本电脑、台式电脑、智能手机等设备。编码端101安装有摄像头及至少一种视频通信应用,主要负责采集视频数据、为已编码视频数据添加标签索引、接收服务器发送的回包信息、为视频数据设置不同的标识(包括可用标识和不可用标识)、选择可用参考帧对视频数据进行编码等。
服务器102为视频通信应用的后台服务器,主要负责各种数据(包括视频数据及各种信令)的转发、向编码端101下发各种编码参数(包括编码分辨率、码率、FEC(ForwardError Correction,前向纠错)参数等),在网络直播场景下,还用于向新加入网络直播间的设备发送视频关键帧等。
解码端103可以为笔记本电脑、台式电脑、智能手机等设备。解码端103也安装有摄像头及至少一种视频通信应用,主要负责接收服务器102下发的各种数据、对已编码视频数据进行解码、查找参考帧、发送解码失败提示消息等。
需要说明的是,编码端101和解码端102仅以功能进行划分,进行视频通信的任一终端,在整个视频通信过程中即可以作为编码端,也可以作为解码端。
基于图1所示的视频编解码系统,本发明实施例提供了一种视频编解码方法,参见图2,本发明实施例提供的方法流程包括:
201、编码端获取前一帧视频数据,并根据对前一帧视频数据编码时第一参考帧列表中的可用参考帧,对前一帧视频数据进行编码,得到前一帧已编码视频数据。
其中,视频数据是指编码端的摄像头采集到的、未经编码的视频数据;已编码视频数据是指编码端调用编码器对视频数据进行编码所得到的视频数据。
其中,第一参考帧列表为编码端本地维护的一个数据列表,用于存储视频通信过程中每帧已编码视频数据所对应的编码前的视频数据,该第一参考帧列表所存储的编码前的视频数据并不是固定不变的,对任一帧视频数据编码后均会将该帧视频数据加入到第一参考帧列表中。根据是否在编码过程中可用,第一参考帧列表所包括的视频数据可分为可用参考帧和不可用参考帧,其中,可用参考帧为解码端通过解码所能得到的视频数据,该不可用参考帧为解码端通过解码无法得到的视频数据。可用参考帧和不可用参考帧具有不同的标识,编码端根据不同的标识识别出可用参考帧和不可用参考帧,进而基于可用参考帧进行视频编码。
在视频通信过程中,编码端通过摄像头采集到多帧视频数据,并将采集到的视频数据加入到视频编码队列中。对于视频编码队列中的任意相邻的两帧视频数据,编码端在对前一帧视频数据进行编码时,可根据可用参考帧标识,从第一参考帧列表选择出至少一个可用参考帧,进而基于预设编码规则,从至少一个可用参考帧,选取目标可用参考帧,进而根据目标可用参考帧,对前一帧视频数据进行编码,得到前一帧已编码视频数据。其中,预设编码规则为非关键帧以关键帧或其他非关键帧为参考进行编码,例如,P帧以前面的I帧或P帧为参考帧进行编码,B帧以前面的P帧为参考帧进行编码。
202、编码端为前一帧已编码视频数据添加标签索引,并将前一帧视频数据加入到第一参考帧列表中。
其中,标签索引可以为POC(Picture Order Count,图像序列号)信息索引等,用于指示编码前的视频数据在第一参考帧列表中的存储位置。
为保证视频通信的流畅性,在进行视频编码时,编码端通常会按照每帧视频数据的采集顺序,对采集到的视频数据依次进行编码,且本发明实施例提供的方法在对任一帧视频数据编码后,会将该帧编码视频数据加入到第一参考帧列表中。因此,编码端在为前一帧已编码视频数据添加标签索引时,可根据编码顺序,为前一帧已编码视频数据添加标签索引。例如,在对前一帧视频数据进行编码之前,已编码视频数据为100帧,则可为前一帧已编码视频数据设置标签索引101。进一步地,编码端还会将前一帧视频数据加入到第一参考帧列表中,以确保后续编码过程顺序进行。
在本发明的另一个实施例中,服务器还可为前一帧视频数据设置帧标识,该帧标识用于区分不同帧的视频数据,从而可在后续视频编解码过程中,编码端和解码端可基于不同的视频数据执行编码及解码操作。
203、编码端将包括标签索引的前一帧已编码视频数据发送至服务器。
为了提高数据传输效率,编码端对前一帧视频数据进行编码后,还将对包括标签索引的前一帧已编码视频数据进行打包。考虑到网络环境的复杂性,为避免网络拥塞,同时提高数据传输的成功率,服务器在将打包后的视频数据发送至服务器时,可将打包后的视频数据拆分为多个子数据包,进而将拆分后的多个子数据包发送至服务器。
204、服务器将包括标签索引的前一帧已编码视频数据发送至解码端。
在进行视频通信时,服务器通常会存储视频通信的双方或多方的设备标识(或者登录该设备的用户账号),因此,当接收到编码端发送的包括标签索引的前一帧已编码视频数据时,服务器可确定出解码端,进而将包括标签索引的前一帧已编码视频数据发送至解码端。
205、解码端对前一帧已编码视频数据进行解码。
当接收到前一帧已编码视频数据后,解码端对前一帧已编码视频数据进行解码时,需要执行以下几步操作:
第一步,解码端对组成前一帧已编码视频数据的各个子数据包进行组包,如果对前一帧已编码视频数据的各个子数据包组包成功,执行第二步。
由于前一帧已编码视频数据被拆分为多个子数据包,解码端对多个子数据包无法进行解码,需要对接收到的多个子数据包进行组包。在进行组包时,解码端可从任一子数据包的包头中读取所拆分的各个数据包信息,进而根据所拆分的各个数据包信息,对接收到的各个子数据包进行组包。如果对前一帧已编码视频数据的各个子数据包组包成功,解码端继续执行第二步;如果对前一帧已编码视频数据的各个子数据包组包失败,解码端向服务器发送解码失败提示消息。
其中,解码失败提示消息包括前一帧已编码视频数据的标签索引,还包括为该前一帧已编码视频数据设置的帧标识。通过向编码端发送编码失败提示消息可提示编码端该标签索引对应的前一帧视频数据不可被参考,以便于编码端在后续视频编码过程中不再参考前一帧视频数据进行编码,从而提高解码端的解码成功率,改善视频通信质量。
第二步,服务器将从第二参考帧列表中查找前一帧已编码视频数据的参考帧,如果从第二参考帧列表中查找到前一帧已编码视频数据的参考帧,执行第三步。
其中,第二参考帧列表用于存储视频通信过程中每帧已解码视频数据。服务器从前一帧已编码视频数据中读取参考帧信息,进而根据该参考帧信息,从第二参考帧列表中查找前一帧已编码视频数据的参考帧。其中,参考帧信息包括帧标识、帧类型(包括I帧、P帧、B帧等)。如果从第二参考帧列表中查找到前一帧已编码视频数据的参考帧,解码端继续执行第三步;如果从第二参考帧列表中未查找到前一帧已编码视频数据的参考帧,解码端也会向服务器发送解码失败提示消息。
第三步,解码端调用解码器对前一帧已编码视频数据进行解码。
解码端调用解码器对前一帧已编码视频数据进行解码,如果解码器对前一帧已编码视频数据解码成功,解码端可将前一帧已编码视频数据加入到第二参考帧列表中,从而可为后续解码过程提供参考帧;如果解码器对前一帧已编码视频数据解码失败,解码端将向服务器发送解码失败提示消息。
206、当对前一帧已编码视频数据解码失败,解码端向服务器发送解码失败提示消息。
当编码端对前一帧已编码视频数据的各个子数据包组包失败,或者,从第二参考帧列表中未查找到前一帧已编码视频数据的参考帧,或者,解码器对前一帧已编码视频数据解码失败,解码端确定对前一帧已编码视频数据解码失败,均会向服务器发送解码失败提示消息。
207、服务器将解码失败提示消息发送至编码端。
当接收到解码失败提示消息时,服务器确定出编码端,进而通过网络将解码失败提示消息发送至编码端。
208、当接收到解码失败提示消息,编码端将第一参考帧列表中位于标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
当接收到解码失败提示消息时,编码端针对解码端的数量及当前的视频通信场景,可分为如下几种情况:
第一种情况、解码端的数量为一个,当前的视频通信场景为双人视频通信场景。
在双人视频通信场景下,编码端需要保证解码端的视频通信质量,因此,当接收到解码端发送的解码失败提示消息时,编码端将解码失败的视频数据设置为不可用参考帧,从而在后续视频编码过程,不再参考该帧视频数据进行编码。编码端将解码失败的视频数据设置为不可用参考帧的过程为:编码端从解码失败提示消息中获取解码失败的视频数据的标签索引,进而将第一参考帧列表中位于该标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
第二种情况、解码端的数量为多个,当前的视频通信场景为第一类视频通信场景。
其中,第一类视频通信场景是指需要每个解码端均能成功解码已编码视频数据的多人视频通信场景,第一类视频通信场景包括视频会议场景等。在第一类视频通信场景下,由于需要确保每个解码端均能成功解码已编码视频数据,因而当编码端接收到任一解码端反馈的解码失败提示消息,编码端就会将解码失败的视频数据设置为不可用参考帧。
第三种情况、解码端的数量为多个,当前的视频通信场景为第二类视频通信场景。
其中,第二类视频通信场景是指除第一类视频通信场景以外的多人视频通信场景,第二类视频通信场景包括网络直播场景等。考虑到不同的视频通信场景下,所要达到的视频体验效果是不同的,在第二类视频通信场景下,为了保证大多数用户的视频体验效果,当个别解码端无法成功解码视频数据,编码端接收到解码失败提示消息时,编码端也不会将解码失败的帧视频数据设置为不可用参考帧。
209、编码端根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器。
对当前帧视频数据编码时,编码端根据可用参考帧标识,从第一参考帧列表中选取可用参考帧,并采用预设编码规则,从所选取的可用参考帧中,选取目标可用参考帧,进而根据目标可用参考帧,对当前帧视频数据进行编码,得到当前帧已编码视频数据。与对前一帧已编码视频数据的处理方式相同,编码端为当前帧已编码视频数据添加标签索引,并将当前帧已编码视频数据加入到第一参考帧列表中。编码端还对包括添加标签索引的当前帧已编码视频数据进行打包,并将打包后的视频数据拆分为多个子数据包,进而将多个子数据包发送至服务器。
210、服务器将当前帧已编码视频数据发送至解码端。
本发明实施例提供的方法不仅可应用于双人、多人的视频通信,还可应用于各种网络直播、在线视频等。经过实验测试,当网络丢包率达到50%时,采用本发明实施例提供的方法依然能够保证画面清晰、流畅,而传统方法在丢包率达到50%时,画面卡顿且不清晰;当抖动延时达到600ms时,采用本发明实施例提供的方法同样能够保证画面清晰、流畅,而传统方法仅在抖动时延小于100ms时,画面才会清晰、流畅,在抖动时间达到600ms时,画面卡顿且不清晰。
图3示出了本发明实施例提供的视频编码方法中编码端的编码过程,该编码过程如下:
1、编码端获取摄像头采集的多帧视频数据。
2、编码端调用编码器基于参考帧队列(本发明实施例中的第一参考帧列表)对采集的每帧视频数据进行编码,得到已编码视频数据。编码端为已编码视频数据设置帧标识,并添加POC信息索引。
3、编码端对已编码视频数据进行打包,并将打包后的视频数据发送至服务器。
4、当接收到服务器反馈的编码失败提示消息,编码端从编码失败提示消息中获取POC信息索引,并将参考帧队列(第一参考帧列表)中该POC信息索引所指示的存储位置上的视频数据设置为不可用参考帧,以对该参考帧队列进行更新。
5、在后续编码过程中,编码端根据更新后的参考帧队列进行编码。
图4示出了本发明实施例提供的视频解码方法中解码端的编码过程,该解码过程如下:
1、解码端接收服务器发送的已编码视频数据。
2、解码端对接收到的已编码视频数据进行组包,如果不能成功组包,则解码端的解码器获取解码失败信息,并生成解码失败提示消息,进而将解码失败提示消息发送至服务器;如果能够成功组包,则从本地存储的参考帧队列中查找组包后的已编码视频数据的参考帧。
3、如果未查找到组包后的已编码视频数据的参考帧,解码器获取解码失败信息,并生成解码失败提示消息,进而将解码失败提示消息发送至服务器;如果查找到组包后的已编码视频数据的参考帧,解码器将对该组包后的视频数据进行解码。
4、如果解码器可对该组包后的已编码视频数据进行解码,解码器将解码后的视频数据添加到参考帧队列(第二参考帧列表)中;如果解码器未对该组包后的已编码视频数据进行解码,解码端获取解码失败信息,并生成解码失败提示消息,进而将解码失败提示消息发送至服务器。
图5示出了视频编码及解码的整个过程,该过程如下:
1、在进行视频编码时,编码端基于智能的参考帧选择策略,从第一参考帧列表获取参考帧,并根据该参考帧进行编码。编码端为编码后的视频数据添加帧标识及POC信息索引,得到编码码流数据(gopIndex frameIndex及refframe index),并将编码码流数据发送至服务器。
2、服务器将接收到的编码码流数据发送至各个解码端。
3、解码端对接收到编码码流进行解码,如果解码成功,则将解码后的视频数据加入到第二参考帧列表;如果解码失败,则获取解码失败信息(包括解码失败的视频数据的帧标识、POC信息索引等),并将解码失败信息加入到解码失败信息列表,进而向服务器发送解码失败信息。
4、服务器将解码失败信息发送至编码端。
5、编码端根据解码失败消息,更新第二参考帧列表。
本发明实施例提供的方法,在接收到解码失败提示消息时,将解码失败的视频数据设置为不可用参考帧,后续在进行视频编码时,依据可用参考帧进行编码,从而保证解码端可对已编码视频数据进行解码,提高了视频通信质量。
参见图6,本发明实施例提供了一种视频编码装置,该装置包括:
接收模块601,用于接收解码失败提示消息,该解码失败提示消息为解码端对前一帧已编码视频数据解码失败时发送,该解码失败提示消息包括前一帧已编码视频数据的标签索引,该标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,该第一参考帧列表用于存储视频通信过程中每帧已编码视频数据所对应的编码前的视频数据;
设置模块602,用于将第一参考帧列表中位于标签索引所指示的存储位置上的视频数据设置为不可用参考帧;
编码模块603,用于根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
在本发明的另一个实施例中,该装置还包括:
获取模块,用于获取前一帧视频数据;
编码模块603,用于根据对前一帧视频数据编码时第一参考帧列表中的可用参考帧,对前一帧视频数据进行编码,得到前一帧已编码视频数据;
添加模块,用于为前一帧已编码视频数据添加标签索引,并将前一帧视频数据加入到第一参考帧列表中;
发送模块,用于将包括标签索引的前一帧已编码视频数据发送至服务器,由服务器发送至解码端。
在本发明的另一个实施例中,发送模块,用于对包括标签索引的前一帧已编码视频数据进行打包,并将打包后的视频数据拆分为多个子数据包,将多个子数据包发送至服务器。
在本发明的另一个实施例中,编码模块603,用于从对当前帧视频数据编码时第一参考帧列表包括的可用参考帧中,选取目标可用参考帧;基于目标可用参考帧,对当前帧视频数据进行编码。
综上所述,本发明实施例提供的装置,在接收到解码失败提示消息时,将解码失败的视频数据设置为不可用参考帧,后续在进行视频编码时,依据可用参考帧进行编码,从而保证解码端可对已编码视频数据进行解码,提高了视频通信质量。
参见图7,本发明实施例提供了一种视频解码装置,该装置包括:
接收模块701,用于接收服务器发送的前一帧已编码视频数据,该前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至服务器,前一帧已编码视频数据包括索引标签,该标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,该第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
解码模块702,用于对前一帧已编码视频数据进行解码;
发送模块703,用于当对前一帧已编码视频数据解码失败,向服务器发送解码失败提示消息,由服务器发送至编码端,该解码失败提示消息包括标签索引,该解码失败提示消息用于编码端将第一参考帧列表中位于标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
在本发明的另一个实施例中,该装置还包括:
组包模块,用于对组成前一帧已编码视频数据的各个子数据包进行组包;
查找模块,用于如果对前一帧已编码视频数据的各个子数据包组包成功,从第二参考帧列表中查找前一帧已编码视频数据的参考帧,该第二参考帧列表用于存储视频通信过程中每帧已解码视频数据;
解码模块702,用于如果从第二参考帧列表中查找到前一帧已编码视频数据的参考帧,对前一帧已编码视频数据进行解码。
在本发明的另一个实施例中,发送模块703,用于当对前一帧已编码视频数据的各个子数据包组包失败,向服务器发送解码失败提示消息;或者,
发送模块703,用于当从第二参考帧列表中未查找到前一帧已编码视频数据的参考帧,向服务器发送解码失败提示消息;或者,
发送模块703,用于当对前一帧已编码视频数据解码失败,向服务器发送解码失败提示消息。
在本发明的另一个实施例中,该装置还包括:
加入模块,用于当对前一帧已编码视频数据解码成功,将前一帧视频数据加入到第二参考帧列表中。
本发明实施例提供的装置,在对接收到的视频数据解码失败时,通过服务器向编码端发送解码失败提示消息,以使编码端在接收到解码失败提示消息时,将解码失败的视频数据设置为不可用参考帧,后续在进行视频编码时,依据可用参考帧进行编码,从而保证解码端可对已编码视频数据进行解码,提高了视频通信质量。
参见图8,本发明实施例提供了一种视频解码系统,该系统包括:编码端801、服务器802及解码端803;
解码端803,用于接收服务器发送的前一帧已编码视频数据,前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至服务器,前一帧已编码视频数据包括索引标签,标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
解码端803,用于对前一帧已编码视频数据进行解码;
解码端803,用于当对前一帧已编码视频数据解码失败,向服务器发送解码失败提示消息,
服务器802,用于将解码失败提示消息发送至编码端,解码失败提示消息包括标签索引;
编码端801,用于当接收到解码失败提示消息,将第一参考帧列表中位于标签索引所指示的存储位置上的视频数据设置为不可用参考帧,得到更新的第一参考帧列表;
编码端801,用于根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器;
服务器802,用于将当前帧已编码视频数据发送至解码端。
在本发明的另一个实施例中,编码端801,还用于获取前一帧视频数据;
编码端801,还用于根据对前一帧视频数据编码时第一参考帧列表中的可用参考帧,对前一帧视频数据进行编码,得到前一帧已编码视频数据;
编码端801,还用于为前一帧已编码视频数据添加标签索引,并将前一帧视频数据加入到第一参考帧列表中;
编码端801,还用于将包括标签索引的前一帧已编码视频数据发送至服务器,由服务器发送至解码端。
在本发明的另一个实施例中,解码端803,用于对前一帧已编码视频数据进行解码之前,还包括:
解码端803,用于对组成前一帧已编码视频数据的各个子数据包进行组包;
解码端803,用于如果对前一帧已编码视频数据的各个子数据包组包成功,从第二参考帧列表中查找前一帧已编码视频数据的参考帧,第二参考帧列表用于存储视频通信过程中每帧已解码视频数据;
解码端803,用于如果从第二参考帧列表中查找到前一帧已编码视频数据的参考帧,执行对前一帧已编码视频数据进行解码的步骤。
在本发明的另一个实施例中,解码端803,用于当对前一帧已编码视频数据的各个子数据包组包失败,向服务器发送解码失败提示消息;或者,
解码端803,用于当从第二参考帧列表中未查找到前一帧已编码视频数据的参考帧,向服务器发送解码失败提示消息;或者,
解码端803,用于当对前一帧已编码视频数据解码失败,向服务器发送解码失败提示消息。
在本发明的另一个实施例中,解码端803,用于当对前一帧已编码视频数据解码成功,解码端将前一帧视频数据加入到第二参考帧列表中。
在本发明的另一个实施例中,编码端801,用于对包括标签索引的前一帧已编码视频数据进行打包;
编码端801,用于将打包后的视频数据拆分为多个子数据包;
编码端801,用于将多个子数据包发送至服务器。
在本发明另一个实施例中,编码端801,用于从对当前帧视频数据编码时第一参考帧列表包括的可用参考帧中,选取目标可用参考帧;基于目标可用参考帧,对当前帧视频数据进行编码。
图9示出了本发明一个示例性实施例提供的视频编码及视频解码的终端900的结构框图。该终端900可以是:智能手机、平板电脑、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端900包括有:处理器901和存储器902。
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的视频编码及视频解码方法。
在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、触摸显示屏905、摄像头906、音频电路907、定位组件908和电源909中的至少一种。
外围设备接口903可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。
定位组件908用于定位终端900的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件908可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源909用于为终端900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。
加速度传感器911可以检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制触摸显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器912可以检测终端900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对终端900的3D动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器913可以设置在终端900的侧边框和/或触摸显示屏905的下层。当压力传感器913设置在终端900的侧边框时,可以检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在触摸显示屏905的下层时,由处理器901根据用户对触摸显示屏905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置终端900的正面、背面或侧面。当终端900上设置有物理按键或厂商Logo时,指纹传感器914可以与物理按键或厂商Logo集成在一起。
光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制触摸显示屏905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏905的显示亮度;当环境光强度较低时,调低触摸显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。
接近传感器916,也称距离传感器,通常设置在终端900的前面板。接近传感器916用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制触摸显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制触摸显示屏905从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如图2所述的视频编解码方法。
图10是根据一示例性实施例示出的一种用于视频编码及解码的服务器。参照图10,服务器1000包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理组件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行上述视频编码及解码方法中服务器所执行的功能,该方法包括:
服务器1000还可以包括一个电源组件1026被配置为执行服务器1000的电源管理,一个有线或无线网络接口1050被配置为将服务器1000连接到网络,和一个输入输出(I/O)接口1058。服务器1000可以操作基于存储在存储器1032的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
需要说明的是:上述实施例提供的视频编码装置在进行视频编码时以及视频解码装置在进行视频解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将视频编码装置、视频解码装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频编码装置、视频解码装置、视频编码及解码实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种视频编码方法,其特征在于,所述方法包括:
接收解码失败提示消息,所述解码失败提示消息为解码端对前一帧已编码视频数据解码失败时发送,所述解码失败提示消息包括所述前一帧已编码视频数据的标签索引,所述标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储视频通信过程中每帧已编码视频数据所对应的编码前的视频数据;
根据解码端的数量和当前的视频通信场景,确定是否将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧;
根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
2.根据权利要求1所述的方法,其特征在于,所述接收解码失败提示消息之前,还包括:
获取前一帧视频数据;
根据对所述前一帧视频数据编码时第一参考帧列表中的可用参考帧,对所述前一帧视频数据进行编码,得到所述前一帧已编码视频数据;
为所述前一帧已编码视频数据添加所述标签索引,并将所述前一帧视频数据加入到第一参考帧列表中;
将包括所述标签索引的前一帧已编码视频数据发送至所述服务器,由所述服务器发送至所述解码端。
3.根据权利要求2所述的方法,其特征在于,所述将包括所述标签索引的前一帧已编码视频数据发送至所述服务器,包括:
对包括所述标签索引的前一帧已编码视频数据进行打包;
将打包后的视频数据拆分为多个子数据包;
将所述多个子数据包发送至所述服务器。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,包括:
从对当前帧视频数据编码时第一参考帧列表包括的可用参考帧中,选取目标可用参考帧;
基于所述目标可用参考帧,对所述当前帧视频数据进行编码。
5.一种视频解码方法,其特征在于,所述方法包括:
接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
对所述前一帧已编码视频数据进行解码;
当对所述前一帧已编码视频数据解码失败,向所述服务器发送解码失败提示消息,由所述服务器发送至所述编码端,所述解码失败提示消息包括所述标签索引,所述解码失败提示消息用于所述编码端根据解码端的数量和当前的视频通信场景,确定是否将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
6.根据权利要求5所述的方法,其特征在于,所述对所述前一帧已编码视频数据进行解码之前,还包括:
对组成所述前一帧已编码视频数据的各个子数据包进行组包;
如果对所述前一帧已编码视频数据的各个子数据包组包成功,从第二参考帧列表中查找所述前一帧已编码视频数据的参考帧,所述第二参考帧列表用于存储视频通信过程中每帧已解码视频数据;
如果从所述第二参考帧列表中查找到所述前一帧已编码视频数据的参考帧,执行对所述前一帧已编码视频数据进行解码的步骤。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当对所述前一帧已编码视频数据的各个子数据包组包失败,向所述服务器发送所述解码失败提示消息;或者,
当从所述第二参考帧列表中未查找到所述前一帧已编码视频数据的参考帧,向所述服务器发送所述解码失败提示消息。
8.根据权利要求6或7所述的方法,其特征在于,所述对所述前一帧已编码视频数据进行解码之后,还包括:
当对所述前一帧已编码视频数据解码成功,将所述前一帧视频数据加入到所述第二参考帧列表中。
9.一种视频编解码方法,其特征在于,所述方法包括:
解码端接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
所述解码端对所述前一帧已编码视频数据进行解码;
当对所述前一帧已编码视频数据解码失败,所述解码端向所述服务器发送解码失败提示消息,由所述服务器发送至所述编码端,所述解码失败提示消息包括所述标签索引;
所述编码端根据解码端的数量和当前的视频通信场景,确定是否将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧;
所述编码端根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
10.根据权利要求9所述的方法,其特征在于,所述解码端接收服务器发送的前一帧已编码视频数据之前,还包括:
所述编码端获取前一帧视频数据;
所述编码端根据对所述前一帧视频数据编码时第一参考帧列表中的可用参考帧,对所述前一帧视频数据进行编码,得到所述前一帧已编码视频数据;
所述编码端为所述前一帧已编码视频数据添加所述标签索引,并将所述前一帧视频数据加入到第一参考帧列表中;
所述编码端将包括所述标签索引的前一帧已编码视频数据发送至所述服务器,由所述服务器发送至所述解码端。
11.根据权利要求9所述的方法,其特征在于,所述解码端对所述前一帧已编码视频数据进行解码之前,还包括:
所述解码端对组成所述前一帧已编码视频数据的各个子数据包进行组包;
如果对所述前一帧已编码视频数据的各个子数据包组包成功,所述解码端从第二参考帧列表中查找所述前一帧已编码视频数据的参考帧,所述第二参考帧列表用于存储视频通信过程中每帧已解码视频数据;
如果从所述第二参考帧列表中查找到所述前一帧已编码视频数据的参考帧,所述解码端执行对所述前一帧已编码视频数据进行解码的步骤。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
当对所述前一帧已编码视频数据的各个子数据包组包失败,所述解码端向所述服务器发送所述解码失败提示消息;或者,
当从所述第二参考帧列表中未查找到所述前一帧已编码视频数据的参考帧,所述解码端向所述服务器发送所述解码失败提示消息。
13.一种视频编码装置,其特征在于,所述装置包括:
接收模块,用于接收解码失败提示消息,所述解码失败提示消息为解码端对前一帧已编码视频数据解码失败时发送,所述解码失败提示消息包括所述前一帧已编码视频数据的标签索引,所述标签索引用于指示前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储视频通信过程中每帧已编码视频数据所对应的编码前的视频数据;
设置模块,用于根据解码端的数量和当前的视频通信场景,确定是否将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧;
编码模块,用于根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器,由服务器发送至所述解码端。
14.一种视频解码装置,其特征在于,所述装置包括:
接收模块,用于接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
解码模块,用于对所述前一帧已编码视频数据进行解码;
发送模块,用于当对所述前一帧已编码视频数据解码失败,向所述服务器发送解码失败提示消息,由所述服务器发送至所述编码端,所述解码失败提示消息包括所述标签索引,所述解码失败提示消息用于所述编码端根据解码端的数量和当前的视频通信场景,确定是否将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧。
15.一种视频编解码系统,其特征在于,所述系统包括:编码端、解码端及服务器;
所述解码端,用于接收服务器发送的前一帧已编码视频数据,所述前一帧已编码视频数据由编码端对前一帧视频数据编码后发送至所述服务器,所述前一帧已编码视频数据包括索引标签,所述标签索引用于指示所述前一帧视频数据在第一参考帧列表中的存储位置,所述第一参考帧列表用于存储每帧已编码视频数据所对应的编码前的视频数据;
所述解码端,用于对所述前一帧已编码视频数据进行解码;
所述解码端,用于当对所述前一帧已编码视频数据解码失败,向所述服务器发送解码失败提示消息,所述解码失败提示消息包括所述标签索引;
所述服务器,用于将所述解码失败提示消息发送至所述编码端;
所述编码端,用于当接收到所述解码失败提示消息,根据解码端的数量和当前的视频通信场景,确定是否将所述第一参考帧列表中位于所述标签索引所指示的存储位置上的视频数据设置为不可用参考帧,得到更新的第一参考帧列表;
所述编码端,用于根据对当前帧视频数据编码时第一参考帧列表中的可用参考帧,对所述当前帧视频数据进行编码,并将当前帧已编码视频数据发送至服务器;
所述服务器,用于将所述当前帧已编码视频数据发送至所述解码端。
16.一种终端,其特征在于,所述终端为编码端或解码端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集;
当所述终端为编码端时,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1至4中任一项所述的视频编码方法;
当所述终端为解码端时,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求5至8中任一项所述的视频解码方法。
17.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至4中任一项所述的视频编码方法,或者实现如权利要求5至8中任一项所述的视频解码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810140540.8A CN110149491B (zh) | 2018-02-11 | 2018-02-11 | 视频编码方法、视频解码方法、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810140540.8A CN110149491B (zh) | 2018-02-11 | 2018-02-11 | 视频编码方法、视频解码方法、终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110149491A CN110149491A (zh) | 2019-08-20 |
CN110149491B true CN110149491B (zh) | 2021-09-28 |
Family
ID=67588616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810140540.8A Active CN110149491B (zh) | 2018-02-11 | 2018-02-11 | 视频编码方法、视频解码方法、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110149491B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598156B (zh) * | 2019-09-19 | 2022-03-15 | 腾讯科技(深圳)有限公司 | 绘图数据的处理方法、装置、终端、服务器及存储介质 |
CN111327869A (zh) * | 2020-03-27 | 2020-06-23 | 随锐科技集团股份有限公司 | 视频会议系统 |
CN113676736A (zh) * | 2020-05-13 | 2021-11-19 | 华为技术有限公司 | 数据帧的传输方法和通信装置 |
CN114125554B (zh) * | 2020-08-25 | 2023-03-10 | 华为技术有限公司 | 一种编解码方法、装置及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188760A (zh) * | 2007-11-16 | 2008-05-28 | 中兴通讯股份有限公司 | 一种视频序列的编码方法 |
CN101534442A (zh) * | 2009-04-13 | 2009-09-16 | 腾讯科技(深圳)有限公司 | 视频编码系统及方法 |
CN101686391A (zh) * | 2008-09-22 | 2010-03-31 | 华为技术有限公司 | 视频编码/解码方法、装置与视频播放方法、装置及系统 |
CN101990092A (zh) * | 2009-07-29 | 2011-03-23 | 中兴通讯股份有限公司 | 无线视频通讯系统中差错控制的方法、装置及系统 |
CN103139571A (zh) * | 2013-03-21 | 2013-06-05 | 南通大学 | 基于fec与wz编解码相结合的视频容错抗误码方法 |
CN103167283A (zh) * | 2011-12-19 | 2013-06-19 | 华为技术有限公司 | 一种视频编码方法及设备 |
CN103533387A (zh) * | 2013-10-21 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种视频直播控制方法、设备及系统 |
CN107592540A (zh) * | 2016-07-07 | 2018-01-16 | 腾讯科技(深圳)有限公司 | 一种视频数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9584832B2 (en) * | 2011-12-16 | 2017-02-28 | Apple Inc. | High quality seamless playback for video decoder clients |
US11025933B2 (en) * | 2016-06-09 | 2021-06-01 | Apple Inc. | Dynamic video configurations |
-
2018
- 2018-02-11 CN CN201810140540.8A patent/CN110149491B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188760A (zh) * | 2007-11-16 | 2008-05-28 | 中兴通讯股份有限公司 | 一种视频序列的编码方法 |
CN101686391A (zh) * | 2008-09-22 | 2010-03-31 | 华为技术有限公司 | 视频编码/解码方法、装置与视频播放方法、装置及系统 |
CN101534442A (zh) * | 2009-04-13 | 2009-09-16 | 腾讯科技(深圳)有限公司 | 视频编码系统及方法 |
CN101990092A (zh) * | 2009-07-29 | 2011-03-23 | 中兴通讯股份有限公司 | 无线视频通讯系统中差错控制的方法、装置及系统 |
CN103167283A (zh) * | 2011-12-19 | 2013-06-19 | 华为技术有限公司 | 一种视频编码方法及设备 |
CN103139571A (zh) * | 2013-03-21 | 2013-06-05 | 南通大学 | 基于fec与wz编解码相结合的视频容错抗误码方法 |
CN103533387A (zh) * | 2013-10-21 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种视频直播控制方法、设备及系统 |
CN107592540A (zh) * | 2016-07-07 | 2018-01-16 | 腾讯科技(深圳)有限公司 | 一种视频数据处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
无线网络中视频流的路径分集传输研究分析;王华林;《电视技术》;20100430;第34卷(第S1期);162-165 * |
Also Published As
Publication number | Publication date |
---|---|
CN110149491A (zh) | 2019-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108966008B (zh) | 直播视频回放方法及装置 | |
CN113542839B (zh) | 电子设备的投屏方法和电子设备 | |
CN110022489B (zh) | 视频播放方法、装置及存储介质 | |
CN110278464B (zh) | 显示榜单的方法和装置 | |
CN110149491B (zh) | 视频编码方法、视频解码方法、终端及存储介质 | |
CN111093108B (zh) | 音画同步判断方法、装置、终端及计算机可读存储介质 | |
CN109874043B (zh) | 视频流发送方法、播放方法及装置 | |
CN109413453B (zh) | 视频播放方法、装置、终端及存储介质 | |
CN110121084B (zh) | 切换端口的方法、装置和系统 | |
CN109194972B (zh) | 直播流获取方法、装置、计算机设备及存储介质 | |
CN111049848B (zh) | 通话方法、装置、系统、服务器及存储介质 | |
CN111596885B (zh) | 音频数据处理方法、服务器及存储介质 | |
CN110750734A (zh) | 天气显示方法、装置、计算机设备及计算机可读存储介质 | |
CN111132214A (zh) | 语音通话的方法、装置、电子设备及介质 | |
CN111010588B (zh) | 直播处理方法、装置、存储介质及设备 | |
CN107888975B (zh) | 视频播放方法、装置及存储介质 | |
CN110912830A (zh) | 传输数据的方法和装置 | |
CN110827830B (zh) | 基于语音数据的声纹识别方法、装置、终端及存储介质 | |
CN110113669B (zh) | 获取视频数据的方法、装置、电子设备及存储介质 | |
CN113192519B (zh) | 音频编码方法和装置以及音频解码方法和装置 | |
CN112153404B (zh) | 码率调整方法、检测方法、装置、设备及存储介质 | |
CN111586433B (zh) | 码率调整方法、装置、设备及存储介质 | |
CN111698262B (zh) | 带宽确定方法、装置、终端及存储介质 | |
CN110913213B (zh) | 视频质量评测处理的方法、装置及系统 | |
CN111064657B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |