CN116781900A - 编解码方法及电子设备 - Google Patents

编解码方法及电子设备 Download PDF

Info

Publication number
CN116781900A
CN116781900A CN202210243270.XA CN202210243270A CN116781900A CN 116781900 A CN116781900 A CN 116781900A CN 202210243270 A CN202210243270 A CN 202210243270A CN 116781900 A CN116781900 A CN 116781900A
Authority
CN
China
Prior art keywords
frame
encoder
code stream
reconstructed image
decoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210243270.XA
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210243270.XA priority Critical patent/CN116781900A/zh
Priority to PCT/CN2023/080104 priority patent/WO2023169424A1/zh
Priority to TW112108399A priority patent/TW202341734A/zh
Publication of CN116781900A publication Critical patent/CN116781900A/zh
Pending legal-status Critical Current

Links

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
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding

Landscapes

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

Abstract

本申请实施例提供了一种编解码方法及电子设备。该编码方法包括:首先,获取第j‑k帧的重建图像,第j‑k帧由第一编码器编码,其中,k小于j;接着,基于第j‑k帧的重建图像,确定第j帧的参考图像,其中,第j‑k帧与第j帧属于同一图像组GOP;然后基于参考图像,由第二编码器对第j帧进行编码,以得到第j帧对应的码流。其中,第j‑1帧是由第一编码器编码的,这样,由第一编码器编码变换为第二编码器编码后,不会引入新的I帧;进而能够避免引入新的I帧造成的码率上升、I帧的呼吸效应等副作用。

Description

编解码方法及电子设备
技术领域
本申请实施例涉及编解码技术领域,尤其涉及一种编解码方法及电子设备。
背景技术
不同编码器有着不同的优缺点,例如,硬件编码器能效高、功耗低、时延低,但是压缩率、通用性不足;软件编码器压缩率高、通用性强、可扩展性强,但是能耗高。为了保证RTC(Real Time Communication,实时通信)视频场景中视频的清晰度和流畅性,可以在多种编码器之间进行切换,以融合各种编码器的优点。
发明内容
为了解决上述技术问题,本申请提供一种编解码方法及电子设备。在该编码方法中,变换后的编码器参考变换前的编码器所编码的内容进行编码,能够避免引入新的I帧(Intra frame,帧内编码帧),从而降低码率。
第一方面,本申请实施例提供一种编码方法,该方法包括:首先,获取第j-k帧的重建图像,第j-k帧由第一编码器编码,其中,k和j均为正整数,且k小于j;接着,基于第j-k帧的重建图像,确定第j帧的参考图像,其中,第j-k帧与第j帧属于同一GOP(GroupOfPicture,图像组);然后基于第j帧的参考图像,由第二编码器对第j帧进行编码,以得到第j帧对应的码流。其中,第j-1帧也是由第一编码器编码的,这样,当在对同一GOP内多个帧的编码过程中发生编码器的切换时,即,由第一编码器编码切换为第二编码器编码,不需要引入新的I帧(即第二编码器不编码I帧,而是基于第j-k帧的重建图像,确定第j帧的参考图像;或者第二编码器编码I帧,但仍基于第j-k帧的重建图像,确定第j帧的参考图像,且不发送第二编码器编码的I帧);进而能够避免引入新的I帧造成的码率上升、I帧的呼吸效应(一个GOP内,离I帧越远的P帧(Predictive frame,前向预测帧),编码误差越大,图像降质也越严重,当下一个I帧出现时,图像又立即变得清楚起来,纵观整个视频流,就会周期性出现清楚到模糊的突变,这种现象可以称为呼吸效应)等副作用。
示例性的,j与k之间的差值小于或等于5。
示例性的,在第一编码器对第j-k帧进行编码的过程中,会生成第j-k帧对应的残差信息和预测信息;进而一种可能的方式中,第一编码器可以根据第j-k帧对应的残差信息和预测信息进行重建,得到第j-k帧的重建图像。
示例性的,一种可能的方式中,第一编码器对第j-k帧进行编码得到第j-k帧对应的码流后,可以由发送终端中的解码器基于第j-k帧的码流进行重建(即对第j-k帧对应的码流进行解析,得到第j-k帧对应的残差信息和预测信息;然后基于第j-k帧对应的残差信息和预测信息进行重建),得到第j-k帧的重建图像。
根据第一方面,基于第j-k帧的重建图像,确定第j帧的参考图像,包括:将第j-k帧的重建图像,作为参考图像。
示例性的,将第j-k帧输入至第二编码器,由第二编码器对第j-k帧进行帧内编码;基于第j-k帧对应的残差信息和预测信息进行重建,以得到第j帧的参考图像,其中,第j-k帧对应的残差信息和预测信息是在第二编码器对第j-k帧进行帧内编码过程中生成的;然后将第j帧的参考图像,替换为第j-k帧的重建图像。直接将第j-k帧的重建图像作为第j帧的参考图像,可以使得接收终端在解码得到第j-k帧的重建图像后,就将其作为第j帧的参考图像,进而解码得到第j帧,简单快捷。需要说明的是,第二编码器对第j-k帧进行帧内编码,可以得到第j-k帧对应的帧内编码码流,也就是I帧码流;此时发送终端不将第j-k帧对应的帧内编码码流发送至服务器/接收终端。进而,即使第二编码器编码了I帧,第二编码器依然是参考第一编码器编码的第j-k帧的重建图像进行编码的,因此也不会引入I帧码流。
示例性的,第二编码器也可以无需编码I帧,而是直接将第j-k帧的重建图像,作为参考图像;例如,将第j-k帧的重建图像存储到参考帧内存中。
根据第一方面,或者以上第一方面的任意一种实现方式,基于第j-k帧的重建图像,确定第j帧的参考图像,包括:由第二编码器对第j-k帧的重建图像进行帧内编码;基于第j-k帧的重建图像对应的残差信息和预测信息进行重建,以得到参考图像,残差信息和预测信息在帧内编码过程中生成。需要说明的是,第二编码器对第j-k帧的重建图像进行帧内编码,可以得到第j-k帧的重建图像对应的帧内编码码流,也就是I帧码流;此时发送终端不将第j-k帧的重建图像对应的帧内编码码流发送至服务器/接收终端,因此也不会引入I帧码流。
根据第一方面,或者以上第一方面的任意一种实现方式,由第二编码器对第j-k帧的重建图像进行帧内编码,包括:由第二编码器以小于预设阈值的量化参数,对第j-k帧的重建图像进行帧内编码。这样,可以对第j-k帧的重建图像进行高质量编码,使得参考图像更接近第j-k帧的重建图像;进而解码时参照第j-k帧的重建图像,能够更准确的对第j帧进行解码。
示例性的,预设阈值可以按照需求设置,例如,预设阈值为小于10的数,如4,本申请对此不作限制。
示例性的,一种可能的方式中,可以由第二编码器按照大于预设码率的码率,对第j-k帧的重建图像进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流。其中,预设码率可以按照需求设置,本申请对此不作限制。这样,也能够实现对第j-k帧的重建图像进行高质量的帧内编码。
根据第一方面,或者以上第一方面的任意一种实现方式,GOP中I帧对应的码流包括:第一编码器对应的第一参数集和第二编码器对应的第二参数集。也就是说,在一个GOP的最开始发送参数集,后续在编码该GOP中各帧时,即使变换用于编码的编码器,也无需发送变换后的编码器的参数集。
根据第一方面,或者以上第一方面的任意一种实现方式,第j帧对应的码流包括:第二编码器对应的第二参数集;第j帧为P帧。这样,在每次变换用于编码的编码器时,发送变换后的编码器的参数集。
根据第一方面,或者以上第一方面的任意一种实现方式,修改第j帧对应的码流的片头(Slice header)中的参数集指示信息,修改后的参数集指示信息指示第j帧对应的参数集为第二参数集。也就是在每次变换用于编码的编码器时,发送变换后的编码器的参数集的情况下,在变换用于编码的编码器后,修改码流中参数集指示信息,使得解码端能够调用对应的参数集进行解码。
根据第一方面,或者以上第一方面的任意一种实现方式,GOP中第j-1帧由第一编码器编码;获取第j-k帧的重建图像,包括:当第二编码器的编码效果优于第一编码器的编码效果,且,第j帧为P帧时,获取第j-k帧的重建图像。
以下以第一编码器为软件编码器,第二编码器硬件编码器为例进行举例说明。其中,软件编码器的压缩率高、通用性强、可扩展性强,抗弱网能力强,功耗高。硬件编码器的压缩率低、通用性低、可扩展性低,抗弱网能力弱,功耗低、时延低。
例如,应用场景为文档共享场景。由于图像内容为桌面展示的文档,因此在共享对端需要展示清晰度高的图像,以保证共享对端的用户观看到共享桌面中清晰的文本。此时,所需判断的编码效果可以为:图像质量(即图像清晰度)。相对于第二编码器而言,第一编码器的压缩率更高,因此相同码率的情况下,第一编码器编码的图像清晰度高于第二编码器编码的图像清晰度,进而,可以确定第一编码器的编码效果优于第二编码器的编码效果。
例如,应用场景为视频共享场景。由于图像内容为桌面播放的视频,因此在共享对端需要保证视频的流畅度,此时,所需判断的编码效果可以为:编码速度。相对于第一编码器而言,第二编码器的编码速度更高,因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
例如,视频编码参数中分辨率设置为大于第一分辨率阈值,其中,第一分辨率阈值大于第一编码器可支持编码的分辨率,可以按照需求设置,本申请对此不作限制。此时,所需判断的编码效果可以为:图像质量(即图像分辨率)。相对于第一编码器而言,第二编码器的可支持编码的分辨率更高,也就是说第二编码器的编码质量更高(也就是编码的图像细节更多),因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
例如,根据信道状态确定所需判断的编码效果为:图像质量(即图像分辨率)和视频流畅度。当信道状态满足预设条件时,也就是信道状态较好时,相对于第一编码器而言,第二编码器的可支持编码的分辨率更高,也就是说第二编码器的编码质量更高(也就是编码的图像细节更多),因此可以确定第二编码器的编码效果优于第一编码器的编码效果,这样可以提高视频分辨率。当信道状态不满足预设条件时,也就是信道状态较差时,相对于第二编码器而言,第一编码器可以根据信道状态调整编码参数(如长期参考帧、分层参考的层级),以提高视频的流畅度和图像质量,因此可以确定第一编码器的编码效果优于第二编码器的编码效果,这样可以提高视频的流畅性。
示例性的,信道状态可以采用信息反馈信息表示,其中,信道反馈信息可以包括但不限于:网络传输带宽、网络吞吐量、网络丢包率、网络发送时延等。信道状态可以采用以上一种或多种信道反馈信息表示;也可以采用多种信道反馈信息的加权值表示,本申请对此不作限制。当信道状态采用一种或多种信道反馈信息表示时,预设条件可以包括:网络传输带宽大于预设传输带宽阈值,网络吞吐量大于预设吞吐量阈值,网络传输时延小于预设传输时延阈值,以及网络丢包率小于预设丢包率阈值。当采用信道状态采用多种信道反馈信息的加权值表示时,预设条件可以包括:加权值大于预设加权阈值。其中,预设传输带宽阈值、预设吞吐量阈值、预设传输时延阈值、预设丢包率阈值以及预设加权阈值等均可以按照需求设置,本申请对此不作限制。
例如,CPU/GPU的性能好,也就是说,发送终端对于功耗没有限制。此时,所需判断的编码效果可以为:图像质量(即图像分辨率)。相对于第一编码器而言,第二编码器的可支持编码的分辨率更高,也就是说第二编码器的编码质量更高(也就是编码的图像细节更多),因此可以确定第二编码器的编码效果优于第一编码器的编码效果,这样可以提高视频分辨率。
例如,CPU/GPU的性能差,也就是说,发送终端对于功耗有限制。此时,所需判断的编码效果可以为:编码功耗。相对于第一编码器而言,第二编码器的编码功耗更低,因此可以确定第二编码器的编码效果优于第一编码器的编码效果。该种情况是在第j帧为P帧,且第二编码器的编码效果优于第一编码器的编码效果时,进行编码器的变换。
例如,CPU/GPU的性能好,但是当前占用比较多,也就是说,发送终端对于功耗有限制。此时,所需判断的编码效果可以为:编码功耗。相对于第一编码器而言,第二编码器的编码功耗更低,因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
根据第一方面,或者以上第一方面的任意一种实现方式,k等于1;第j-k-1帧由第二编码器编码;第j-k帧由第一编码器编码,第j-k帧为I帧。这种情况,默认是第二编码器编码,在第j帧为I帧时,变换为第一编码器编码。
根据第一方面,或者以上第一方面的任意一种实现方式,第j帧对应的码流包括参考帧指示信息,参考帧指示信息指示第j-k帧为参考帧。
示例性的,参考帧指示信息可以包括短期参考帧指示信息或长期参考帧指示信息。
根据第一方面,或者以上第一方面的任意一种实现方式,修改第j帧对应的码流中图像顺序号POC值,以使第j帧对应的码流中POC值与第j-1帧对应的码流中POC值连续。这样,使得接收设备的解码器无需执行其他步骤,也可以正常解码。
根据第一方面,或者以上第一方面的任意一种实现方式,第一编码器和第二编码器符合同一编码协议。
示例性的,第一编码器和第二编码器的profile(配置文件)和Extension(扩展协议)可以相同,也可以不同,本申请对此不作限制。
根据第一方面,或者以上第一方面的任意一种实现方式,第一编码器为软件编码器;第二编码器为硬件编码器。
示例性的,第一编码器为硬件编码器,第二编码器为软件编码器。
示例性的,第一编码器为和第二编码器为不同类型的硬件编码器。
示例性的,第一编码器为和第二编码器为不同类型的软件编码器。
例如,第一编码器和第二编码器均符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议)。又例如,第一编码器符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议),第二编码器符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议)的扩展协议。例如,第一编码器符合H264(或H265或H2666或随着编解码技术发展未来所产生的其他视频编码协议)的第一类扩展协议,第二编码器符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议)的第二类扩展协议,本申请对此不作限制。
根据第一方面,或者以上第一方面的任意一种实现方式,第j-k帧和第j帧均为P帧。
根据第一方面,或者以上第一方面的任意一种实现方式,k=1,第j-k帧为I帧,第j帧为P帧。
第二方面,本申请实施例提供一种解码方法,该方法包括:首先,获取待解码码流;接着,对码流进行解析,以得到参数信息;然后,当基于参数信息确定用于解码的解码器为第一解码器时,由第一解码器对码流进行解码,以得到重建图像;当基于参数信息确定用于解码的解码器为第二解码器时,由第二解码器对码流进行解码,以得到重建图像。这样,当编码端采用不同的编码器进行编码时,解码端可以采用对应的解码器进行解码。
根据第二方面,参数信息包括:参数集,或,编码器的标识,或,参数集的标识。
以下以第g帧对应的码流为例,对如何确定对应的参数信息的过程进行示例性说明。
示例性的,当第g帧为I帧,或者是变换编码器后的第一帧时,对第g帧对应的码流进行解析,可以从第g帧对应的码流中解析出参数集。然后可以将参数集,作为第g帧对应的码流的参数信息。
示例性的,当第g帧不是I帧或者不是变换编码器后的第一帧时,对第g帧对应的码流进行解析,可以从第g帧对应的码流的Slice header中可以解析出PPS标识;然后可以将PPS标识,作为第g帧对应的码流的参数信息。
示例性的,码流可以包括:参数集、Slice和SEI(Supplemental EnhancementInformation,补充增强信息);或者,码流可以包括:Slice和SEI。其中,SEI可以在Slice之前,也可以在Slice之后,本申请对此不作限制。一种可能的方式中,编码器可以在SEI中添加编码器的标识,编码器的标识用于唯一标识编码器。例如,上述实施例中,可以在第j-k帧对应的码流的SEI中添加第一编码器的标识,在第j帧对应的码流的SEI中添加第二编码器的标识。这样,对第g帧对应码流进行解析,从第g帧对应的码流的SEI中可以解析出编码器的标识;然后可以将编码器的标识,作为第g帧对应的码流的参数信息。
示例性的,发送终端可以将每个帧对应的码流封装为至少一个RTP(Real-timeTransport Rrotocol,实时传输协议)包,然后将RTP包发送至服务器。一种可能的方式中,发送终端可以在RTP头中添加编码器的标识。例如,上述实施例中,可以在第j-k帧对应的码流的RTP头中添加第一编码器的标识,在第j帧对应的码流的RTP头中添加第二编码器的标识。这样,对第g帧对应码流进行解析,从第g帧对应的码流的RTP头中可以解析出编码器的标识;然后可以将编码器的标识,作为第g帧对应的码流的参数信息。
第三方面,本申请实施例提供一种解码方法,该方法包括:首先,获取第j-k帧的重建图像,第j-k帧的重建图像是由第一解码器解码第j-k帧对应的码流得到的;接着,基于第j-k帧的重建图像,确定第j帧的参考图像,第j-k帧与第j帧属于同一图像组GOP,k和j均为正整数,k小于j;随后,基于参考图像,由第二解码器对第j帧对应的码流进行解码,以得到第j帧的重建图像。这样,能够实现变换解码器对码流进行解码。
根据第三方面,基于第j-k帧的重建图像,确定第j帧的参考图像,包括:
将第j-k帧的重建图像,作为参考图像。
根据第三方面,或者以上第三方面的任意一种实现方式,基于第j-k帧的重建图像,确定第j帧的参考图像,包括:由第二编码器对第j-k帧的重建图像进行帧内编码,以得到第j-k帧的重建图像对应的帧内编码码流;由第二解码器对第j-k帧的重建图像对应的帧内编码码流进行解码,以得到参考图像。
根据第三方面,或者以上第三方面的任意一种实现方式,由第二编码器对第j-k帧的重建图像进行帧内编码,以得到第j-k帧的重建图像对应的帧内编码码流,包括:由第二编码器以小于预设阈值的量化参数,对第j-k帧的重建图像进行帧内编码,以得到第j-k帧的重建图像对应的帧内编码码流。
根据第三方面,或者以上第三方面的任意一种实现方式,GOP中的第j-1帧的重建图像是由第一解码器解码得到的,获取第j-k帧的重建图像,包括:当确定用于解码第j帧对应的码流的解码器为第二解码器,且第j帧为P帧时,获取第j-k帧的重建图像。
根据第三方面,或者以上第三方面的任意一种实现方式,GOP中的第j-2帧的重建图像是由第二解码器解码得到的;方法还包括:当确定用于解码第j-1帧对应的码流的解码器为第一解码器,且第j-1帧为I帧时,由第一解码器对第j-1帧对应的码流进行帧内解码,以得到第j-1帧的重建图像。
根据第三方面,或者以上第三方面的任意一种实现方式,第一解码器为软件解码器;第二解码器为硬件解码器。
第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第四方面,本申请实施例提供一种电子设备,该电子设备可以用于编码,该电子设备包括:第一重建图像获取模块,用于获取第j-k帧的重建图像,第j-k帧由第一编码器编码,其中,k和j均为正整数,且k小于j;
第一参考图像确定模块,用于基于第j-k帧的重建图像,确定第j帧的参考图像,其中,第j-k帧与第j帧属于同一图像组GOP;
编码模块,用于基于参考图像,由第二编码器对第j帧进行编码,以得到第j帧对应的码流。
在第四方面的一种可能的实现方式中,该电子设备还包括码流修改模块,用于修改第j帧对应的码流的片头(Slice header)中的参数集指示信息,修改后的参数集指示信息指示第j帧对应的参数集为第二参数集。
示例性的,该码流修改模块,还用于修改第j帧对应的码流中图像顺序号POC值,以使第j帧对应的码流中POC值与第j-1帧对应的码流中POC值连续。
示例性的,上述电子设备可以用于执行第一方面或第一方面的任意可能的实现方式中的编码方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请实施例提供一种电子设备,该电子设备可以用于解码,该电子设备包括:接收模块,用于获取待解码码流;
预处理模块,用于对码流进行解析,以得到参数信息;
第一解码模块,用于当基于参数信息确定用于解码的解码器为第一解码器时,由第一解码器对码流进行解码,以得到重建图像;当基于参数信息确定用于解码的解码器为第二解码器时,由第二解码器对码流进行解码,以得到重建图像。
示例性的,上述电子设备可以用于执行第二方面或第二方面的任意可能的实现方式中的解码方法。
第五方面以及第五方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第六方面,本申请实施例提供一种电子设备,该电子设备可以用于解码,该电子设备包括:第二重建图像获取模块,用于获取第j-k帧的重建图像,第j-k帧的重建图像是由第一解码器解码第j-k帧对应的码流得到的;
第二参考图像确定模块,用于基于第j-k帧的重建图像,确定第j帧的参考图像,第j-k帧与第j帧属于同一图像组GOP,k和j均为正整数,k小于j;
第二解码模块,用于基于参考图像,由第二解码器对第j帧对应的码流进行解码,以得到第j帧的重建图像。
示例性的,上述电子设备可以用于执行第三方面或第三方面的任意可能的实现方式中的解码方法。
第六方面以及第六方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第六方面以及第六方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第七方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的编码方法。
第七方面以及第七方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第七方面以及第七方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第八方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的解码方法。
第八方面以及第八方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第八方面以及第八方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第九方面,本申请实施例提供一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第三方面或第三方面的任意可能的实现方式中的解码方法。
第九方面以及第九方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第九方面以及第九方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的编码方法。
第十方面以及第十方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第十方面以及第十方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十一方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第二方面或第二方面的任意可能的实现方式中的解码方法。
第十一方面以及第十一方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十一方面以及第十一方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十二方面,本申请实施例提供一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第三方面或第三方面的任意可能的实现方式中的解码方法。
第十二方面以及第十二方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第十二方面以及第十二方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十三方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的编码方法。
第十三方面以及第十三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第十三方面以及第十三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的解码方法。
第十四方面以及第十四方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十四方面以及第十四方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十五方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,当计算机程序运行在计算机或处理器上时,使得计算机或处理器执行第三方面或第三方面的任意可能的实现方式中的解码方法。
第十五方面以及第十五方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第十五方面以及第十五方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十六方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第一方面或第一方面的任意可能的实现方式中的编码方法。
第十六方面以及第十六方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第十六方面以及第十六方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十七方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第二方面或第二方面的任意可能的实现方式中的解码方法。
第十七方面以及第十七方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应。第十七方面以及第十七方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第十八方面,本申请实施例提供一种计算机程序产品,计算机程序产品包括软件程序,当软件程序被计算机或处理器执行时,使得计算机或处理器执行第三方面或第三方面的任意可能的实现方式中的解码方法。
第十八方面以及第十八方面的任意一种实现方式分别与第三方面以及第三方面的任意一种实现方式相对应。第十八方面以及第十八方面的任意一种实现方式所对应的技术效果可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1a为示例性示出的应用场景示意图;
图1b为示例性示出的发送终端结构框架示意图;
图2a为示例性示出的编码流程示意图;
图2b为示例性示出的编码过程示意图;
图3a为示例性示出的编码流程示意图;
图3b为示例性示出的编码过程示意图;
图3c为示例性示出的码流结构示意图;
图4a为示例性示出的编码流程示意图;
图4b为示例性示出的编码过程示意图;
图5a为示例性示出的编码流程示意图;
图5b为示例性示出的编码过程示意图;
图5c为示例性示出的码流结构示意图;
图6a为示例性示出的编码流程示意图;
图6b为示例性示出的编码过程示意图;
图7为示例性示出的码流结构示意图;
图8为示例性示出的解码流程示意图;
图9a为示例性示出的解码流程示意图;
图9b为示例性示出的解码过程示意图;
图10a为示例性示出的解码流程示意图;
图10b为示例性示出的解码过程示意图;
图11a为示例性示出的解码流程示意图;
图11b为示例性示出的解码过程示意图;
图12a为示例性示出的解码流程示意图;
图12b为示例性示出的解码过程示意图;
图13a为示例性示出的解码流程示意图;
图13b为示例性示出的解码过程示意图;
图14为示例性示出的电子设备示意图;
图15为示例性示出的电子设备示意图;
图16为示例性示出的电子设备示意图;
图17为示例性示出的装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
图1a为示例性示出的应用场景示意图。图1a的应用场景包括但不限于:视频通话、屏幕内容共享(如文档共享、视频共享等)、手写体内容共享、视频会议、短距投屏、直播等各种RTC视频场景。
参照图1a,示例性的,发送终端、接收终端均包括但不限于:PC(PersonalComputer,个人计算机)、笔记本电脑、平板电脑、手机等,本申请对此不作限制。示例性的,服务器可以是单个服务器,也可以是服务器集群,本申请对此不作限制。
参照图1a,示例性的,编码过程中,可以由发送终端的视频采集模块进行视频采集,得到源视频图像。示例性的,视频采集模块包括但不限于:摄像头、显卡、录屏工具等。接着,视频采集模块可以将采集到的源视频图像发送至视频编码模块,由视频编码模块对源视频图像进行视频编码,得到源视频图像对应的码流。接着,视频编码模块将源视频图像对应的码流发送至发送模块,由发送模块将源视频图像对应的码流发送至服务器。
示例性的,服务器接收到源视频图像对应的码流后,将源视频图像对应的码流转发至对应的接收终端。
继续参照图1a,示例性的,解码过程中,接收终端的接收模块接收源视频图像对应的码流,然后将源视频图像对应的码流发送至视频解码模块,由视频解码模块对源视频图像对应的码流进行解码,得到重建视频图像。随后,视频解码模块将重建视频图像发送至视频显示模块,由视频显示模块对重建视频图像进行显示。
图1b为示例性示出的发送终端结构框架示意图。
参照图1b,示例性的,视频编码模块包括:决策模块和编码调度模块;编码调度模块包括调度模块和n(n为大于1的整数)个编码器(第一编码器、第二编码器……第n编码器)。
示例性的,决策模块,用于从n个编码器中,确定用于对源视频图像进行编码的目标编码器。
示例性的,调度模块,用于调用目标编码器进行编码。
继续参照图1b,示例性的,视频采集模块每采集到一帧源视频图像后,可以将该帧源视频图像发送至决策模块,由决策模块从n个编码器中,确定用于对该帧源视频图像进行编码的目标编码器,并根据目标编码器的标识,生成决策结果。然后,决策模块再将决策结果和该帧源视频图像发送至调度模块,由调度模块调用目标编码器对该帧源视频图像进行编码,得到该帧源视频图像对应的码流,并将该帧源视频图像对应的码流发送至发送模块。
例如,视频采集模块采集到第g(g为正整数)帧后,将第g帧发送至决策模块,决策模块确定第一编码器为目标编码器,则生成包含第一编码器的标识的决策结果。然后决策模块将第g帧和决策结果发送至调度模块,由调度模块调用第一编码器对第g帧进行编码,得到第g帧对应的码流。
又例如,视频采集模块采集第h(h为正整数,h不等于g)帧后,将第h帧发送至决策模块,决策模块确定第二编码器为目标编码器,则生成包含第二编码器的标识的决策结果。然后决策模块将第h帧和决策结果发送至调度模块,由调度模块调用第二编码器对第h帧进行编码,得到第h帧对应的码流。
又例如,视频采集模块采集第f(f为正整数,f不等于g、h)帧后,将第f帧发送至决策模块,决策模块确定第n编码器为目标编码器,则生成包含第n编码器的标识的决策结果。然后决策模块将第f帧和决策结果发送至调度模块,由调度模块调用第n编码器对第f帧进行编码,得到第f帧对应的码流。
示例性的,决策模块可以从n个编码器选取编码效果最优的编码器,作为目标编码器;其中,如何确定编码器的编码效果在后续进行说明。这样,通过采用编码效果最优的编码器进行编码,能够保证视频的清晰度和流畅性。
需要说明的是,这n个编码器符合同一编码协议。
应该理解的是,发送终端编码得到码流后,也可以直接将码流发送至接收终端,无需经过服务器的转发,本申请对此不作限制。本申请以发送终端将编码得到的码流发送至服务器,由服务器将码流转发给接收终端为例进行示例性说明。
由于编码器开始编码时都会先编码一个I帧,再进行后续P帧或B(bi-directionalinterpolatedprediction frame,双向预测帧)帧的编码,进而发送终端在每次变换编码器时均会引入额外的I帧,这样会造成码率上升、I帧的呼吸效应等副作用。因此本申请提出一种编码方法,在变换编码器后,变换后的编码器参考变换前的编码器编码的内容进行编码,来避免变换编码器而引入额外的I帧。
本申请以发送终端在任意两个编码器之间进行变换编码为例进行示例性说明。其中,这两个编码器可以称为:第一编码器和第二编码器,本申请以由第一编码器编码变换为第二编码器编码为例进行示例性说明。
一种可能的方式中,第一编码器为软件编码器,第二编码器为硬件编码器。
一种可能的方式中,第一编码器为硬件编码器,第二编码器为软件编码器。
一种可能的方式中,第一编码器为和第二编码器为不同类型的硬件编码器。
一种可能的方式中,第一编码器为和第二编码器为不同类型的软件编码器。
需要说明的是,第一编码器和第二编码器符合同一编码协议。例如,第一编码器和第二编码器均符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议)。又例如,第一编码器符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议),第二编码器符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议)的扩展协议。例如,第一编码器符合H264(或H265或H2666或随着编解码技术发展未来所产生的其他视频编码协议)的第一类扩展协议,第二编码器符合H264(或H265或H266或随着编解码技术发展未来所产生的其他视频编码协议)的第二类扩展协议,本申请对此不作限制。
图2a为示例性示出的编码流程示意图。
S201,获取第j-k帧的重建图像。
示例性的,发送终端在采集到当前帧(其中,为了便于后续说明,当前帧可以采用第j帧表示;此外,第j-1帧是由第一编码器进行编码的)后,可以判断是否需要由第一编码器编码变换为由第二编码器编码。当确定需要由第一编码器编码变换为由第二编码器编码时,可以获取第j-k帧(其中,第j-k帧至第j-1帧均是由第一编码器进行编码的)的重建图像。后续,第二编码器可以根据第j-k帧的重建图像,对第j帧进行编码,即执行S202~S203。
示例性的,第j帧和第j-k帧属于同一GOP(Group Of Picture,图像组),其中,k和j均为正整数,且k小于j。例如,j与k之间的差值小于或等于5。
示例性的,在第一编码器对第j-k帧进行编码的过程中,会生成第j-k帧对应的残差信息和预测信息;进而一种可能的方式中,第一编码器可以根据第j-k帧对应的残差信息和预测信息进行重建,得到第j-k帧的重建图像。
一种可能的方式中,第一编码器对第j-k帧进行编码得到第j-k帧对应的码流后,可以由发送终端中的解码器基于第j-k帧的码流进行重建(即对第j-k帧对应的码流进行解析,得到第j-k帧对应的残差信息和预测信息;然后基于第j-k帧对应的残差信息和预测信息进行重建),得到第j-k帧的重建图像。
需要说明的是,待第一编码器对第j-k帧进行编码得到第j-k帧对应的码流后,发送终端可以将第j-k帧对应的码流发送至服务器。
示例性的,当确定无需由第一编码器编码变换为由第二编码器编码时,可以继续调用第一编码器对第j帧进行编码,以得到j帧对应的码流。
其中,判断是否需要由第一编码器编码变换为由第二编码器编码的过程,在后续进行说明。
S202,基于第j-k帧的重建图像,确定第j帧的参考图像。
示例性的,第j帧的参考图像,可以是指第二编码器编码第j帧所需参考的参考图像。
一种可能的方式中,可以将第j-k帧的重建图像,作为第二编码器编码第j帧所需参考的参考图像。
一种可能的方式中,可以由第二编码器对第j-k帧的重建图像进行帧内编码;然后基于帧内编码过程中生成的第j-k帧的重建图像对应的残差信息和预测信息进行重建,以得到第二编码器编码第j帧所需参考的参考图像。
需要说明的是,第二编码器对第j-k帧的重建图像进行帧内编码,可以得到第j-k帧的重建图像对应的帧内编码码流,但是发送终端不将第j-k帧的重建图像对应的帧内编码码流,发送至服务器。
S203,基于参考图像,由第二编码器对第j帧进行编码,以得到第j帧对应的码流。
示例性的,确定第二编码器编码第j帧所需参考的参考图像后,可以调用第二编码器以参考图像作为参考,对第j帧进行编码,进而可以得到第j帧对应的码流。
后续,可以将第j帧对应的码流输出至发送模块,由发送模块将第j帧对应的码流发送至服务器,由服务器转发至对应的接收终端。
这样,在由第一编码器编码变换为由第二编码器编码后,没有引入额外的I帧作为参考帧,避免了变换编码器造成的I帧的呼吸效应等副作用。且也没有在发送的码流中引入额外的I帧对应的码流,避免了变换编码器所引起的码率上升的问题。
应该理解的是,当第j-1帧是第二编码器编码的,则当接收到第j帧后,可以判断是否需要由第二编码器编码变换为由第一编码器编码。当确定需要由第二编码器编码变换为由第一编码器编码,也可以按照与上述S201~S203类似的步骤,由第一编码器对第j帧进行编码,在此不再赘述。
图2b为示例性示出的编码过程示意图。在图2b中,k=1。
参照图2b,示例性的,灰色方块为发送终端发送至服务器的码流,包括:……第j-3帧对应的码流,第j-2帧对应的码流,第j-1帧对应的码流,第j帧对应的码流、第j+1帧对应的码流……,灰色方块之间的箭头,用于指示各帧的参考帧,即……第j+1帧的参考帧是第j帧,第j帧的参考帧是第j-1帧,第j-1帧的参考帧是第j-2帧,第j-2帧的参考帧是第j-3帧……
继续参考图2b,编码过程可以如下:发送终端接收到第j-3帧后,确定无需由第一编码器编码变换为由第二编码器编码,因此继续由第一编码器对第j-3帧进行编码,得到第j-3帧对应的码流;然后发送终端将第j-3帧对应的码流发送至服务器。发送终端接收到第j-2帧后,确定无需由第一编码器编码变换为由第二编码器编码,因此继续由第一编码器,以第j-3帧的重建图像为参考对第j-2帧进行编码,得到第j-2帧对应的码流;然后发送终端将第j-2帧对应的码流发送至服务器。发送终端接收到第j-1帧后,确定无需由第一编码器编码变换为由第二编码器编码,因此继续由第一编码器,以第j-2帧的重建图像为参考对第j-1帧进行编码,得到第j-1帧对应的码流;然后发送终端将第j-1帧对应的码流发送至服务器。
继续参考图2b,示例性的,发送终端接收到第j帧后,确定需要由第一编码器编码变换为由第二编码器编码,因此可以基于第j-1帧的重建图像,确定第二编码器编码第j帧所需参考的参考图像。然后第二编码器基于该参考图像,对第j帧进行编码,得到第j帧对应的码流;接着,发送终端将第j帧对应的码流发送至服务器。发送终端接收到第j+1帧后,确定无需由第二编码器编码变换为由第一编码器编码,因此继续由第二编码器,以第j帧的重建图像为参考对第j+1帧进行编码,得到第j+1帧对应的码流;然后发送终端将第j+1帧对应的码流发送至服务器。
基于图2b的编码过程可知,在发送终端向服务器发送第j-1帧对应的码流与第j帧对应的码流之间,没有发送I帧对应的码流;也就是说,本申请在变换编码器时,没有在发送的码流中引入额外的I帧对应的码流。
图3a为示例性示出的编码流程示意图。在图3a的实施例中,第j帧之前与第j帧属于同一GOP的连续k帧都是由第一编码器编码的;在获取到第j帧后,若确定需要由第一编码器编码变换至由第二编码器编码,则可以将第j-k帧的重建图像,作为第二编码器编码第j帧所需参考的参考图像,然后由第二编码器以参考图像为参考,对第j帧进行编码。
S301,判断是否需要由第一编码器编码变换至由第二编码器编码。
示例性的,可以预先设置第一预设变换条件:第二编码器的编码效果优于第一编码器的编码效果,且,第j帧为P帧。随后,可以通过判断是否满足第一预设变换条件,来判断是否需要由第一编码器编码变换至由第二编码器编码。
示例性的,可以判断第二编码器的编码效果是否优于第一编码器的编码效果。示例性的,编码器效果可以包括以下至少一种:编码功耗、编码速度、图像质量(或码率)和视频流畅度。其中,不同情况下(应用场景不同,和/或视频编码参数,和/或信道状态不同,和/或发送终端硬件性能不同,和/或发送终端硬件的使用状态不同),所需判断的编码效果不同。
示例性的,视频编码参数可以包括但不限于:分辨率、码率、帧率、参考帧设置、抗弱网能力、质量等级等。
示例性的,电子设备的性能可以包括但不限于:CPU(Central Processing Unit,中央处理器)/GPU(Graphics Processing Unit,图形处理器)等处理器的处理能力如频率、处理速度、缓存容量等,存储器的容量等。
示例性的,发送终端硬件的使用状态可以包括但不限于:CPU/GPU的使用状态,存储器当前可使用容量等。
示例性的,信道状态可以采用信息反馈信息表示,其中,信道反馈信息可以包括但不限于:网络传输带宽、网络吞吐量、网络丢包率、网络发送时延等。信道状态可以采用以上一种或多种信道反馈信息表示;也可以采用多种信道反馈信息的加权值表示,本申请对此不作限制。
以下以第一编码器为软件编码器,第二编码器硬件编码器为例进行举例说明。其中,软件编码器的压缩率高、通用性强、可扩展性强,抗弱网能力强,功耗高。硬件编码器的压缩率低、通用性低、可扩展性低,抗弱网能力弱,功耗低、时延低。
例如,应用场景为文档共享场景。由于图像内容为桌面展示的文档,因此在共享对端需要展示清晰度高的图像,以保证共享对端的用户观看到共享桌面中清晰的文本。此时,所需判断的编码效果可以为:图像质量(即图像清晰度)。相对于第二编码器而言,第一编码器的压缩率更高,因此相同码率的情况下,第一编码器编码的图像清晰度高于第二编码器编码的图像清晰度,进而,可以确定第一编码器的编码效果优于第二编码器的编码效果。
例如,应用场景为视频共享场景。由于图像内容为桌面播放的视频,因此在共享对端需要保证视频的流畅度,此时,所需判断的编码效果可以为:编码速度。相对于第一编码器而言,第二编码器的编码速度更高,因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
例如,视频编码参数中分辨率设置为大于第一分辨率阈值,其中,第一分辨率阈值大于第一编码器可支持编码的分辨率,可以按照需求设置,本申请对此不作限制。此时,所需判断的编码效果可以为:图像质量(即图像分辨率)。相对于第一编码器而言,第二编码器的可支持编码的分辨率更高,也就是说第二编码器的编码质量更高(也就是编码的图像细节更多),因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
例如,根据信道状态确定所需判断的编码效果为:图像质量(即图像分辨率)和视频流畅度。当信道状态满足预设条件时,也就是信道状态较好时,相对于第一编码器而言,第二编码器的可支持编码的分辨率更高,也就是说第二编码器的编码质量更高(也就是编码的图像细节更多),因此可以确定第二编码器的编码效果优于第一编码器的编码效果,这样可以提高视频分辨率。当信道状态不满足预设条件时,也就是信道状态较差时,相对于第二编码器而言,第一编码器可以根据信道状态调整编码参数(如长期参考帧、分层参考的层级),以提高视频的流畅度和图像质量,因此可以确定第一编码器的编码效果优于第二编码器的编码效果,这样可以提高视频的流畅性。
其中,当信道状态采用以上一种或多种信道反馈信息表示时,预设条件可以包括:网络传输带宽大于预设传输带宽阈值,网络吞吐量大于预设吞吐量阈值,网络传输时延小于预设传输时延阈值,以及网络丢包率小于预设丢包率阈值。当采用信道状态采用多种信道反馈信息的加权值表示时,预设条件可以包括:加权值大于预设加权阈值。其中,预设传输带宽阈值、预设吞吐量阈值、预设传输时延阈值、预设丢包率阈值以及预设加权阈值等均可以按照需求设置,本申请对此不作限制。
例如,CPU/GPU的性能好,也就是说,发送终端对于功耗没有限制。此时,所需判断的编码效果可以为:图像质量(即图像分辨率)。相对于第一编码器而言,第二编码器的可支持编码的分辨率更高,也就是说第二编码器的编码质量更高(也就是编码的图像细节更多),因此可以确定第二编码器的编码效果优于第一编码器的编码效果,这样可以提高视频分辨率。
例如,CPU/GPU的性能差,也就是说,发送终端对于功耗有限制。此时,所需判断的编码效果可以为:编码功耗。相对于第一编码器而言,第二编码器的编码功耗更低,因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
例如,CPU/GPU的性能好,但是当前占用比较多,也就是说,发送终端对于功耗有限制。此时,所需判断的编码效果可以为:编码功耗。相对于第一编码器而言,第二编码器的编码功耗更低,因此可以确定第二编码器的编码效果优于第一编码器的编码效果。
示例性的,当第j帧为P帧,且第二编码器的编码效果优于第一编码器的编码效果,则可以确定满足第一预设变换条件,此时可以确定需要由第一编码器编码变换为第二编码器编码,可以执行S302。当第j帧不是P帧,或者,第一编码器的编码效果优于或等于第二编码器的编码效果时,可以确定不满足第一预设变换条件,此时可以确定无需由第一编码器编码变换为第二编码器编码,可以执行S307。
S302,获取第j-k帧的重建图像。
示例性的,S302可以参照S201的描述,在此不再赘述。
示例性的,将第j-k帧的重建图像作为参考图像的一种实现方式,可以参照S303~S305:
S303,将第j-k帧输入至第二编码器,由第二编码器对第j-k帧进行帧内编码。
S304,基于第j-k帧对应的残差信息和预测信息进行重建,以得到第j帧的参考图像,其中,第j-k帧对应的残差信息和预测信息是在第二编码器对第j-k帧进行帧内编码过程中生成的。
S305,将第j帧的参考图像,替换为第j-k帧的重建图像。
由于编码器在开始编码时通常会编码一个I帧,因此可以将第j-k帧输入至第二编码器,由第二编码器对第j-k帧进行帧内编码,得到第j-k帧对应的帧内编码码流。
一种可能的方式中,可以由第二编码器基于在对第j-k帧进行帧内编码过程中生成的预测信息和残差信息进行重建,得到第j帧的参考图像。
一种可能的方式中,可以由发送终端中的解码器基于第j-k帧对应的帧内编码码流进行重建(即对第j-k帧对应的帧内编码码流进行解析,得到第j-k帧对应的残差信息和预测信息;然后基于第j-k帧对应的残差信息和预测信息进行重建),得到第j帧的参考图像。
示例性的,为了避免引入额外的I帧,在得到第j-k帧对应的帧内编码码流后,发送终端不向服务器发送第j-k帧对应的帧内编码码流。为了能够保证在不发送第j-k帧对应的帧内编码码流(也就是I帧码流)的情况下,接收终端也可以正确解码,可以将第二编码器对应的参考帧内存中的参考图像(由第二编码器基于帧内编码第j-k帧的过程中生成的残差信息和预测信息进行重建得到,或者由解码器基于第j-k帧对应的帧内编码码流进行重建得到),替换为第一编码器编码的第j-k帧的重建图像(由第一编码器基于编码第j-k帧的过程中得到的残差信息和预测信息进行重建得到,或者由解码器基于第j-k帧对应的码流进行重建得到)。这样,在发送终端中的第二编码器可以以第一编码器编码的第j-k帧的重建图像为参考,对第j帧进行编码,得到第j帧对应的码流。对应的,在接收终端,解码器可以以第j-k帧的重建图像为参考,对第j帧对应的码流进行解码。
示例性的,将第j-k帧的重建图像作为参考图像的又一种实现方式中,第二编码器不编码I帧(也就是无需将第j-k帧输入至第二编码器,由第二编码器进行帧内编码),而是直接将第j-k帧的重建图像,作为参考帧图像;例如,将第j-k帧的重建图像,直接存储到第二编码器对应的参考帧内存中。
S306,由第二编码器以参考图像为参考对第j帧进行编码,得到第j帧对应的码流。
示例性的,第二编码器可以从第二编码器对应的参考帧内存中读取参考图像,也就是第j-k帧的重建图像,然后以参考图像为参考对第j帧进行编码,得到第j帧对应的码流。
示例性的,第二编码器可以基于第j-k帧的重建图像,对第j帧进行帧间预测,得到残差信息;然后将残差信息经过变换(Transform)、量化(Quantization)、熵编码等处理后,得到第j帧对应的码流。
一种可能的方式中,发送终端可以对生成的码流中的参数进行修改,以使接收终端在接收到码流后,可以对码流进行正确解码,可以如下:
示例性的,发送终端可以将编码器对应的参数集发送至接收终端,进而接收终端可以基于参数集对码流进行解码。其中,不同编码器的参数集不同;为了便于后续说明,可以将第一编码器对应的参数集称为第一参数集,将第二编码器对应的参数集称为第二参数集。示例性的,参数集可以包括:VPS(Video Parameter Set,视频参数集)、SPS(SequenceParameter Set,序列参数集)、PPS(Picture Parameter Set,图像参数集)。其中,参数集具有参数集标识,参数集标识包括VPS标识、SPS标识和PPS标识。
一种可能的方式中,发送终端可以在每个GOP的开始,将第一编码器的第一参数集和第二编码器的第二参数集均发送至接收终端;这样,后续发送终端在编码GOP中各帧的过程中,无需再次发送第一编码器的第一参数集和第二编码器的第二参数集。进而,该GOP中I帧对应的码流包括:第一编码器对应的第一参数集和第二编码器对应的第二参数集,以及I帧对应的片(Slice),Slice包括片头(Slice header)和片数据(Slice data)。其中,Sliceheader中包括与编码相关的参数,Slice data中包括对图像帧进行编码得到的数据。在该种方式中,第一参数集的标识和第二参数集的标识是不同的,这样接收终端接收到第一参数集和第二参数集后,不会采用后接收到的参数集覆盖在先接收到的参数集,从而能够存储第一参数集和第二参数集。由于第一参数集的参数集标识和第二参数集的参数集标识都是默认标识,为了便于区分,可以将第二参数集的标识由默认标识修改为预设标识。其中,默认标识和预设标识不同,两者均可以按照需求设置,例如,默认标识为0,预设标识为1,本申请对此不作限制。由于第二编码器在生成第j帧对应的码流过程中,将第j帧对应的码流的Slice header中参数集指示信息,配置为默认标识。因此,在发送第j帧对应的码流之前,可以修改第j帧对应的码流的Slice header中的参数集指示信息,即将第j帧对应的码流的Slice header中的参数集指示信息,修改为第二参数集的参数集标识,即预设标识。这样,修改后的参数集指示信息可以指示第j帧对应的参数集为第二参数集。这样,接收终端在接收到第j帧对应的码流后,可以调用第二参数集进行解码。示例性的,可以将第j帧对应的码流的Slice header中的PPS指示信息,修改为第二参数集的PPS标识。
一种可能的方式中,发送终端无需在每个GOP的开始,将第一编码器的第一参数集和第二编码器的第二参数集均发送至接收终端;而是在每次变换编码器后,发送变换后的编码器对应的参数集。对应于图3a的实施例,也就是在由第一编码器编码变换为由第二编码器编码后,发送第二编码器的第二参数集。在该种方式中,第一参数集的参数集标识和第二参数集的参数集标识可以相同,可以均是默认标识。进而,第二编码器对第j帧编码得到的第j帧对应的码流可以包括:第二编码器对应的第二参数集,以及第j帧对应的Slice。这种情况下,第j帧对应的码流的Slice header中的参数指示信息无需修改。这样,接收终端也可以正确解码。
示例性的,对于第二编码器而言,第j帧的参考帧是I帧,但是实际上,第j帧的参考帧是第j-k帧。因此为了使得解码器能够正确解码,一种可能的方式中,可以修改第j帧对应的码流的Slice header中短期参考帧指示信息和POC(Picture Order Count)值,以使将第j帧的参考帧标识为第j-k帧。
示例性的,每个编码器在编码过程中,针对每个GOP,从GOP的I帧为开始,根据已编码的帧数,确定GOP中各帧的POC值,并在各帧对应的码流中添加对应的POC值。例如,一个GOP包括60帧,则I帧对应的码流中的POC值为0,第60帧对应的码流中的POC值为59。当在同一个GOP内由第一编码器编码变换为第二编码器编码后,由于第二编码器已编码帧数,与第一编码器针对该GOP所编码的帧数不同,因此第二编码器生成的第j帧对应的码流中的POC值,与第一编码器生成的第j-1帧对应的码流中的POC值不连续。因此,为了使得接收终端能够正确解码,可以修改第j帧对应的码流中的POC值,以使第j帧对应的码流中的POC值与第j-1帧对应的码流中的POC值连续;以及将第j帧对应的码流的Slice header中短期参考帧指示信息,修改为第j帧POC值与第j-k帧的POC值的差值。
示例性的,可以将第j帧对应的码流中的POC值,修改为第j-1帧对应的码流中的POC值与1的和。例如,H265编码协议中,用于描述POC值的参数为pic_order_cnt_lsb,则可以修改第j帧对应的码流的Slice header中的参数pic_order_cnt_lsb的值。例如,第j帧对应的码流的Slice header中的pic_order_cnt_lsb的值为1,第j-1帧对应的码流中sliceheader中的pic_order_cnt_lsb的值为5,则可以将第j帧对应的码流中slice header中的pic_order_cnt_lsb的值修改为6。
示例性的,由于第二编码器将第j-k帧编码成I帧,而I帧不存在MV(MotionVector,运动矢量),因此第二编码器基于第j-k帧的重建图像编码第j帧时,无法使用第j-k帧的MV。因此,若第j帧对应的码流的Slice header中,存在用于指示是否启用时域MV预测的参数(例如,H265编码协议中,用于指示是否启用时域MV预测的参数为temporal_mvp_enabled_flag),则可以将用于指示是否启用时域MV预测的参数的状态,修改为停用状态;这样,第j帧不使用MV。
示例性的,若后续依然是采用第二编码器,对与第j帧属于同一个GOP的第j+1帧进行编码的,那么第j+1帧的POC值,与第j帧的POC值也是不连续的。因此,可以对第j+1帧对应的码流的Slice header中的POC值进行修改,以使第j+1帧对应的码流的Slice header中的POC值,与第j帧对应的码流的Slice header中的POC值连续。类似的,若后续依然是采用第二编码器,对与第j+1帧属于同一个GOP的第j+2帧进行编码的,那么第j+2帧的POC值,与第j+1帧的POC值也是不连续的。因此,可以对第j+2帧对应的码流的Slice header中的POC值进行修改,以使第j+2帧对应的码流的Slice header中的POC值,与第j+1帧对应的码流的Slice header中的POC值连续。以此类推,可以对依然是采用第二编码器对在第j帧之后,且与第j帧属于同一个GOP的m(m为正整数)个帧对应的码流的Slice header中的POC值进行修改。
需要说明的是,对于对第j帧之后依然是采用第二编码器编码的,且与第j帧属于同一个GOP的m(m为正整数)个帧对应的码流的Slice header中,其他参数可以无需修改。
示例性的,为了使得解码器能够正确解码,一种可能的方式中,可以修改第j帧对应的码流的Slice header中长期参考帧指示信息,以指定第j-k帧为第j帧的参考帧。该种方式中可以不修改第j帧对应的码流的Slice header中的POC值,也无需修改第j帧对应的码流的Slice header中短期参考帧指示信息,也无需修改第j帧对应的码流的Sliceheader中用于指示是否启用时域MV预测的参数的状态。
例如,以H265为例,可以修改第j-k帧对应的码流的Slice header中的参数num_long_term_pics(用于表示第j-k帧所属GOP中长期参考帧的帧数量)的值和poc_lsb_lt(用于存储第j-k帧所属GOP中长期参考帧的POC值的数组)。以及修改第j帧对应的码流的Sliceheader中的参数used_by_curr_pic_lt_flag(用于从多帧长期参考帧中选取一帧当前帧的参考帧)的值。假设,j=7,第7帧所属GOP中长期参考帧的帧数量为4,分别为第3帧、第4帧、第5帧和第6帧,则num_long_term_pics为4,poc_lsb_lt=[3,4,5,6],used_by_curr_pic_lt_flag=[0,0,0,1],“0”表示不指定该长期参考帧为当前帧的参考帧,“1”表示指定该长期参考帧为当前的参考帧。
示例性的,若后续依然是采用第二编码器,对第j帧之后且与第j帧对应的码流属于同一个GOP的m帧进行编码,由于这m帧对应的码流中的POC值是连续的,因此接收终端也可以准确的对第j帧之后的m帧对应的码流进行解码,这样,只需对第j帧对应的码流进行修改,而无需对其他帧对应的码流进行修改,能够提高编码效率。
S307,由第一编码器对第j帧进行编码,以得到第j帧对应的码流。
示例性的,当确定无需由第一编码器编码变换为由第二编码器编码时,可以继续调用第一编码器对第j帧进行编码,以得到第j帧对应的码流。
需要说明的是,由于在第一编码器编码第j帧编码之前,发送终端已经发送了第一编码器的第一参数集,因此第一编码器编码得到的第j帧对应的码流中包含第j帧对应的Slice,而不包含第一参数集;且无需对第一编码器编码得到的第j帧对应的码流的Sliceheader中的参数进行修改。
图3b为示例性示出的编码过程示意图。在图3b中,k=1。
图3c为示例性示出的码流结构示意图。
参照图3b,示例性的,灰色方块为发送终端发送的一个GOP的各帧对应的码流:第1帧对应的码流、第2帧对应的码流、……第j-2帧对应的码流,第j-1帧对应的码流,第j帧对应的码流、第j+1帧对应的码流……,灰色方块之间的箭头,用于指示各帧的参考关系,即,第j+1帧的参考帧是第j帧,第j帧的参考帧是第j-1帧,第j-1帧的参考帧是第j-2帧,……,第2帧的参考帧是第1帧。
继续参考图3b,编码过程可以如下:发送终端接收到第1帧后,确定用于编码的编码器为第一编码器;此时,可以调用第一编码器对第1帧进行帧内编码,得到第1帧对应的码流(也就是说,第1帧是I帧);然后发送终端将第1帧对应的码流发送至服务器。其中,第1帧对应的码流包括:VPS_A、SPS_A、PPS_A,以及Slice header_1和Slice data_1,如图3c所示。
继续参考图3b,发送终端接收到第2帧后,确定无需由第一编码器编码变换为第二编码器编码,因此继续采用第一编码器以第1帧的重建图像为参考,对第2帧进行编码,得到第2帧对应的码流;然后发送终端将第2帧对应的码流发送至服务器。其中,第2帧对应的码流包括:Slice header_2和Slice data_2,如图3c所示。
……
继续参考图3b,发送终端接收到第j-2帧后,确定无需由第一编码器编码变换为第二编码器编码,因此继续采用第一编码器对第j-2帧进行编码,得到第j-2帧对应的码流;然后发送终端将第j-2帧对应的码流发送至服务器。其中,第j-2帧对应的码流包括:Sliceheader_j-2和Slice data_j-2,如图3c所示。
继续参考图3b,发送终端接收到第j-1帧后,确定无需由第一编码器编码变换为第二编码器编码,因此继续采用第一编码器,以第j-2帧的重建图像为参考对第j-1帧进行编码,得到第j-1帧对应的码流;然后发送终端将第j-1帧对应的码流发送至服务器。其中,第j-1帧对应的码流包括:Slice header_j-1和Slice data_j-1,如图3c所示。
继续参考图3b,发送终端接收到第j帧后,确定需要由第一编码器编码变换为第二编码器编码,此时,可以将第j-1帧输入至第二编码器,由第二编码器对第j-1帧进行帧内编码,得到第j-1帧对应的帧内编码码流。需要说明的是,发送终端不将第j-1帧对应的帧内编码码流发送至服务器。然后第二编码器再基于第j-1帧对应的帧内编码码流进行重建,得到参考图像并将参考图像存储至第二编码器对应的参考帧内存。接着,可以采用基于第j-1帧对应的码流进行重建得到的重建图像,替换第二编码器对应的参考帧内存中存储的参考图像(基于第j-1帧对应的帧内编码码流进行重建得到的);然后第二编码器基于参考图像,对第j帧进行编码,得到第j帧对应的码流。接着,发送终端将第j帧对应的码流发送至服务器。其中,第j帧对应的码流包括:VPS_B、SPS_B、PPS_B,以及Slice header_j和Slice data_j,如图3c所示。
继续参考图3b,发送终端接收到第j+1帧后,确定无需由第二编码器编码变换为第一编码器编码,因此继续采用第二编码器,以第j帧的重建图像为参考对第j+1帧进行编码,得到第j+1帧对应的码流;然后发送终端将第j+1帧对应的码流发送至服务器。其中,第j+1帧对应的码流包括:Slice header_j+1和Slice data_j+1,如图3c所示。
……
图4a为示例性示出的编码流程示意图。在图4a的实施例中,第j帧之前与第j帧属于同一GOP连续的k帧都是由第一编码器编码的;在获取到第j帧后,若确定需要由第一编码器编码变换至由第二编码器编码,则可以对第j-k帧的重建图像进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流;然后通过基于第j-k帧的重建图像对应的残差信息和预测信息进行重建,得到第二编码器编码第j帧所需参考的参考图像,再由第二编码器以参考图像为参考,对第j帧进行编码。
S401,判断是否需要由第一编码器编码变换至由第二编码器编码。
S402,获取第j-k帧的重建图像。
示例性的,S401~S402可以参照上述S301~S302的描述,在此不再赘述。
示例性的,当确定需要由第一编码器编码变换为第二编码器编码时,可以执行S403;当确定无需由第一编码器编码变换为第二编码器编码时,可以执行S406。
S403,将第j-k帧的重建图像输入至第二编码器,由第二编码器对第j-k帧的重建图像进行帧内编码。
示例性的,当确定需要由第一编码器编码变换为第二编码器编码时,可以将第j-k帧的重建图像输入至第二编码器中,由第二编码器对第j-k帧的重建图像进行帧内编码,可以得到第j-k帧的重建图像对应的帧内编码码流。
一种可能的方式中,可以由第二编码器以小于预设阈值的量化参数,对第j-k帧的重建图像进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流。其中,预设阈值可以按照需求设置,例如,预设阈值为小于10的数,如2,3,4,5,6,7,8,9,本申请对此不作限制。这样,能够实现对第j-k帧的重建图像进行高质量的帧内编码。
一种可能的方式中,可以由第二编码器按照大于预设码率的码率,对第j-k帧的重建图像进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流。其中,预设码率可以按照需求设置,本申请对此不作限制。这样,也能够实现对第j-k帧的重建图像进行高质量的帧内编码。
需要说明的是,示例性的,S403中第二编码器对第j-k帧的重建图像进行帧内编码所使用的量化参数,可以小于S303中第二编码器对第j-k帧进行帧内编码所使用的量化参数。示例性的,S403中第二编码器对第j-k帧的重建图像进行帧内编码得到的第j-k帧的重建图像对应的帧内编码码流的码率,可以大于S303中第二编码器对第j-k帧进行帧内编码得到的第j-k帧的重建图像对应的帧内编码码流的码率。
S404,基于第j-k帧的重建图像对应的残差信息和预测信息进行重建,以得到参考图像,其中,第j-k帧的重建图像对应的残差信息和预测信息是在第二编码器对第j-k帧的重建图像进行帧内编码过程中生成的。
一种可能的方式中,可以由第二编码器基于在对第j-k帧的重建图像进行帧内编码过程中得到的残差信息和预测信息进行重建,得到第j帧的参考图像。
一种可能的方式中,可以由发送终端中的解码器基于第j-k帧的重建图像对应的帧内编码码流进行重建(即对第j-k帧的重建图像对应的帧内编码码流进行解析,得到第j-k帧的重建图像对应的残差信息和预测信息;然后基于第j-k帧的重建图像对应的残差信息和预测信息进行重建),得到第j帧的参考图像。
S405,由第二编码器以参考图像为参考对第j帧进行编码,得到第j帧对应的码流。
S406,由第一编码器对第j帧进行编码,得到第j帧对应的码流。
示例性的,S405和S406可以参照上述S306和S307的描述,在此不再赘述。
相对于采用第一编码器编码的第j-k帧的重建图像,替换根据第二编码器帧内编码第j-k帧过程中生成的残差信息和预测信息重建得到的参考图像而言,本实施例通过对第j-k帧的重建图像进行高质量编码确定参考图像,无需要求第二编码器开放的参考帧内存,通用性好。
图4b为示例性示出的编码过程示意图。在图4b中,k=1。
参照图4b,示例性的,灰色方块为发送终端向服务器发送的一个GOP的各帧对应的码流:第1帧对应的码流、第2帧对应的码流、……第j-2帧对应的码流,第j-1帧对应的码流,第j帧对应的码流、第j+1帧对应的码流……,灰色方块之间的箭头,用于指示各帧的参考帧,即……第j+1帧的参考帧是第j帧,第j帧的参考帧是第j-1帧,第j-1帧的参考帧是第j-2帧,……,第2帧的参考帧是第1帧。其中,第一编码器针对第1帧至第j-1帧的编码过程,可以参照上述针对图3b的描述,在此不再赘述。
继续参考图4b,发送终端接收到第j帧后,确定需要由第一编码器编码变换为第二编码器编码,此时,可以将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j-1帧的重建图像进行帧内编码,得到第j-1的重建图像对应的帧内编码码流。需要说明的是,发送终端不将第j-1的重建图像对应的帧内编码码流发送至服务器。然后第二编码器再基于第j-1的重建图像对应的帧内编码码流进行重建,得到参考图像并将参考图像存储至第二编码器对应的参考帧内存。接着,第二编码器基于参考图像,对第j帧进行编码,得到第j帧对应的码流。随后,发送终端将第j帧对应的码流发送至服务器。其中,第j帧对应的码流包括:VPS_B、SPS_B、PPS_B,以及Slice header_j和Slice data_j,如图3c所示。其中,第二编码器针对第j+1帧及后续多帧的编码过程,可以参照上述针对图3b的描述,在此不再赘述。
应该理解的是,当由第二编码器编码变换至第一编码器进行编码时,也可以参照上述S301~S307或S401~S406的步骤进行编码,本申请对此不作限制。
图5a为示例性示出的编码流程示意图。在图5a的实施例中,k=1,默认编码的编码器为第二编码器,仅在I帧且第一编码器的编码效果优于第二编码器的编码效果时,才变换至第一编码器编码I帧。在P帧时,再变换回第二编码器进行编码,在由第一编码器编码变换至由第二编码器编码后,可以将第j-1帧的重建图像,作为第二编码器编码第j帧所需参考的参考图像,然后由第二编码器以参考图像为参考,对第j帧进行编码。
S501,获取第j-1帧。
S502,判断是否需要由第二编码器编码变换至由第一编码器编码。
示例性的,可以预先设置第二预设变换条件:第一编码器的编码效果优于第二编码器的编码效果,且,第j-1帧为I帧。随后,可以通过判断是否满足第二预设变换条件,来判断是否需要由第二编码器编码变换至由第一编码器编码。
示例性的,假设第j-2帧为P帧,第j-2帧是由第二编码器进行编码器的,则在接收到第j-1帧时,若第j-1帧为I帧,可以判断第一编码器的编码效果是否优于第二编码器的编码效果。示例性的,判断第一编码器的编码效果是否优于第二编码器的编码效果的方式,可以参照上述S301的描述,在此不再赘述。
示例性的,当确定第一编码器的编码效果优于第二编码器的编码效果,且第j-1帧为I帧时,可以确定需要由第二编码器编码变换至由第一编码器编码,此时可以执行S503。当确定第二编码器的编码效果优于或等于第一编码器的编码效果,或第j-1帧不是I帧时,确定无需由第二编码器编码由第一编码器编码,则由第二编码器继续对j-1帧进行编码,得到第j-1帧对应的码流。
S503,由第一编码器对第j-1帧进行帧内编码,得到第j-1帧对应的帧内编码码流。
示例性的,第j-1帧为I帧,则第j-1帧没有参考帧,此时,第一编码器可以对第j-1帧进行帧内编码,得到第j-1帧对应的帧内编码码流。
S504,确定第j-1帧的重建图像。
一种可能的方式中,可以由第二编码器基于在对第j-1帧进行帧内编码过程中生成的预测信息和残差信息进行重建,得到第j帧的参考图像。
一种可能的方式中,可以由发送终端中的解码器基于第j-1帧对应的帧内编码码流进行重建(即对第j-1帧对应的帧内编码码流进行解析,得到第j-1帧对应的残差信息和预测信息;然后基于第j-1帧对应的残差信息和预测信息进行重建),得到第j帧的参考图像。
S505,获取第j帧。
示例性的,第j-1帧为I帧,则第j帧为P帧,此时可以确定由默认编码器即第二编码器进行编码,也就是由第一编码器编码变换为第二编码器编码。
S506,将第j-1帧输入至第二编码器,由第二编码器对第j-1帧进行帧内编码。
S507,基于第j-1帧对应的残差信息和预测信息进行重建,得到第j帧的参考图像,其中,第j-1帧对应的残差信息和预测信息是在第二编码器对第j-1帧进行帧内编码过程中生成的。
S508,将第j帧的参考图像,替换为第j-1帧的重建图像。
S509,由第二编码器以参考图像为参考对第j帧进行编码,得到第j帧对应的码流。
示例性的,S506~S509,可以参照S303~S306的描述,在此不再赘述。
图5b为示例性示出的编码过程示意图。图5b中,k=1。
图5c为示例性示出的码流结构示意图。
参照图5b,示例性的,灰色方块为发送终端发送的各帧对应的码流:第2帧对应的码流、……、第j-3帧对应的码流、第j-2帧对应的码流,第j-1帧对应的码流,第j帧对应的码流、第j+1帧对应的码流……,灰色方块之间的箭头,用于指示各帧的参考帧,即……第j+1帧的参考帧是第j帧,第j帧的参考帧是第j-1帧,第j-1帧的参考帧是第j-2帧,第j-2帧的参考帧是第j-3帧,……,第2帧的参考帧是第1帧。其中,第二编码器针对第2帧至第j-2帧的编码过程,与上述针对图3b中第一编码器针对第1帧至第j-2帧的编码过程类似,区别在于图5b中是判断是否需要由第二编码器编码变换为由第一编码器编码,在此不再赘述。
继续参考图5b,发送终端接收到第j-1帧后,确定需要由第二编码器编码变换为由第一编码器编码,此时,可以将第j-1帧输入至第一编码器,由第一编码器对第j-1帧进行帧内编码,得到第j-1帧对应的帧内编码码流;然后发送终端将第j-1帧对应的帧内编码码流发送至服务器。其中,第j-1帧对应的帧内编码码流可以包括:VPS_A、SPS_A、PPS_A,以及第j-1帧对应的Slice header_j-1和Slice data_j-1,如图5c所示。
继续参考图5b,发送终端接收到第j帧后,确定需要由第一编码器编码变换为由第二编码器编码,此时,可以将第j-1帧输入至第二编码器,由第二编码器对第j-1帧进行帧内编码,得到第j-1帧对应的帧内编码码流。需要说明的是,发送终端不将第二编码器编码得到的第j-1帧对应的帧内编码码流发送至服务器。然后可以基于第二编码器对第j-1帧编码得到的第j-1帧对应的帧内编码码流进行重建,得到参考图像并将参考图像存储至第二编码器对应的参考帧内存。再采用第一编码器对第j-1帧编码对应的帧内编码码流进行重建得到的第j-1帧的重建图像,替换第二编码器对应的参考帧内存中的参考图像。接着,第二编码器基于参考图像,对第j帧进行编码,得到第j帧对应的码流;随后,发送终端将第j帧对应的码流发送至服务器。其中,第j帧对应的码流包括:VPS_B、SPS_B、PPS_B,以及第j帧编码对应的Slice header_j和Slice data_j,如图5c所示。
图6a为示例性示出的编码流程示意图。在图6a的实施例中,k=1,默认编码的编码器为第二编码器,仅在I帧且第一编码器的编码效果优于第二编码器的编码效果时,才变换至第一编码器编码I帧。在P帧时,再变换回第二编码器进行编码,在由第一编码器编码变换至由第二编码器编码后,则可以对第j-1帧的重建图像进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流;然后通过基于第j-1帧的重建图像对应的残差信息和预测信息进行重建,得到第二编码器编码第j帧所需参考的参考图像,再由第二编码器以参考图像为参考,对第j帧进行编码。
S601,获取第j-1帧。
S602,判断是否需要由第二编码器编码变换至由第一编码器编码。
S603,由第一编码器对第j-1帧进行帧内编码,得到第j-1帧对应的帧内编码码流。
S604,确定第j-1帧的重建图像。
示例性的,S601~S604,可以参照上述S501~S504的描述,在此不再赘述。
S605,获取第j帧。
S606,将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j-1帧的重建图像进行帧内编码。
S607,基于第j-1帧对应的残差信息和预测信息进行重建,以得到参考图像,其中,第j-1帧的重建图像对应的残差信息和预测信息是在第二编码器对第j-1帧的重建图像进行帧内编码过程中生成的。
示例性的,S606~S607,可以参照上述S403~S404的描述,在此不再赘述。
S608,由第二编码器以参考图像为参考对第j帧进行编码,得到第j帧对应的码流。
示例性的,S608,可以参照S306的描述,在此不再赘述。
图6b为示例性示出的编码过程示意图。其中,图6b中,k=1。
图6b为示例性示出的码流结构示意图。
参照图6b,示例性的,灰色方块为发送终端向服务器发送的码流:第2帧对应的码流、……、第j-3帧对应的码流、第j-2帧对应的码流,第j-1帧对应的码流,第j帧对应的码流、第j+1帧对应的码流……,灰色方块之间的箭头,用于指示各帧的参考帧,即……第j+1帧的参考帧是第j帧,第j帧的参考帧是第j-1帧,第j-1帧的参考帧是第j-2帧,第j-2帧的参考帧是第j-3帧,……,第2帧的参考帧是第1帧。其中,第二编码器针对第2帧至第j-2帧的编码过程,与上述针对图3b中第一编码器针对第1帧至第j-2帧的编码过程类似,区别在于图6b中是判断是否需要由第二编码器编码变换为由第一编码器编码,在此不再赘述。
继续参考图6b,发送终端接收到第j-1帧后,确定需要由第二编码器编码变换为由第一编码器编码,此时,可以将第j-1帧输入至第一编码器,由第一编码器对第j-1帧进行帧内编码,得到第j-k帧对应的帧内编码码流;然后发送终端将第j-k帧对应的帧内编码码流发送至服务器。其中,第j-1帧对应的帧内编码码流可以包括:VPS_A、SPS_A、PPS_A,以及第j-1帧对应的Slice header_j-1和Slice data_j-1,如图5c所示。
继续参考图6b,发送终端接收到第j帧后,确定需要由第一编码器编码变换为由第二编码器编码,此时,可以将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j-1帧的重建图像进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。然后可以基于第二编码器对第j-1帧的重建图像编码得到的帧内编码码流进行重建,得到参考图像并将参考图像存储至第二编码器对应的参考帧内存。接着,第二编码器基于参考图像,对第j帧进行编码;然后发送终端将第j帧对应的码流发送至服务器。其中,第j帧对应的码流包括:VPS_B、SPS_B、PPS_B,以及第j帧编码对应的Slice header_j和Slice data_j,如图5c所示。
应该理解的是,当发送终端默认的编码器为第一编码器时,则在第二编码器的编码效果优于第一编码器的编码效果,且第j帧为I帧时,可以变换为第二编码器对第j帧进行帧内编码;具体可以参照上述S501~S509或S601~S608的步骤,本申请对此不作限制。
一种可能方式中,每个GOP中I帧对应的码流包括:第一编码器对应的第一参数集和第二编码器对应的第二参数集,以及I帧对应的Slice;也就是在每个GOP的第一帧发送第一参数集和第二参数集。后续,在发送终端在变换编码器后,无需发送变换后的编码器的参数集。
图7为示例性示出的码流结构示意图。
以图3b为例,结合图7,示例性的,发送终端发送至服务器的第1帧对应码流包括:VPS_A、SPS_A、PPS_A和VPS_B、SPS_B、PPS_B,以及第1帧的Slice header_1和Slice data_1。后续,无论发送终端是否变换编码器编码,发送终端发送至服务器的该GOP内各帧对应的码流包括Slice header和Slice data,不包括第一参数集和/或第二参数集。例如,第2帧对应的码流包括:Slice header_2和Slice data_2,……第j帧对应的码流包括Slice header_j和Slice data_j,……如图7所示。
一种可能的方式中,当第一编码器采用的编码协议中的profile(配置文件)和Extension(扩展协议),与第二编码器采用的编码协议中的profile和Extension均相同时,可以采用支持第一编码器采用的编码协议,且支持第二编码器采用的编码协议的一个解码器,对接收到的码流(包括第一编码器编码得到的码流和第二编码器编码得到的码流)进行解码即可。可选地,解码器可以是软件解码器。这样,解码器可以直接以第j-k帧的重建图像为参考,解码第j帧对应的码流,得到第j帧的重建图像。这种情况下,对于接收终端而言,按照对应的编码协议进行解码即可,无需新增额外解码步骤。
一种可能的方式中,当第一编码器采用的编码协议中的profile和Extension,与第二编码器采用的编码协议中的profile和Extension均不相同时,可以采用支持第一编码器采用的编码协议的解码器(后续可以称为第一解码器),对第一编码器编码得到的码流进行解码。以及采用支持第二编码器采用的编码协议的解码器(后续可以称为第二解码器),对第二编码器编码得到的码流进行解码。
以下对接收终端如何确定用于解码码流的解码器的过程进行说明。
图8为示例性示出的解码流程示意图。
S801,获取待解码码流。
示例性的,接收终端可以接收待解码的码流。
S802,对码流进行解析,以得到参数信息。
示例性的,参数信息包括:参数集,或,编码器的标识,或,参数集的标识。
以下以第g帧对应的码流为例,对如何确定对应的参数信息的过程进行示例性说明。
一种可能的方式中,当第g帧为I帧,或者是变换编码器后的第一帧时,对第g帧对应的码流进行解析,可以从第g帧对应的码流中解析出参数集。然后可以将参数集,作为第g帧对应的码流的参数信息。
一种可能的方式中,当第g帧不是I帧或者不是变换编码器后的第一帧时,对第g帧对应的码流进行解析,可以从第g帧对应的码流的Slice header中可以解析出PPS标识;然后可以将PPS标识,作为第g帧对应的码流的参数信息。
示例性的,码流可以包括:参数集、Slice和SEI(Supplemental EnhancementInformation,补充增强信息);或者,码流可以包括:Slice和SEI。其中,SEI可以在Slice之前,也可以在Slice之后,本申请对此不作限制。一种可能的方式中,编码器可以在SEI中添加编码器的标识,编码器的标识用于唯一标识编码器。例如,上述实施例中,可以在第j-k帧对应的码流的SEI中添加第一编码器的标识,在第j帧对应的码流的SEI中添加第二编码器的标识。这样,对第g帧对应码流进行解析,从第g帧对应的码流的SEI中可以解析出编码器的标识;然后可以将编码器的标识,作为第g帧对应的码流的参数信息。
示例性的,发送终端可以将每个帧对应的码流封装为至少一个RTP(Real-timeTransport Rrotocol,实时传输协议)包,然后将RTP包发送至服务器。一种可能的方式中,发送终端可以在RTP头中添加编码器的标识。例如,上述实施例中,可以在第j-k帧对应的码流的RTP头中添加第一编码器的标识,在第j帧对应的码流的RTP头中添加第二编码器的标识。这样,对第g帧对应码流进行解析,从第g帧对应的码流的RTP头中可以解析出编码器的标识;然后可以将编码器的标识,作为第g帧对应的码流的参数信息。
S803,当基于参数信息确定用于解码的解码器为第一解码器时,由第一解码器对码流进行解码,以得到重建图像。
示例性的,当参数信息中参数集为第一参数集时,可以确定由第一解码器进行解码。
示例性的,当参数信息中PPS标识为第一参数集中的PPS标识时,可以确定由第一解码器进行解码。
示例性的,当参数信息中编码器的标识为第一编码器的标识时,可以由第一解码器进行解码。
示例性的,当确定由第一解码器进行解码时,可以将该帧对应的码流输入至第一解码器,由第一解码器对该帧对应的码流进行解码,得到该帧的重建图像。
例如,对第j-k帧对应的码流进行解析,所得到的编码器的标识为第一编码器的标识,则可以确定用于解码第j-k帧对应的码流的解码器为第一解码器;因此可以采用第一解码器对第j-k帧的码流进行解码,得到第j-k帧的重建图像。
例如,对第j-k帧对应的码流进行解析,所得到的PPS标识为第一参数集中的PPS标识,则可以确定用于解码第j-k帧对应的码流的解码器为第一解码器;因此可以采用第一解码器对第j-k帧的码流进行解码,得到第j-k帧的重建图像。
S803,当基于参数信息确定用于解码的解码器为第二解码器时,由第二解码器对码流进行解码,以得到重建图像。
示例性的,当参数信息中参数集为第二参数集时,可以确定由第二解码器进行解码。
示例性的,当参数信息中PPS标识为第二参数集中的PPS标识时,可以确定由第二解码器进行解码。
示例性的,当参数信息中编码器的标识为第二编码器的标识时,可以由第二解码器进行解码。
示例性的,当确定由第二解码器进行解码时,可以将该帧对应的码流输入至第二解码器,由第二解码器对该帧对应的码流进行解码,得到该帧的重建图像。
例如,对第j帧对应的码流进行解析,所得到的编码器的标识为第二编码器的标识,则可以确定用于解码第j帧对应的码流的解码器为第二解码器;因此可以采用第二解码器对第j帧的码流进行解码,得到第j帧的重建图像。
例如,对第j帧对应的码流进行解析,所得到的PPS标识为第二参数集中的PPS标识,则可以确定用于解码第j帧对应的码流的解码器为第二解码器;因此可以采用第二解码器对第j帧的码流进行解码,得到第j帧的重建图像。
本申请以接收终端在任意两个解码器之间进行变换解码为例,对解码过程进行示例性说明。其中,这两个解码器可以称为:第一解码器和第二解码器,本申请以由第一解码器解码变换为第二解码器进行解码的过程为例进行示例性说明。
一种可能的方式中,第一解码器为软件解码器,第二解码器为硬件解码器。
一种可能的方式中,第一解码器为硬件解码器,第二解码器为软件解码器。
一种可能的方式中,第一解码器为和第二解码器为不同类型的硬件解码器。
一种可能的方式中,第一解码器为和第二解码器为不同类型的软件解码器。
图9a为示例性示出的解码流程示意图。图9a的实施例中的解码方法,与图2a的实施例中的编码方法对应。
S901,获取第j-k帧的重建图像,第j-k帧的重建图像是由第一解码器解码第j-k帧对应的码流得到的。
示例性的,接收终端在对当前帧对应的码流(其中,为了便于后续说明,当前帧可以采用第j帧表示;此外,第j-1帧的码流是由第一解码器进行解码的)进行解码之前,预处理模块可以判断是否需要由第一解码器解码变换为由第二解码器解码。示例性的,可以参照上述图8所示的实施例中的方式,确定解码第j帧对应的码流的解码器,以确定是否需要由第一解码器解码变换为由第二解码器解码。
示例性的,当确定需要由第一解码器解码变换为由第二解码器解码时,可以根据从第j帧对应的码流的Slice header中解析出参数帧指示信息,确定第j帧的参考帧。为了便于后续说明,可以将第j帧的参考帧,采用第j-k帧表示,第j-k帧至第j-1帧的重建图像是由第一解码器解码得到的。
示例性的,接收终端的解码过程与发送终端的编码过程是相对应的,进而可以获取由第一解码器解码得到的第j-k帧的重建图像。
S902,基于第j-k帧的重建图像,确定第j帧的参考图像,第j-k帧与第j帧属于同一图像组GOP,k和j均为正整数,k小于j。
示例性的,第j帧的参考图像,可以是指第二解码器解码第j帧对应的码流所需参考的参考图像。
一种可能的方式中,可以将第j-k帧的重建图像,作为第二编码器解码第j帧对应的码流所需参考的参考图像。
一种可能的方式中,可以对第j-k帧的重建图像进行帧内编码,以得到第j-k帧的重建图像对应的帧内编码码流;然后基于第j-k帧的重建图像对应的帧内编码码流进行重建,以得到第二解码器解码第j帧对应的码流所需参考的参考图像。
S903,基于参考图像,由第二解码器对第j帧的码流进行解码,以得到第j帧的重建图像。
示例性的,第二解码器可以以参考图像为参考,对第j帧的码流进行解码,得到第j帧的重建图像。
后续,可以将第j帧的重建图像输出至视频显示模块,由视频显示模块对第j帧的重建图像进行显示。
图9b为示例性示出的解码过程示意图。图9b中的解码过程,与图2b中的编码过程对应。
图9b中,灰色方块中的重建图像,为发送至视频显示模块进行显示的图像。
参照图9b,示例性的,接收终端对第j-3帧对应的码流进行解码之前,确定用于解码的解码器为第一解码器,此时,可以调用第一解码器以第j-4帧的重建图像为参考,对第j-3帧对应的码流进行解码,得到第j-3帧的重建图像。随后,可以将第j-3帧的重建图像发送至视频显示模块进行显示。
参照图9b,示例性的,接收终端对第j-2帧对应的码流进行解码之前,确定用于解码的解码器为第一解码器,此时,可以调用第一解码器以第j-3帧的重建图像为参考,对第j-2帧对应的码流进行解码,得到第j-2帧的重建图像。随后,可以将第j-2帧的重建图像发送至视频显示模块进行显示。
参照图9b,示例性的,接收终端对第j-1帧对应的码流进行解码之前,确定用于解码的解码器为第一解码器,此时,可以调用第一解码器以第j-2帧的重建图像为参考,对第j-1帧对应的码流进行解码,得到第j-1帧的重建图像。随后,可以将第j-1帧的重建图像发送至视频显示模块进行显示。
参照图9b,示例性的,接收终端对第j帧对应的码流进行解码之前,确定用于解码的解码器为第二解码器,也就是确定需要由第一解码器解码变换为由第二解码器解码。此时,可以获取第j-1帧的重建图像,然后基于第j-1帧的重建图像,确定第j帧对应码流的参考图像,再调用第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。随后,可以将第j帧的重建图像发送至视频显示模块进行显示。
参照图9b,示例性的,接收终端对第j+1帧对应的码流进行解码之前,确定用于解码的解码器为第二解码器,此时,可以调用第二解码器以第j帧的重建图像为参考,对第j+1帧对应的码流进行解码,得到第j+1帧的重建图像。随后,可以将第j+1帧的重建图像输出至视频显示模块进行显示。……
这样,接收终端即可以完成对多个编码器编码得到的码流进行解码。
以下分别对应于上述图3a、图4a、图5a和图6a,对接收终端的解码过程进行示例性说明。
图10a为示例性示出的解码流程示意图。图10a的实施例中的解码方法,与图3a的实施例中的编码方法对应。
S1001,获取第j帧对应的码流。
一种可能的方式中,第j帧对应的码流中包括:VPS_B、SPS_B、PPS_B,以及Sliceheader_j和Slice data_j。
一种可能的方式中,第j帧对应的码流中包括:Slice header_j和Slice data_j。
S1002,当确定用于解码的解码器由第一解码器变换为第二解码器,且第j帧为P帧时,获取第j-k帧的重建图像。
一种可能的方式中,接收终端的预处理模块对第j帧对应的码流进行解析,可以获取到第j帧对应的码流中的参数集为第二参数集。
一种可能的方式中,接收终端的预处理模块对第j帧对应的码流进行解析,可以获取到第j帧对应的码流的Slice header中的PPS标识,为第二参数集中的PPS的标识。
以及对第j帧对应的码流进行解析,可以获取到第j帧对应的码流中帧类型标识,为P帧标识。进而可以确定用于解码的解码器由第一解码器变换为第二解码器,且第j帧为P帧,此时,可以获取第j-k帧的重建图像。
S1003,将第j-k帧的重建图像输入至第二编码器,由第二编码器对第j-k帧进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流。
示例性的,由于解码器在开始解码时通常会解码一个I帧对应的码流,因此可以将第j-k帧的重建图像输入至第二编码器,由第二编码器对第j-k帧的重建图像进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流,也就是I帧对应的码流。
S1004,由第二解码器对第j-k帧的重建图像对应的帧内编码码流进行解码,得到第j帧的参考图像。
S1005,将第j帧的参考图像,替换为第j-k帧的重建图像。
S1006,由第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。
示例性的,可以将第j-k帧的重建图像对应的帧内编码码流和第j帧对应的码流输入至第二解码器中,然后由第二解码器先对第j-k帧的重建图像对应的帧内编码码流进行解码,得到第j-k帧的重建图像的重建图像,也就是第j帧的参考图像,并将参考图像存储至第二解码器对应的参考帧内存中。接着,可以将第二解码器对应的参考帧内存中存储的参考图像,替换为第j-k帧的重建图像。随后,第二解码器可以从对应的参考帧内存中读取参考图像,然后再以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。
需要说明的,第二解码器不将第二编码器解码得到的第j-k帧的重建图像的重建图像,发送至视频显示模块进行显示,而是将第j帧的重建图像,输出至视频显示模块进行显示。
需要说明的是,一种可能的方式中,也可以无需对第j-k帧的重建图像进行帧内编码,而是直接将第j-k帧的重建图像,作为第j帧对应的码流的参考帧,例如,将第j-k帧的重建图像,直接存储到第二解码器对应的参考帧内存中。
图10b为示例性示出的解码过程示意图。图10b的解码过程,与图3b的编码过程对应。
图10b中,灰色方块中的重建图像,为输出至视频显示模块进行显示的图像。
参照图10b,示例性的,接收终端对第j-3帧对应的码流至第j-1帧对应的码流,以及第j+1帧对应的码流的解码过程可以参照图9b的描述,在此不再赘述。
参照图10b,示例性的,接收终端对第j帧对应的码流进行解码之前,确定用于解码的解码器为第二解码器,且第j帧为P帧;此时,可以确定由第一解码器解码切换为第二解码器解码。然后可以获取第j-1帧的重建图像,将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j帧的重建图像进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。接着,将第j-1帧的重建图像对应的帧内编码码流和第j帧对应的码流,输入至第二解码器中,由第二解码器对第j-1帧的重建图像对应的帧内编码码流进行解码,得到第j-1帧的重建图像的重建图像,也就是第j帧对应码流的参考图像。需要说明的,第二解码器不将第二编码器解码得到的第j-1帧的重建图像的重建图像,发送至视频显示模块进行显示。随后,可以将第j帧的参考图像,替换为第j-1帧的重建图像,然后可以调用第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。接着,可以将第j帧的重建图像,输出至视频显示模块进行显示。
图11a为示例性示出的解码流程示意图。图11a的实施例中的解码方法,与图4a的实施例中的编码方法对应。
S1101,获取第j帧对应的码流。
S1102,当确定用于解码的解码器由第一解码器变换为第二解码器,且第j帧为P帧时,获取第j-k帧的重建图像。
S1103,将第j-k帧的重建图像输入至第二编码器,由第二编码器对第j-k帧进行帧内编码,得到第j-k帧的重建图像对应的帧内编码码流。
S1104,由第二解码器对第j-k帧的重建图像对应的帧内编码码流进行解码,得到第j帧的参考图像。
S1105,由第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。
示例性的,S1101~S1005,可以参照上述S1001~S1004,以及S1006的描述,在此不再赘述。
图11b为示例性示出的解码过程示意图。图11b的解码过程与图4b中的编码过程对应。
图11b中,灰色方块中的重建图像,为输出至视频显示模块进行显示的图像。
参照图11b,示例性的,接收终端对第j-3帧对应的码流至第j-1帧对应的码流,以及第j+1帧对应的码流的解码过程可以参照图9b的描述,在此不再赘述。
参照图11b,示例性的,接收终端对第j帧对应的码流进行解码之前,确定用于解码的解码器为第二解码器,且第j帧为P帧。此时,获取第j-1帧的重建图像,然后将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j帧的重建图像进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。接着,将第j-1帧的重建图像对应的帧内编码码流和第j帧对应的码流,输入至第二解码器中,由第二解码器对第j-1帧的重建图像对应的帧内编码码流进行解码,得到第j-1帧的重建图像的重建图像,也就是第j帧对应码流的参考图像。需要说明的,第二解码器不将第二编码器解码得到的第j-k帧的重建图像的重建图像,发送至视频显示模块进行显示。随后,可以调用第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。接着,可以将第j帧的重建图像,输出至视频显示模块进行显示。
图12a为示例性示出的解码流程示意图。图12a的实施例中的解码方法,与图5a的实施例中的编码方法对应。
S1201,获取第j-1帧对应的码流。
一种可能的方式中,第j-1帧对应的码流中包括:VPS_A、SPS_A、PPS_A,以及Sliceheader_j-1和Slice data_j-1。
一种可能的方式中,第j-1帧对应的码流中包括:Slice header_j-1和Slicedata_j-1。
S1202,当确定用于解码的解码器由第二编码器变换为第一解码器,且第j-1帧为I帧时,由第一解码器对第j-1帧对应的码流进行帧内解码,以得到第j-1帧的重建图像。
一种可能的方式中,接收终端的预处理模块对第j-1帧对应的码流进行解析,可以获取到第j-1帧对应的码流中的参数集为第一参数集。
一种可能的方式中,接收终端的预处理模块对第j帧对应的码流进行解析,可以获取到第j帧对应的码流的Slice header中的PPS标识,为第一参数集中的PPS的标识。
以及对第j-1帧对应的码流进行解析,可以获取到第j-1帧对应的码流中帧类型标识,为I帧标识。此外,第j-2帧对应的码流是由第二解码器进行解码的,进而可以确定由第二解码器解码变换为第一解码器解码,且第j帧为I帧,此时,可以调用第一解码器对第j-1帧对应的码流进行帧内解码,以得到第j-1帧的重建图像,也就是I帧的重建图像。
S1203,获取第j帧对应的码流。
S1204,当确定用于解码的解码器由第一解码器变换为第二解码器,且第j帧为P帧时,将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j-1帧进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。
S1205,由第二解码器对第j-1帧的重建图像对应的帧内编码码流进行解码,得到第j帧的参考图像。
S1206,将第j帧的参考图像,替换为第j-1帧的重建图像。
S1207,由第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。
示例性的,S1203~S1207可以参照S1001~S1006的描述,在此不再赘述。
图12b为示例性示出的解码过程示意图。图12b的解码过程与图5b中的编码过程对应。
图12b中,灰色方块中的重建图像,为输出至视频显示模块进行显示的图像。
参照图12b,示例性的,接收终端对第j-3帧对应的码流至第j-2帧对应的码流,以及第j+1帧对应的码流的解码过程可以参照图9b的描述,在此不再赘述。
参照图12b,示例性的,接收终端对第j-1帧对应的码流进行解码之前,确定用于解码的解码器为第一解码器,且第j-1帧为I帧,此时,可以将第j-1帧对应的码流输入至第一解码器,由第一解码器对第j-1帧对应的码流进行解码,得到第j-1帧的重建图像。接着,可以将第j-1帧的重建图像,输出至视频显示模块进行显示。
参照图12b,示例性的,接收终端对第j帧对应的码流进行解码之前,确定用于解码的解码器为第二解码器,也就是确定需要由第一解码器解码变换为第二解码器解码。此时,可以获取第j-1帧的重建图像,然后将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j帧的重建图像进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。接着,将第j-1帧的重建图像对应的帧内编码码流和第j帧对应的码流,输入至第二解码器中,由第二解码器对第j-1帧的重建图像对应的帧内编码码流进行解码,得到第j-1帧的重建图像的重建图像,也就是第j帧对应码流的参考图像。需要说明的,第二解码器不将第二编码器解码得到的第j-1帧的重建图像的重建图像,发送至视频显示模块进行显示。随后,可以将第j帧的参考图像,替换为第j-1帧的重建图像,然后可以调用第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。接着,可以将第j帧的重建图像,输出至视频显示模块进行显示。
图13a为示例性示出的解码流程示意图。图13a的实施例中的解码方法,与图6a的实施例中的编码方法对应。
S1301,获取第j-1帧对应的码流。
S1302,当确定用于解码的解码器由第二编码器变换为第一解码器,且第j-1帧为I帧时,由第一解码器对第j-1帧对应的码流进行帧内解码,以得到第j-1帧的重建图像。
S1303,获取第j帧对应的码流。
S1304,当确定用于解码的解码器由第一解码器变换为第二解码器,且第j帧为P帧时,将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j-1帧进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。
S1305,由第二解码器对第j-1帧的重建图像对应的帧内编码码流进行解码,得到第j帧的参考图像。
S1306,由第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。
示例性的,S1301~S1306可以参照S1201~S1205,S1207的描述,在此不再赘述。
图13b为示例性示出的解码过程示意图。图13b的解码过程与图5b中的编码过程对应。
图13b中,灰色方块中的重建图像,为输出至视频显示模块进行显示的图像。
参照图13b,示例性的,接收终端对第j-3帧对应的码流至第j-2帧对应的码流,以及第j+1帧对应的码流的解码过程可以参照图9b的描述,在此不再赘述。
参照图13b,示例性的,接收终端对第j-1帧对应的码流进行解码之前,确定用于解码的解码器为第一解码器,且第j-1帧为I帧,也就是确定由第一解码器解码变换为第二解码器解码。此时,可以将第j-1帧对应的码流输入至第一解码器,由第一解码器对第j-1帧对应的码流进行解码,得到第j-1帧的重建图像。接着,可以将第j-1帧的重建图像,输出至视频显示模块进行显示。
参照图13b,示例性的,接收终端对第j帧对应的码流进行解码之前,确定用于解码的解码器为第二解码器,此时,获取第j-1帧的重建图像,然后将第j-1帧的重建图像输入至第二编码器,由第二编码器对第j帧的重建图像进行帧内编码,得到第j-1帧的重建图像对应的帧内编码码流。接着,将第j-1帧的重建图像对应的帧内编码码流和第j帧对应的码流,输入至第二解码器中,由第二解码器对第j-1帧的重建图像对应的帧内编码码流进行解码,得到第j-1帧的重建图像的重建图像,也就是第j帧对应码流的参考图像。需要说明的,第二解码器不将第二编码器解码得到的第j-1帧的重建图像的重建图像,发送至视频显示模块进行显示。随后,可以调用第二解码器以参考图像为参考,对第j帧对应的码流进行解码,得到第j帧的重建图像。接着,可以将第j帧的重建图像,输出至视频显示模块进行显示。
图14为示例性示出的电子设备示意图。其中,图14所示的电子设备可以用于编码;该电子设备包括:
第一重建图像获取模块1401,用于获取第j-k帧的重建图像,第j-k帧由第一编码器编码,其中,k和j均为正整数,且k小于j;
第一参考图像确定模块1402,用于基于第j-k帧的重建图像,确定第j帧的参考图像,其中,第j-k帧与第j帧属于同一图像组GOP;
编码模块1403,用于基于参考图像,由第二编码器对第j帧进行编码,以得到第j帧对应的码流。
需要说明的是,当图14的电子设备为图1a中的发送终端时,图14中的第一重建图像获取模块、第一参考图像确定模块和图像编码模块,属于图1a中的视频编码模块。
示例性的,第一参考图像确定模块1402,具体用于将第j-k帧的重建图像,作为参考图像。
示例性的,第一参考图像确定模块1402,具体用于由第二编码器对第j-k帧的重建图像进行帧内编码;基于第j-k帧的重建图像对应的残差信息和预测信息进行重建,以得到参考图像,残差信息和预测信息在帧内编码过程中生成。
示例性的,第一参考图像确定模块1402,具体用于由第二编码器以小于预设阈值的量化参数,对第j-k帧的重建图像进行帧内编码。
示例性的,GOP中I帧对应的码流包括:第一编码器对应的第一参数集和第二编码器对应的第二参数集。
示例性的,第j帧对应的码流包括:第二编码器对应的第二参数集;第j帧为P帧。
示例性的,电子设备还包括:
码流修改模块1404,用于修改第j帧对应的码流的片头(Slice header)中的参数集指示信息,修改后的参数集指示信息指示第j帧对应的参数集为第二参数集。
示例性的,GOP中第j-1帧由第一编码器编码;
第一重建图像获取模块1401,具体用于当第二编码器的编码效果优于第一编码器的编码效果,且,第j帧为P帧时,获取第j-k帧的重建图像。
示例性的,k等于1;第j-k-1帧由第二编码器编码;第j-k帧由第一编码器编码,第j-k帧为I帧。
示例性的,第j帧对应的码流包括参考帧指示信息,参考帧指示信息指示第j-k帧为参考帧。
示例性的,码流修改模块1404,还用于修改第j帧对应的码流中图像顺序号POC值,以使第j帧对应的码流中POC值与第j-1帧对应的码流中POC值连续。
示例性的,第一编码器和第二编码器符合同一编码协议。
示例性的,第一编码器为软件编码器;第二编码器为硬件编码器。
示例性的,第j-k帧和第j帧均为P帧。
示例性的,k=1,第j-k帧为I帧,第j帧为P帧。
应该理解的是,图14的电子设备还可以包括通信模块,用于发送或接收码流。其中,当图14的电子设备为图1a中的发送终端时,通信模块可以包括图1a中的发送模块。
图15为示例性示出的电子设备示意图。其中,图15所示的电子设备可以用于解码;该电子设备包括:
接收模块1501,用于获取待解码码流;
预处理模块1502,用于对码流进行解析,以得到参数信息;
第一解码模块1503,用于当基于参数信息确定用于解码的解码器为第一解码器时,由第一解码器对码流进行解码,以得到重建图像;当基于参数信息确定用于解码的解码器为第二解码器时,由第二解码器对码流进行解码,以得到重建图像。
示例性的,参数信息包括:参数集,或,编码器的标识,或,参数集的标识。
需要说明的是,当图15的电子设备为图1a中的接收终端时,第一解码模块1503可以是指视频解码模块。
图16为示例性示出的电子设备示意图。其中,图15所示的电子设备可以用于解码;该电子设备包括:
第二重建图像获取模块1601,用于获取第j-k帧的重建图像,第j-k帧的重建图像是由第一解码器解码第j-k帧对应的码流得到的;
第二参考图像确定模块1602,用于基于第j-k帧的重建图像,确定第j帧的参考图像,第j-k帧与第j帧属于同一图像组GOP,k和j均为正整数,k小于j;
第二解码模块1603,用于基于参考图像,由第二解码器对第j帧对应的码流进行解码,以得到第j帧的重建图像。
示例性的,第二参考图像确定模块1602,具体用于将第j-k帧的重建图像,作为参考图像。
示例性的,第二参考图像确定模块1602,具体用于由第二编码器对第j-k帧的重建图像进行帧内编码,以得到第j-k帧的重建图像对应的帧内编码码流;由第二解码器对第j-k帧的重建图像对应的帧内编码码流进行解码,以得到参考图像。
示例性的,第二参考图像确定模块1602,具体用于由第二编码器以小于预设阈值的量化参数,对第j-k帧的重建图像进行帧内编码,以得到第j-k帧的重建图像对应的帧内编码码流。
示例性的,GOP中的第j-1帧的重建图像是由第一解码器解码得到的,第二重建图像获取模块1601,具体用于当确定用于解码第j帧对应的码流的解码器为第二解码器,且第j帧为P帧时,获取第j-k帧的重建图像。
示例性的,GOP中的第j-2帧的重建图像是由第二解码器解码得到的;
第二解码模块1603,还用于当确定用于解码第j-1帧对应的码流的解码器为第一解码器,且第j-1帧为I帧时,由第一解码器对第j-1帧对应的码流进行帧内解码,以得到第j-1帧的重建图像。
示例性的,第一解码器为软件解码器;第二解码器为硬件解码器。
需要说明的是,图15的电子设备和图16的电子设备可以为同一个电子设备,此时,第一解码模块1503可以包括:第二重建图像获取模块1601、第二参考图像确定模块1602和第二解码模块1603。
需要说明的是,图14的电子设备,可以与图15的电子设备和图16的电子设备是同一个电子设备。
一个示例中,图17示出了本申请实施例的一种装置1700的示意性框图装置1700可包括:处理器1701和收发器/收发管脚1702,可选地,还包括存储器1703。
装置1700的各个组件通过总线1704耦合在一起,其中总线1704除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线1704。
可选地,存储器1703可以用于前述方法实施例中的指令。该处理器1701可用于执行存储器1703中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。
装置1700可以是上述方法实施例中的电子设备或电子设备的芯片。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的编解码方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的编解码方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的编解码方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
结合本申请实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机可读存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (31)

1.一种编码方法,其特征在于,所述方法包括:
获取第j-k帧的重建图像,所述第j-k帧由第一编码器编码,其中,k和j均为正整数,且k小于j;
基于所述第j-k帧的重建图像,确定第j帧的参考图像,其中,所述第j-k帧与所述第j帧属于同一图像组GOP;
基于所述参考图像,由第二编码器对所述第j帧进行编码,以得到所述第j帧对应的码流。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第j-k帧的重建图像,确定第j帧的参考图像,包括:
将所述第j-k帧的重建图像,作为所述参考图像。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第j-k帧的重建图像,确定第j帧的参考图像,包括:
由所述第二编码器对所述第j-k帧的重建图像进行帧内编码;
基于所述第j-k帧的重建图像对应的残差信息和预测信息进行重建,以得到所述参考图像,所述残差信息和所述预测信息在所述帧内编码过程中生成。
4.根据权利要求3所述的方法,其特征在于,所述由所述第二编码器对所述第j-k帧的重建图像进行帧内编码,包括:
由所述第二编码器以小于预设阈值的量化参数,对所述第j-k帧的重建图像进行帧内编码。
5.根据权利要求1至4任一项所述的方法,其特征在于,
所述GOP中I帧对应的码流包括:所述第一编码器对应的第一参数集和所述第二编码器对应的第二参数集。
6.根据权利要求1至4任一项所述的方法,其特征在于,
所述第j帧对应的码流包括:所述第二编码器对应的第二参数集;
所述第j帧为P帧。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
修改所述第j帧对应的码流的片头(Slice header)中的参数集指示信息,所述修改后的参数集指示信息指示所述第j帧对应的参数集为所述第二参数集。
8.根据权利要求1至7任一项所述的方法,其特征在于,
所述GOP中第j-1帧由所述第一编码器编码;
所述获取第j-k帧的重建图像,包括:
当所述第二编码器的编码效果优于所述第一编码器的编码效果,且,所述第j帧为P帧时,获取所述第j-k帧的重建图像。
9.根据权利要求1至7任一项所述的方法,其特征在于,所述k等于1;
第j-k-1帧由所述第二编码器编码;
所述第j-k帧由所述第一编码器编码,所述第j-k帧为I帧。
10.根据权利要求1至9任一项所述的方法,其特征在于,
所述第j帧对应的码流包括参考帧指示信息,所述参考帧指示信息指示所述第j-k帧为所述参考帧。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述的方法还包括:
修改所述第j帧对应的码流中图像顺序号POC值,以使所述第j帧对应的码流中POC值与第j-1帧对应的码流中POC值连续。
12.根据权利要求1至11任一项所述的方法,其特征在于,
所述第一编码器和所述第二编码器符合同一编码协议。
13.根据权利要求1至12任一项所述的方法,其特征在于,
所述第一编码器为软件编码器;
所述第二编码器为硬件编码器。
14.根据权利要求1或2或3或4或5或6或7或10或11或12或13所述的方法,其特征在于,所述第j-k帧和所述第j帧均为P帧。
15.根据权利要求1或2或3或4或5或6或7或10或11或12或13所述的方法,其特征在于,k=1,所述第j-k帧为I帧,所述第j帧为P帧。
16.一种解码方法,其特征在于,所述方法包括:
获取待解码码流;
对所述码流进行解析,以得到参数信息;
当基于所述参数信息确定用于解码的解码器为第一解码器时,由所述第一解码器对所述码流进行解码,以得到重建图像;
当基于所述参数信息确定用于解码的解码器为第二解码器时,由所述第二解码器对所述码流进行解码,以得到重建图像。
17.根据权利要求16所述的方法,其特征在于,
所述参数信息包括:参数集,或,编码器的标识,或,参数集的标识。
18.一种解码方法,其特征在于,所述方法包括:
获取第j-k帧的重建图像,所述第j-k帧的重建图像是由第一解码器解码所述第j-k帧对应的码流得到的;
基于所述第j-k帧的重建图像,确定第j帧的参考图像,所述第j-k帧与所述第j帧属于同一图像组GOP,k和j均为正整数,k小于j;
基于所述参考图像,由第二解码器对所述第j帧对应的码流进行解码,以得到所述第j帧的重建图像。
19.根据权利要求18所述的方法,其特征在于,所述基于所述第j-k帧的重建图像,确定第j帧的参考图像,包括:
将所述第j-k帧的重建图像,作为所述参考图像。
20.根据权利要求18所述的方法,其特征在于,所述基于所述第j-k帧的重建图像,确定第j帧的参考图像,包括:
由第二编码器对所述第j-k帧的重建图像进行帧内编码,以得到所述第j-k帧的重建图像对应的帧内编码码流;
由所述第二解码器对所述第j-k帧的重建图像对应的帧内编码码流进行解码,以得到所述参考图像。
21.根据权利要求20所述的方法,其特征在于,所述由第二编码器对所述第j-k帧的重建图像进行帧内编码,以得到所述第j-k帧的重建图像对应的帧内编码码流,包括:
由所述第二编码器以小于预设阈值的量化参数,对所述第j-k帧的重建图像进行帧内编码,以得到所述第j-k帧的重建图像对应的帧内编码码流。
22.根据权利要求18至21任一项所述的方法,其特征在于,所述GOP中的第j-1帧的重建图像是由所述第一解码器解码得到的,所述获取第j-k帧的重建图像,包括:
当确定用于解码所述第j帧对应的码流的解码器为第二解码器,且所述第j帧为P帧时,获取第j-k帧的重建图像。
23.根据权利要求18至21任一项所述的方法,其特征在于,所述GOP中的第j-2帧的重建图像是由所述第二解码器解码得到的;所述方法还包括:
当确定用于解码第j-1帧对应的码流的解码器为第一解码器,且所述第j-1帧为I帧时,由所述第一解码器对所述第j-1帧对应的码流进行帧内解码,以得到所述第j-1帧的重建图像。
24.根据权利要求18至23任一项所述的方法,其特征在于,
所述第一解码器为软件解码器;
所述第二解码器为硬件解码器。
25.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求1至权利要求15中任一项所述的编码方法。
26.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行权利要求16至权利要求24中任一项所述的解码方法。
27.一种芯片,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行权利要求1至权利要求15中任一项所述的编码方法。
28.一种芯片,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行权利要求16至权利要求24中任一项所述的解码方法。
29.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行如权利要求1至15任一项所述的编码方法。
30.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序运行在计算机或处理器上时,使得所述计算机或所述处理器执行如权利要求16至24任一项所述的解码方法。
31.一种计算机程序产品,其特征在于,所述计算机程序产品包含软件程序,当所述软件程序被计算机或处理器执行时,使得权利要求1至24任一项所述的方法的步骤被执行。
CN202210243270.XA 2022-03-11 2022-03-11 编解码方法及电子设备 Pending CN116781900A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210243270.XA CN116781900A (zh) 2022-03-11 2022-03-11 编解码方法及电子设备
PCT/CN2023/080104 WO2023169424A1 (zh) 2022-03-11 2023-03-07 编解码方法及电子设备
TW112108399A TW202341734A (zh) 2022-03-11 2023-03-08 編解碼方法及電子設備

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210243270.XA CN116781900A (zh) 2022-03-11 2022-03-11 编解码方法及电子设备

Publications (1)

Publication Number Publication Date
CN116781900A true CN116781900A (zh) 2023-09-19

Family

ID=87936017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210243270.XA Pending CN116781900A (zh) 2022-03-11 2022-03-11 编解码方法及电子设备

Country Status (3)

Country Link
CN (1) CN116781900A (zh)
TW (1) TW202341734A (zh)
WO (1) WO2023169424A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106658019B (zh) * 2015-10-31 2019-11-12 华为技术有限公司 参考帧编解码的方法与装置
WO2018110270A1 (ja) * 2016-12-12 2018-06-21 ソニー株式会社 画像処理装置および方法
CN110830762B (zh) * 2018-08-13 2021-06-18 视联动力信息技术股份有限公司 一种音视频数据的处理方法和系统
CN112312133B (zh) * 2020-10-30 2022-10-04 北京奇艺世纪科技有限公司 一种视频编码方法、装置、电子设备及可读存储介质
CN113810718A (zh) * 2021-08-16 2021-12-17 西安万像电子科技有限公司 编解码控制方法、装置、设备及存储介质

Also Published As

Publication number Publication date
TW202341734A (zh) 2023-10-16
WO2023169424A1 (zh) 2023-09-14

Similar Documents

Publication Publication Date Title
US11641485B2 (en) Reducing latency in video encoding and decoding
AU2015204953B2 (en) Representing motion vectors in an encoded bitstream
KR102058759B1 (ko) 디코딩된 픽쳐 버퍼 및 참조 픽쳐 목록들에 관한 상태 정보의 시그널링 기법
KR102090344B1 (ko) 화상 처리 장치 및 방법, 및 기록 매체
AU2014376189B2 (en) Video encoding of screen content data
KR20110006696A (ko) 깊이 정보에 기초한 디스패리티 예측을 구비한 다중 시점 비디오 코딩
EP2055106A2 (en) Techniques for variable resolution encoding and decoding of digital video
KR20120071410A (ko) 코딩 시스템
CN113711586B (zh) 视频编解码方法、装置、计算机设备及存储介质
KR100878809B1 (ko) 비디오 신호의 디코딩 방법 및 이의 장치
WO2020142358A1 (en) Adaptive picture resolution rescaling for inter-prediction and display
CN112005549B (zh) 一种帧内-帧间预测控制方法、装置、设备及存储介质
KR20060027779A (ko) 영상 블록의 시간상 및 공간상 상관관계를 이용한영상신호의 엔코딩 및 디코딩 방법과 장치
CN116018782A (zh) 用于音频混合的方法和装置
US20150117514A1 (en) Three-dimensional video encoding method using slice header and method therefor, and three-dimensional video decoding method and device therefor
CN115023954A (zh) 用于控制环路滤波的图像编码装置和方法
KR20060070400A (ko) 영상 신호의 인코딩 및 디코딩 방법
KR20210093819A (ko) 영상 부호화/복호화 방법 및 장치
CN110572672B (zh) 视频编解码方法和装置、存储介质及电子装置
KR102110229B1 (ko) 비디오 인코딩 및 디코딩 방법과 이를 이용한 장치
CN115866297A (zh) 视频处理方法、装置、设备及存储介质
CN116781900A (zh) 编解码方法及电子设备
CN117616751A (zh) 动态图像组的视频编解码
US20240214562A1 (en) Video coding with dynamic groups of pictures
EP3399751A1 (en) Bitstream conversion device, bitstream conversion method, delivery system, moving image encoding device, moving image encoding method, and computer-readable recording medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication