CN116567228A - 编码方法、实时通信方法、装置、设备及存储介质 - Google Patents

编码方法、实时通信方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116567228A
CN116567228A CN202210101697.6A CN202210101697A CN116567228A CN 116567228 A CN116567228 A CN 116567228A CN 202210101697 A CN202210101697 A CN 202210101697A CN 116567228 A CN116567228 A CN 116567228A
Authority
CN
China
Prior art keywords
frame
video frame
current video
encoded
encoding
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
CN202210101697.6A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210101697.6A priority Critical patent/CN116567228A/zh
Priority to PCT/CN2022/137893 priority patent/WO2023142716A1/zh
Publication of CN116567228A publication Critical patent/CN116567228A/zh
Priority to US18/514,741 priority patent/US20240098310A1/en
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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/87Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving scene cut or scene change detection in combination with video compression
    • 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
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • 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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/124Quantisation
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/172Methods 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 an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

本申请提供了一种编码方法、实时通信方法、装置、设备及存储介质,包括:按照第一编码方式对当前视频帧进行预编码,得到当前视频帧的预编码帧,第一编码方式中,第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧,若当前视频帧之前的M个编码帧中没有I帧,根据预编码帧和目标预编码帧,确定当前视频帧是否是场景切换帧,场景切换帧为相对前一个视频帧发生了场景切换的视频帧,目标预编码帧为对当前视频帧的前一个视频帧预编码得到,一个编码帧为对当前视频帧之前的一个视频帧编码得到,M为预设正整数,若当前视频帧是场景切换帧,将当前视频帧编码为I帧,若当前视频帧不是场景切换帧,将当前视频帧编码为P帧。从而,提高了编码效率。

Description

编码方法、实时通信方法、装置、设备及存储介质
技术领域
本申请实施例涉及互联网技术领域,尤其涉及一种编码方法、实时通信方法、装置、设备及存储介质。
背景技术
视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频。由于连续的帧之间相似性较高,为便于储存传输,需要对原始的视频进行编码压缩,以去除空间、时间维度的冗余。目前的视频编码标准中通常包括I帧和P帧。I帧为关键帧,I帧为将当前的视频帧进行完整编码后得到,I帧仅使用帧内预测进行编码,解码器不需要其他帧的信息即可独立解码出I帧的内容,I帧一般作为后续帧的参考帧,也作为码流切换的切入点。一组视频编码图像序列一般都是以I帧为起始帧。P帧为前向预测编码帧,P帧为根据当前视频帧与前一视频帧之间的差异数据进行编码后得到。
由于I帧是对视频帧进行完整编码,I帧的编码效率低于P帧的编码效率,现有的视频编码方法中,是将第一个视频帧编码为I帧,按照固定周期进行后续I帧的编码,并将编码为I帧的视频帧之后的视频帧编码为P帧,即两个I帧之间有多个P帧。
然而,当发生视频帧场景切换时,当前视频帧与上一视频帧的帧间关联突然减弱,当前视频帧与前一视频帧之间的差异数据增多,导致P帧数据量增大,若依然按照上述方法进行视频编码,编码效率较低。
发明内容
本申请提供一种编码方法、实时通信方法、装置、设备及存储介质,以提高编码效率。
第一方面,提供一种编码方法,包括:
按照第一编码方式对视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
若所述当前视频帧之前的M个编码帧中没有I帧,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
若所述当前视频帧是场景切换帧,将所述当前视频帧编码为I帧,若所述当前视频帧不是所述场景切换帧,将所述当前视频帧编码为P帧。
第二方面,提供一种实时通信方法,包括:
对实时生成的视频进行视频图像采集,得到视频流;
按照第一编码方式对所述视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,所述视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
若所述当前视频帧之前的M个编码帧中没有I帧,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
若所述当前视频帧是场景切换帧,将所述当前视频帧编码为I帧,若所述当前视频帧不是所述场景切换帧,将所述当前视频帧编码为P帧,得到所述当前视频帧的编码帧;
根据所述当前视频帧的编码帧和所述当前视频帧之前的多个编码帧,得到码流;
向客户端发送所述码流,以使所述客户端根据所述码流显示虚拟游戏画面。
第三方面,提供一种编码装置,包括:
第一编码模块,用于按照第一编码方式对视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
确定模块,用于在所述当前视频帧之前的M个编码帧中没有I帧时,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
第二编码模块,用于在所述当前视频帧是场景切换帧时,将所述当前视频帧编码为I帧,在所述当前视频帧不是所述场景切换帧时,将所述当前视频帧编码为P帧。
第四方面,提供一种实时通信装置,包括:
采集模块,用于对实时生成的视频进行视频图像采集,得到视频流;
第一编码模块,用于按照第一编码方式对所述视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,所述视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
确定模块,用于若所述当前视频帧之前的M个编码帧中没有I帧,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
第二编码模块,用于若所述当前视频帧是场景切换帧,将所述当前视频帧编码为I帧,若所述当前视频帧不是所述场景切换帧,将所述当前视频帧编码为P帧,得到所述当前视频帧的编码帧;
根据所述当前视频帧的编码帧和所述当前视频帧之前的多个编码帧,得到码流;
发送模块,用于向客户端发送所述码流,以使所述客户端根据所述码流显示虚拟游戏画面。
第五方面,提供一种电子设备,包括:处理器和存储器,该存储器用于存储计算机程序,该处理器用于调用并运行该存储器中存储的计算机程序,执行如第一方面或其各实现方式中或者第二方面或其各实现方式中的方法。
第六方面,提供一种计算机可读存储介质,用于存储计算机程序,计算机程序使得计算机执行如第一方面或其各实现方式中或者第二方面或其各实现方式中的方法。
第七方面,提供一种计算机程序产品,包括计算机程序指令,该计算机程序指令使得计算机执行如第一方面或其各实现方式中或者第二方面或其各实现方式中的方法。
综上,在本申请中,通过先按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,若当前视频帧的前M个编码帧中没有I帧,则根据预编码帧和目标预编码帧确定当前视频帧是场景切换帧时(即发生了视频帧场景切换),将当前视频帧编码为I帧,否则将当前视频帧编码为P帧,其中的目标预编码帧为对当前视频帧的前一个视频帧预编码得到。从而,实现了在发生视频帧场景切换时插入I帧,插入I帧再编入P帧时,P帧占用的字节数减少,从而提高了编码效率。由于I帧的编码效率低于P帧的编码效率,本申请中是在确定当前视频帧的前M个编码帧中没有I帧并且发生视频帧场景切换时才插入I帧,可避免I帧插入过多,提高编码效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种编码方法的应用场景示意图;
图2为本申请实施例提供的一种编码方法的流程图;
图3为本申请实施例提供的一种编码方法的流程示意图;
图4为本申请实施例提供的一种编码方法的流程框图;
图5为本申请实施例提供的一种实时通信方法的流程图;
图6为本申请实施例提供的一种最优解码配置的获取方法的流程图;
图7为本申请实施例提供的一种最优解码配置的获取方法的流程图;
图8为本申请实施例提供的一种编码装置的结构示意图;
图9为本申请实施例提供的一种实时通信装置的结构示意图
图10是本申请实施例提供的电子设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在介绍本申请技术方案之前,下面先对本申请相关知识进行介绍:
1、云技术(Cloud technology),是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloudtechnology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
2、云游戏(Cloud gaming),又可称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏并不在玩家游戏终端,而是在云服务器中运行,并由云服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云服务器的能力即可。
3、I帧(Intra picture),也称为关键帧或帧内编码帧,I帧为将当前的视频帧进行完整编码后得到,I帧仅使用帧内预测进行编码,解码器不需要其他帧的信息即可独立解码出I帧的内容,I帧一般作为后续帧的参考帧,也作为码流切换的切入点。
4、P帧(predictive-frame),为前向预测编码帧,P帧为根据当前视频帧与前一视频帧之间的差异数据进行编码后得到。
如上,现有的视频编码方法中,当发生视频帧场景切换时,编码效率较低。为了解决这一技术问题,本申请中,在对视频流中的当前视频帧进行编码时,进行一次预编码和一次二次编码,先按照第一编码方式对当前视频帧进行预编码,得到当前视频帧的预编码帧,若当前视频帧的前M个编码帧中没有I帧,则根据预编码帧和目标预编码帧确定当前视频帧是场景切换帧时(即发生了视频帧场景切换),将当前视频帧编码为I帧,否则将当前视频帧编码为P帧,其中的目标预编码帧为对当前视频帧的前一个视频帧预编码得到。从而,实现了在发生视频帧场景切换时插入I帧,插入I帧再编入P帧时,P帧占用的字节数减少,从而提高了编码效率。由于I帧的编码效率低于P帧的编码效率,本申请中是在确定当前视频帧的前M个编码帧中没有I帧并且发生视频帧场景切换时才插入I帧,可避免I帧插入过多,提高编码效率。
应理解的是,本申请技术方案可以应用于如下场景,但不限于:
示例性的,图1为本申请实施例提供的一种编码方法的应用场景示意图,如图1所示,终端设备110可以与服务器120进行通信,其中,终端设备110具有流媒体播放功能,服务器120具有图形处理功能,例如:图像分割、图像融合功能,服务器120还具有视频音频流的数据传输功能,例如:视频编码功能。
在一些可实现方式中,图1所示的应用场景中还可以包括:基站、核心网侧设备等,此外,图1示例性地示出了一个终端设备、一台服务器,实际上可以包括其他数量的终端设备和服务器,本申请对此不做限制。
在一些可实现方式中,图1中的服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。本申请对此不做限制。
在云游戏场景中,云服务器是指在云端运行游戏的服务器,并具备视频增强(编码前处理)、视频编码等功能,但不限于此。
终端设备是指一类具备丰富人机交互方式、拥有接入互联网能力、通常搭载各种操作系统、具有较强处理能力的设备。终端设备可以是智能手机、客厅电视、平板电脑、车载终端、玩家游戏终端,如掌上游戏主机等,但不限于此。
以云游戏场景为例,云游戏厂商主要依赖硬件厂商的硬件编码器对游戏内容进行编码传输。硬件编码器的特点是编码速度极快,但是中间编码数据难以提取和利用。同时,作为用户的云游戏厂商也难以对硬件编码过程进行修改,大部分时间只能使用硬件厂商提供的能力。本申请提供的编码方法,为自适应I帧插入方法,可实现在发生视频帧场景切换时插入I帧,例如在游戏场景切换的时刻插入I帧,可提高编码器的编码效率。本申请提供的编码方法,可适用于云游戏场景且兼容各式硬件编码器。
下面将对本申请技术方案进行详细阐述:
图2为本申请实施例提供的一种编码方法的流程图,该方法例如可以由如图1所示的服务器120执行,但不限于此,如图2所示,该方法包括如下步骤:
S101、按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,第一编码方式中,视频流中的第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧。
其中,本申请实施例中,预编码的编码模式以及二次编码(是指S103执行的编码)的编码模式采用可以使得编码后的编码帧数据大小能够较好地反映出帧间预测的匹配度的编码模式。若帧间关联度大,则当前视频帧编码后的帧数据量比较少,反之,当前视频帧编码后帧数据量比较大。
可选的,预编码的编码模式以及二次编码(是指S103执行的编码)的编码模式可以是固定量化参数(CQP)模式,使用CQP模式编码,可以使得若帧间关联度大,则当前视频帧编码后的帧数据量比较少,反之,当前视频帧编码后帧数据量比较大。需要说明的是,本申请实施例中预设编码模式还可以使用其他编码模式,本申请对此不做限制。
由于预编码是为了得到预编码帧的数据量大小,为了节省预编码的时间,可选的,S101中按照第一编码方式对当前视频帧进行预编码,得到当前视频帧的预编码帧,可以为:
根据预设的采样宽度和预设的采样长度对当前视频帧进行下采样,得到下采样的视频帧,按照第一编码方式对下采样的视频帧进行预编码,得到当前视频帧的预编码帧。
其中,采样宽度例如可以为原始视频帧的宽度的二分之一,采样长度例如可以为原始视频帧的长度的二分之一,即下采样的视频帧的宽度为当前视频帧的宽度的二分之一,即下采样的视频帧的长度为当前视频帧的长度的二分之一。预设的采样宽度和预设的采样长度还可以是其他数值,本申请实施例对此不做限制。通过对当前视频帧进行下采样,得到下采样的视频帧,再对下采样的视频帧进行预编码,可以节省预编码的时间,进而提高总体的编码效率。
S102、若当前视频帧之前的M个编码帧中没有I帧,根据预编码帧和目标预编码帧,确定当前视频帧是否是场景切换帧,场景切换帧为相对前一个视频帧发生了场景切换的视频帧,目标预编码帧为对当前视频帧的前一个视频帧预编码得到,一个编码帧为对当前视频帧之前的一个视频帧编码得到,M为预设正整数。
其中,一个编码帧为为对当前视频帧之前的一个视频帧编码得到,编码帧为对视频帧进行二次编码得到。
其中,M为预设正整数,为了避免I帧插入过多,本申请实施例中通过预设M的方式来避免I帧插入过多,M例如为128。
本申请实施例中,由于第一编码方式中,第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧,因此当前视频帧的预编码帧为P帧,目标预编码帧为当前视频帧的前一个视频帧的预编码帧,目标预编码帧也为P帧,可以根据连续的两个P帧确定当前视频帧是否是场景切换帧。场景切换帧为相对前一个视频帧发生了场景切换的视频帧,其中,场景切换可以包括:对于连续的两个视频帧而言,视频帧的场景、图像背景或其它信息等发生了变化。
在一种可实施的方式中,可以根据预编码帧的大小和目标预编码帧的大小,确定当前视频帧是否是场景切换帧。
可选的,可以根据预编码帧的字节数和目标预编码帧的字节数,确定当前视频帧是否是场景切换帧。
可选的,若预编码帧的字节数和目标预编码帧的字节数的比值大于或等于预设阈值,则确定当前视频帧是场景切换帧;若预编码帧的字节数和目标预编码帧的字节数的比值小于预设阈值,则确定当前视频帧不是场景切换帧。可选的,预设阈值例如等于2,还可以是其他数值,本申请实施例对此不做限制。
一般情况下,由于视频纹理的帧间关联性明显强于帧内关联性,I帧的数据量大小会明显大于P帧的数据量大小。在CQP的编码模式下,这个规律十分稳定。当当前视频帧发生场景切换时,帧间关联突然减弱,导致P帧数据量增大。场景差距足够大的情况下编码器会部分弃用帧间关联性而改用帧内关联性对当前帧进行编码,导致大量帧内编码块的产生。对于连续的两个P帧,若第2个P帧的字节数与第1个P帧的字节数的比值大于或等于预设阈值,预设阈值例如为2,即第2个P帧的字节数大于或等于第1个P帧的字节数的2倍,则确定第2个P帧对应的当前视频帧为场景切换帧。
进一步地,若当前视频帧之前的M个编码帧中有I帧,则将当前视频帧编码为P帧,或者,按照第二编码方式和预设编码模式对当前视频帧进行编码。
本申请实施例中,在一种可实施的方式中,第二编码方式可以是:从第一个视频帧开始,根据预设周期进行I帧的编码,将编码为I帧的视频帧之后的视频帧编码为P帧。例如预设周期是200帧,即,第一个视频帧编码为I帧,第201个视频帧编码为I帧,第401个视频帧编码为I帧,…,每个编码为I帧的视频帧之后的视频帧编码为P帧,两个I帧之间的编码帧为P帧。
本申请实施例中,上述第二编码方式的实施方式为一种可实施的方式,可选的,第二编码方式还可以是其它实施方式,本申请实施例对此不做限制。
其中,预设编码模式可以为CQP模式。
具体来说,本申请实施例中,若当前视频帧之前的M个编码帧中有I帧,则按照第二编码方式和预设编码模式对当前视频帧进行编码的这种方式中,具体可以是在按照第二编码方式和预设编码模式对当前视频帧进行编码之前,先对当前视频帧进行预编码,得到当前视频帧的预编码帧,然后确定当前视频帧之前的M个编码帧中是否有I帧,若没有I帧,才进行I帧的插入(即编码)。若确定当前视频帧之前的M个编码帧中有I帧,则按照第二编码方式和预设编码模式对当前视频帧进行编码,例如,若第二编码方式为上述可实施的编码方式(即按照固定周期进行I帧和P帧的编码),则将当前视频帧编码为P帧。
可选的,若当前视频帧之前的M个编码帧中没有I帧之前,本实施例的方法还可以包括:
统计当前视频帧之前的编码帧的数量,当当前视频帧之前的编码帧的数量到达M时,确认当前视频帧之前的M个编码帧中是否没有I帧。
S103、若当前视频帧是场景切换帧,将当前视频帧编码为I帧,若当前视频帧不是场景切换帧,将当前视频帧编码为P帧。
本实施例中,实现了在场景切换处插入I帧,可以提高编码器的编码效率,例如在云游戏中,可使得云游戏业务在相同画质的情况下更省带宽。
本申请提供的编码方法,通过先按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,若当前视频帧的前M个编码帧中没有I帧,则根据预编码帧和目标预编码帧确定当前视频帧是场景切换帧时(即发生了视频帧场景切换),将当前视频帧编码为I帧,否则将当前视频帧编码为P帧,其中的目标预编码帧为对当前视频帧的前一个视频帧预编码得到。从而,实现了在发生视频帧场景切换时插入I帧,插入I帧再编入P帧时,P帧占用的字节数减少,从而提高了编码效率。由于I帧的编码效率低于P帧的编码效率,本申请中是在确定当前视频帧的前M个编码帧中没有I帧并且发生视频帧场景切换时才插入I帧,可避免I帧插入过多,提高编码效率。
下面结合一个具体的实施例,对本申请提供的编码方法的技术方案进行详细说明。
图3为本申请实施例提供的一种编码方法的流程示意图,如图3所示,本实施例的方法可以包括:
S201、按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧。
其中,第一编码方式中,视频流中的第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧。
图4为本申请实施例提供的一种编码方法的流程框图,结合图4,当前视频帧为视频帧序列中的任一视频帧,具体地,S202可以包括:
S2011、根据预设的采样宽度和预设的采样长度对当前视频帧进行下采样,得到下采样的视频帧。
其中,采样宽度例如可以为原始视频帧的宽度的二分之一,采样长度例如可以为原始视频帧的长度的二分之一,即下采样的视频帧的宽度为当前视频帧的宽度的二分之一,即下采样的视频帧的长度为当前视频帧的长度的二分之一。预设的采样宽度和预设的采样长度还可以是其他数值,本申请实施例对此不做限制。
S2012、按照第一编码方式对下采样的视频帧进行预编码,得到当前视频帧的预编码帧。
通过对当前视频帧进行下采样,得到下采样的视频帧,再对下采样的视频帧进行预编码,可以节省预编码的时间,进而提高总体的编码效率。
S202、判断当前视频帧之前的M个编码帧中是否有I帧,M为预设正整数。
具体地,统计当前视频帧之前的编码帧的数量,当当前视频帧之前的编码帧的数量到达M时,判断当前视频帧之前的M个编码帧中是否有I帧。
若是,则执行S205,将当前视频帧编码为P帧。若否,则执行S203。本实施例中,例如M等于128。
本实施例中,预编码的编码模式以及二次编码(指的是S204或S205执行的编码)的编码模式例如可以是CQP模式,使用CQP模式编码,可以使得若帧间关联度大,则当前视频帧编码后的帧数据量比较少,反之,当前视频帧编码后帧数据量比较大。
S203、进行场景切换帧的判断,确定预编码帧的字节数和目标预编码帧的字节数的比值是否大于或等于预设阈值。
其中,目标预编码帧为对当前视频帧的前一个视频帧预编码得到,若是,则确定当前视频帧是场景切换帧,则执行S204,若否,则确定当前视频帧不是场景切换帧,则执行S205。其中,预设阈值例如为2。
S204、将当前视频帧编码为I帧。
S205、将当前视频帧编码为P帧。
通过S204或S205对当前视频帧编码后,得到编码后的码流。
本实施例提供的编码方法,通过进行预编码和二次编码,预编码的编码帧用来判断是否发生场景切换,若在确定当前视频帧的前M个编码帧中没有I帧且发生场景切换则将当前视频帧编码为I帧,否则将当前视频帧编码为P帧。从而,实现了在发生视频帧场景切换时插入I帧,插入I帧再编入P帧时,P帧占用的字节数减少,从而提高了编码效率。由于I帧的编码效率低于P帧的编码效率,本申请中是在确定当前视频帧的前M个编码帧中没有I帧并且发生视频帧场景切换时才插入I帧,可避免I帧插入过多,提高编码效率。
图5为本申请实施例提供的一种实时通信方法的流程图,如图5所示,本实施例的方法可以包括:
S301、服务器对实时生成的视频进行视频图像采集,得到视频流。
其中,视频流包括的多个视频帧中,每一个视频帧包括虚拟游戏画面组成的图像。
S302、服务器按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,第一编码方式中,视频流中的第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧。
S303、若当前视频帧之前的M个编码帧中没有I帧,服务器根据预编码帧和目标预编码帧,确定当前视频帧是否是场景切换帧,场景切换帧为相对前一个视频帧发生了场景切换的视频帧,目标预编码帧为对当前视频帧的前一个视频帧预编码得到,一个编码帧为对当前视频帧之前的一个视频帧编码得到,M为预设正整数。
S304、若当前视频帧是场景切换帧,服务器将当前视频帧编码为I帧,若当前视频帧不是场景切换帧,服务器将当前视频帧编码为P帧,得到当前视频帧的编码帧。
本实施例中,服务器对当前视频帧编码的具体实施方式可参见图2所示实施例中的描述,此处不再赘述。
S305、服务器根据当前视频帧的编码帧和当前视频帧之前的多个编码帧,得到码流。
S306、服务器向客户端发送码流。
S307、客户端根据码流显示虚拟游戏画面。
本实施例提供的实时通信方法,通过服务器将视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,若当前视频帧的前M个编码帧中没有I帧,则根据预编码帧和目标预编码帧确定当前视频帧是场景切换帧时(即发生了视频帧场景切换),将当前视频帧编码为I帧,否则将当前视频帧编码为P帧,其中的目标预编码帧为对当前视频帧的前一个视频帧预编码得到。从而,实现了在发生视频帧场景切换时插入I帧,插入I帧再编入P帧时,P帧占用的字节数减少,从而提高了编码效率。由于I帧的编码效率低于P帧的编码效率,本申请中是在确定当前视频帧的前M个编码帧中没有I帧并且发生视频帧场景切换时才插入I帧,可避免I帧插入过多,提高编码效率。
应理解的是,在云游戏场景中,只有解码端即上述终端设备对上述编码后的码流具有解码能力时,上述的图像编码方法才有实际意义,下面将提供一种最优解码配置的获取方法。
图6为本申请实施例提供的一种最优解码配置的获取方法的流程图,如图6所示,该方法包括:
S401、云服务器向终端设备发送解码能力请求。
S402、云服务器接收终端设备的解码能力响应,解码能力响应包括:终端设备的解码能力。
S403、云服务器根据终端设备的解码能力、云游戏类型和当前网络状态确定最优解码配置。
S404、云服务器向终端设备发送最优解码配置。
S405、终端设备通过最优解码配置对视频流的码流进行解码。
可选地,图7为本申请实施例提供的一种最优解码配置的获取方法的流程图,如图7所示,云服务器可以通过安装在终端设备的客户端向终端设备发送解码能力请求,终端设备也可以通过该客户端向云服务器返回解码能力响应。其中,在云游戏场景中,该客户端可以是云游戏客户端。
可选地,解码能力请求用于请求获取终端设备的解码能力。
可选地,解码能力请求包括以下至少一项,但不限于此:协议版本号、具体解码协议查询。
可选地,协议版本号指的是云服务器支持的最低协议版本,该协议可以是解码协议。
可选地,具体解码协议查询指的是云服务器所要查询的解码协议,例如是视频解码协议H264或者H265等。
示例性地,解码能力请求的代码实现可以如下:
[codec_ability] ;编解码能力
version=1.0 ;云服务器支持的最低协议版本
type=16,17 ;查询H264,H265能力
关于该代码中各个数据结构的解释可参考下面的表1,本申请对此不再赘述。其中,终端设备解码能力的数据结构可以如表1所示:
表1终端设备的解码能力的数据结构
/>
其中,在各解码协议定义见表2:
表2解码协议
解码协议 枚举定义
H264 16
H265 17
AV1 48
终端设备在各解码协议支持的Profile定义见表3:
表3解码协议支持的Profile定义
/>
终端设备在各解码协议支持的Level定义见表4
表4解码协议支持的Level定义
/>
/>
终端设备所支持的Profile为和Level以二元组的方式列出,如设备A支持H264能力:(Baseline,Level51),(Main,Level51),(High,Level51)。
可选地,解码能力响应除包括终端设备的解码能力之外,还可以包括:对于云服务器所要查询的解码协议是否查询成功的标识、终端设备支持的协议版本号。
可选地,若对于云服务器所要查询的解码协议查询成功,则对于云服务器所要查询的解码协议是否查询成功的标识可以用0表示,若对于云服务器所要查询的解码协议查询失败,则对于云服务器所要查询的解码协议是否查询成功的标识可以用错误码表示,如001等。
可选地,协议版本号指的是终端设备支持的最低协议版本,该协议可以是解码协议。
可选地,终端设备的解码能力包括以下至少一项,但不限于此:终端设备支持的解码协议类型、该解码协议支持的Profile、Level以及性能等。
示例1,解码能力响应的代码实现可以如下:
/>
关于该代码中各个数据结构的解释可参考下面的表1,本申请对此不再赘述。
示例2,若终端设备只支持部分解码协议,则返回支持的解码协议信息,这种情况的解码能力响应的代码实现可以如下:
/>
关于该代码中各个数据结构的解释可参考下面的表1,本申请对此不再赘述。
示例3,若终端设备不支持解码协议,则返回codecs=0,这种情况的解码能力响应的代码实现可以如下:
[codec_ability] ;编解码能力
state=0 ;查询成功返回状态码0
version=1.0 ;终端设备协议版本
codecs=0 ;支持0个硬件codec
关于该代码中各个数据结构的解释可参考下面的表1,本申请对此不再赘述。
示例4,若对终端设备的解码能力请求失败,则返回具体的错误码,这种情况的解码能力响应的代码实现可以如下:
[codec_ability] ;编解码能力
state=-1 ;查询失败返回状态码-1
version=0.9 ;终端设备协议版本
关于该代码中各个数据结构的解释可参考下面的表1,本申请对此不再赘述。
可选地,对于越复杂的云游戏类型,云服务器在终端设备的解码能力范围之内选择越高能力,如在上述示例1中,选择profile3以及performances3,其中,云服务器可以按照云游戏类型与终端设备的解码能力之间的映射关系,选择最优解码配置,也可以按照其他选择规则来选择最优解码配置。
可选地,对于网络状态越差,云服务器可以在终端设备的解码能力范围之内选择越高能力,如在上述示例1中,选择profile3以及performances3,其中,云服务器可以按照网络状态与终端设备的解码能力之间的映射关系,选择最优解码配置,也可以按照其他选择规则来选择最优解码配置。
可选地,云服务器可以根据按照云游戏类型、网络状态与终端设备的解码能力之间的映射关系,选择最优解码配置,也可以按照其他选择规则来选择最优解码配置。
总之,本申请对如何确定最优解码配置不做限制。
综上,通过本实施例提供的技术方案,使得终端设备通过最优解码配置对视频流的码流进行解码,从而可以提高解码效果。
图8为本申请实施例提供的一种编码装置的结构示意图,如图8所示,该编码装置可以包括:第一编码模块11、确定模块12和第二编码模块,
其中,第一编码模块11按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,第一编码方式中,视频流中的第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧;
确定模块12用于在当前视频帧之前的M个编码帧中没有I帧时,根据预编码帧和目标预编码帧,确定当前视频帧是否是场景切换帧,场景切换帧为相对前一个视频帧发生了场景切换的视频帧,目标预编码帧为对当前视频帧的前一个视频帧预编码得到,一个编码帧为对当前视频帧之前的一个视频帧编码得到,M为预设正整数;
第二编码模块13用于在当前视频帧是场景切换帧时,将当前视频帧编码为I帧,在当前视频帧不是场景切换帧时,将当前视频帧编码为P帧。
可选的,第一编码模块11还用于:若当前视频帧之前的M个编码帧中有I帧,则将当前视频帧编码为P帧,或者,按照第二编码方式和预设编码模式对当前视频帧进行编码。
可选的,第一编码模块11用于:根据预设的采样宽度和预设的采样长度对当前视频帧进行下采样,得到下采样的视频帧;
按照第一编码方式对下采样的视频帧进行预编码,得到当前视频帧的预编码帧。
可选的,确定模块12还用于:统计当前视频帧之前的编码帧的数量;
当当前视频帧之前的编码帧的数量到达M时,确认当前视频帧之前的M个编码帧中是否没有I帧。
可选的,M为128。
可选的,确定模块12用于:根据预编码帧的大小和目标预编码帧的大小,确定当前视频帧是否是场景切换帧。
可选的,确定模块12用于:根据预编码帧的字节数和目标预编码帧的字节数,确定当前视频帧是否是场景切换帧。
可选的,确定模块12具体用于:
若预编码帧的字节数和目标预编码帧的字节数的比值大于或等于预设阈值,则确定当前视频帧是场景切换帧;
若预编码帧的字节数和目标预编码帧的字节数的比值小于预设阈值,则确定当前视频帧不是场景切换帧。
可选的,预设编码模式为固定量化参数CQP模式,预编码的编码模式为CQP模式。
可选的,第二编码方式包括:
从第一个视频帧开始,根据预设周期进行I帧的编码,将编码为I帧的视频帧之后的视频帧编码为P帧。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图8所示的编码装置可以执行图2对应的方法实施例,并且编码装置中的各个模块的前述和其它操作和/或功能分别为了实现图2对应的方法实施例中的相应流程,为了简洁,在此不再赘述。
图9为本申请实施例提供的一种实时通信装置的结构示意图,如图9所示,该实时通信装置可以包括:采集模块21、第一编码模块22、确定模块23、第二编码模块24和发送模块25。
其中,接收模块21用于对实时生成的视频进行视频图像采集,得到视频流;
第一编码模块22用于按照第一编码方式对视频流中的当前视频帧进行预编码,得到当前视频帧的预编码帧,第一编码方式中,视频流中的第一个视频帧预编码为I帧,第一个视频帧之后的视频帧预编码为P帧;
确定模块23用于若当前视频帧之前的M个编码帧中没有I帧,根据预编码帧和目标预编码帧,确定当前视频帧是否是场景切换帧,场景切换帧为相对前一个视频帧发生了场景切换的视频帧,目标预编码帧为对当前视频帧的前一个视频帧预编码得到,一个编码帧为对当前视频帧之前的一个视频帧编码得到,M为预设正整数;
第二编码模块24用于若当前视频帧是场景切换帧,将当前视频帧编码为I帧,若当前视频帧不是场景切换帧,将当前视频帧编码为P帧,得到当前视频帧的编码帧;
根据当前视频帧的编码帧和当前视频帧之前的多个编码帧,得到码流;
发送模块25用于向客户端发送码流,以使客户端根据码流显示虚拟游戏画面。
可选的,多个视频帧中的每一个视频帧包括虚拟游戏画面组成的图像。
可选的,第二编码模块24还用于:若当前视频帧之前的M个编码帧中有I帧,则将当前视频帧编码为P帧,或者,按照第二编码方式和预设编码模式对当前视频帧进行编码。
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图9所示的编码装置可以执行图5对应的方法实施例,并且编码装置中的各个模块的前述和其它操作和/或功能分别为了实现图5对应的方法实施例中的相应流程,为了简洁,在此不再赘述。
上文中结合附图从功能模块的角度描述了本申请实施例的编码装置。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本申请实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本申请实施例公开的方法的步骤可以直接体现为硬件编码处理器执行完成,或者用编码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
图10是本申请实施例提供的电子设备的示意性框图。该电子设备可以是上述方法实施例中的服务器。
如图10所示,该电子设备可包括:
存储器210和处理器220,该存储器210用于存储计算机程序,并将该程序代码传输给该处理器220。换言之,该处理器220可以从存储器210中调用并运行计算机程序,以实现本申请实施例中的方法。
例如,该处理器220可用于根据该计算机程序中的指令执行上述方法实施例。
在本申请的一些实施例中,该处理器220可以包括但不限于:
通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等等。
在本申请的一些实施例中,该存储器210包括但不限于:
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
在本申请的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器210中,并由该处理器220执行,以完成本申请提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计算机程序在该电子设备中的执行过程。
如图10所示,该电子设备还可包括:
收发器230,该收发器230可连接至该处理器220或存储器210。
其中,处理器220可以控制该收发器230与其他设备进行通信,具体地,可以向其他设备发送信息或数据,或接收其他设备发送的信息或数据。收发器230可以包括发射机和接收机。收发器230还可以进一步包括天线,天线的数量可以为一个或多个。
应当理解,该电子设备中的各个组件通过总线系统相连,其中,总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
本申请还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本申请实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
以上该,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。

Claims (18)

1.一种编码方法,其特征在于,包括:
按照第一编码方式对视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
若所述当前视频帧之前的M个编码帧中没有I帧,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
若所述当前视频帧是场景切换帧,将所述当前视频帧编码为I帧,若所述当前视频帧不是所述场景切换帧,将所述当前视频帧编码为P帧。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前视频帧之前的M个编码帧中有I帧,则将所述当前视频帧编码为P帧,或者,按照第二编码方式和预设编码模式对所述当前视频帧进行编码。
3.根据权利要求1所述的方法,其特征在于,所述按照第一编码方式对所述当前视频帧进行预编码,得到所述当前视频帧的预编码帧,包括:
根据预设的采样宽度和预设的采样长度对所述当前视频帧进行下采样,得到下采样的视频帧;
按照所述第一编码方式对所述下采样的视频帧进行预编码,得到所述当前视频帧的预编码帧。
4.根据权利要求1所述的方法,其特征在于,若所述当前视频帧之前的M个编码帧中没有I帧之前,所述方法还包括:
统计所述当前视频帧之前的编码帧的数量;
当所述当前视频帧之前的编码帧的数量到达M时,确认所述当前视频帧之前的M个编码帧中是否没有I帧。
5.根据权利要求1所述的方法,其特征在于,所述M为128。
6.根据权利要求1所述的方法,其特征在于,所述根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,包括:
根据所述预编码帧的大小和所述目标预编码帧的大小,确定所述当前视频帧是否是场景切换帧。
7.根据权利要求6所述的方法,其特征在于,所述根据所述预编码帧的大小和目标预编码帧的大小,确定所述当前视频帧是否是场景切换帧,包括:
根据所述预编码帧的字节数和所述目标预编码帧的字节数,确定所述当前视频帧是否是场景切换帧。
8.根据权利要求4所述的方法,其特征在于,所述根据所述预编码帧的字节数和所述目标预编码帧的字节数,确定所述当前视频帧是否是场景切换帧,包括:
若所述预编码帧的字节数和所述目标预编码帧的字节数的比值大于或等于预设阈值,则确定所述当前视频帧是场景切换帧;
若所述预编码帧的字节数和所述目标预编码帧的字节数的比值小于所述预设阈值,则确定所述当前视频帧不是场景切换帧。
9.根据权利要求2所述的方法,其特征在于,所述预设编码模式为固定量化参数CQP模式,所述预编码的编码模式为所述CQP模式。
10.根据权利要求2所述的方法,其特征在于,所述第二编码方式包括:
从第一个视频帧开始,根据预设周期进行I帧的编码,将编码为I帧的视频帧之后的视频帧编码为P帧。
11.根据权利要求1或2所述的方法,其特征在于,所述方法应用于云游戏场景,所述方法还包括:
向终端设备发送解码能力请求;
接收所述终端设备的解码能力响应,所述解码能力响应包括:所述终端设备的解码能力;
根据所述终端设备的解码能力、云游戏类型和当前网络状态确定最优解码配置;
向所述终端设备发送所述最优解码配置,以使所述终端设备通过所述最优解码配置对所述视频流的码流进行解码。
12.一种实时通信方法,其特征在于,包括:
对实时生成的视频进行视频图像采集,得到视频流;
按照第一编码方式对所述视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,所述视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
若所述当前视频帧之前的M个编码帧中没有I帧,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
若所述当前视频帧是场景切换帧,将所述当前视频帧编码为I帧,若所述当前视频帧不是所述场景切换帧,将所述当前视频帧编码为P帧,得到所述当前视频帧的编码帧;
根据所述当前视频帧的编码帧和所述当前视频帧之前的多个编码帧,得到码流;
向客户端发送所述码流,以使所述客户端根据所述码流显示虚拟游戏画面。
13.根据权利要求12所述的方法,其特征在于,所述多个视频帧中的每一个视频帧包括虚拟游戏画面组成的图像。
14.根据权利要求12所述的方法,其特征在于,若所述当前视频帧之前的M个编码帧中有I帧,则将所述当前视频帧编码为P帧,或者,按照第二编码方式和预设编码模式对所述当前视频帧进行编码。
15.一种编码装置,其特征在于,包括:
第一编码模块,用于按照第一编码方式对视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
确定模块,用于在所述当前视频帧之前的M个编码帧中没有I帧时,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
第二编码模块,用于在所述当前视频帧是场景切换帧时,将所述当前视频帧编码为I帧,在所述当前视频帧不是所述场景切换帧时,将所述当前视频帧编码为P帧。
16.一种实时通信装置,其特征在于,包括:
采集模块,用于对实时生成的视频进行视频图像采集,得到视频流;
第一编码模块,用于按照第一编码方式对所述视频流中的当前视频帧进行预编码,得到所述当前视频帧的预编码帧,所述第一编码方式中,所述视频流中的第一个视频帧预编码为I帧,所述第一个视频帧之后的视频帧预编码为P帧;
确定模块,用于若所述当前视频帧之前的M个编码帧中没有I帧,根据所述预编码帧和目标预编码帧,确定所述当前视频帧是否是场景切换帧,所述场景切换帧为相对前一个视频帧发生了场景切换的视频帧,所述目标预编码帧为对所述当前视频帧的前一个视频帧预编码得到,一个所述编码帧为对所述当前视频帧之前的一个视频帧编码得到,所述M为预设正整数;
第二编码模块,用于若所述当前视频帧是场景切换帧,将所述当前视频帧编码为I帧,若所述当前视频帧不是所述场景切换帧,将所述当前视频帧编码为P帧,得到所述当前视频帧的编码帧;
根据所述当前视频帧的编码帧和所述当前视频帧之前的多个编码帧,得到码流;
发送模块,用于向客户端发送所述码流,以使所述客户端根据所述码流显示虚拟游戏画面。
17.一种电子设备,其特征在于,包括:
处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于调用并运行所述存储器中存储的计算机程序,以执行权利要求1至11或12-14中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序使得计算机执行如权利要求1至11或12-14中任一项所述的方法。
CN202210101697.6A 2022-01-27 2022-01-27 编码方法、实时通信方法、装置、设备及存储介质 Pending CN116567228A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210101697.6A CN116567228A (zh) 2022-01-27 2022-01-27 编码方法、实时通信方法、装置、设备及存储介质
PCT/CN2022/137893 WO2023142716A1 (zh) 2022-01-27 2022-12-09 编码方法、实时通信方法、装置、设备及存储介质
US18/514,741 US20240098310A1 (en) 2022-01-27 2023-11-20 Encoding method, real-time communication method, apparatus, device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210101697.6A CN116567228A (zh) 2022-01-27 2022-01-27 编码方法、实时通信方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN116567228A true CN116567228A (zh) 2023-08-08

Family

ID=87470351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210101697.6A Pending CN116567228A (zh) 2022-01-27 2022-01-27 编码方法、实时通信方法、装置、设备及存储介质

Country Status (3)

Country Link
US (1) US20240098310A1 (zh)
CN (1) CN116567228A (zh)
WO (1) WO2023142716A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116801034B (zh) * 2023-08-25 2023-11-03 海马云(天津)信息技术有限公司 客户端保存音视频数据的方法和装置
CN117354524B (zh) * 2023-12-04 2024-04-09 腾讯科技(深圳)有限公司 编码器编码性能测试方法、装置、设备及计算机介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107277519B (zh) * 2017-06-30 2019-11-15 武汉斗鱼网络科技有限公司 一种判断视频帧的帧类型的方法及电子设备
CN109413422A (zh) * 2018-11-05 2019-03-01 建湖云飞数据科技有限公司 结合图像质量和运动幅度的自适应插入i帧方法
CN109862359B (zh) * 2018-12-29 2021-01-08 北京数码视讯软件技术发展有限公司 基于分层b帧的码率控制方法、装置和电子设备
CN111263154B (zh) * 2020-01-22 2022-02-11 腾讯科技(深圳)有限公司 一种视频数据处理方法、装置及存储介质
CN112019850B (zh) * 2020-08-27 2022-08-23 广州市百果园信息技术有限公司 基于场景切换的图像组划分方法、视频编码方法及装置

Also Published As

Publication number Publication date
US20240098310A1 (en) 2024-03-21
WO2023142716A1 (zh) 2023-08-03

Similar Documents

Publication Publication Date Title
CN112040233B (zh) 视频编码、视频解码方法和装置、电子设备及存储介质
CN112333448B (zh) 视频编码、解码方法和装置、电子设备和存储介质
WO2023142716A1 (zh) 编码方法、实时通信方法、装置、设备及存储介质
CN112351285B (zh) 视频编码、解码方法和装置、电子设备和存储介质
US20210329252A1 (en) Motion information acquisition method and device for video encoding or decoding
CN109963176B (zh) 视频码流处理方法、装置、网络设备和可读存储介质
CN113038128B (zh) 数据传输方法、装置、电子设备及存储介质
CN113965751A (zh) 屏幕内容编码方法、装置、设备及存储介质
CN110650357B (zh) 视频解码方法及装置
CN112351278A (zh) 一种视频的编码方法和装置,视频的解码方法和装置
CN116170582A (zh) 一种视频数据处理方法、装置、计算机设备以及存储介质
CN115941972A (zh) 图像传输方法、装置、设备及存储介质
CN110545431B (zh) 视频解码方法及装置、视频编码方法及装置
CN116567247A (zh) 视频编码方法、实时通信方法、装置、设备及存储介质
CN113259673B (zh) 伸缩性视频编码方法、装置、设备及存储介质
EP3989566A1 (en) Motion information list construction method in video encoding and decoding, device, and apparatus
CN116567243A (zh) 图像编码方法、实时通信方法、设备及存储介质
CN117354524B (zh) 编码器编码性能测试方法、装置、设备及计算机介质
CN112351284B (zh) 视频编码、解码方法和装置、电子设备和存储介质
CN114513658B (zh) 一种视频加载方法、装置、设备及介质
CN115550690B (zh) 帧率调整方法、装置、设备及存储介质
CN115733988A (zh) 一种视频数据处理方法、装置、计算机设备以及存储介质
KR20240046575A (ko) 비디오 인코딩 방법 및 장치, 전자 디바이스, 및 저장 매체
CN117768660A (zh) 数据处理方法、装置、设备、介质及程序产品
CN116980619A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40092258

Country of ref document: HK