CN117676158A - 一种视频数据处理方法、电子设备及计算设备集群 - Google Patents
一种视频数据处理方法、电子设备及计算设备集群 Download PDFInfo
- Publication number
- CN117676158A CN117676158A CN202211032112.6A CN202211032112A CN117676158A CN 117676158 A CN117676158 A CN 117676158A CN 202211032112 A CN202211032112 A CN 202211032112A CN 117676158 A CN117676158 A CN 117676158A
- Authority
- CN
- China
- Prior art keywords
- data
- video
- information
- coefficient
- motion vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 239000013598 vector Substances 0.000 claims abstract description 143
- 238000000034 method Methods 0.000 claims abstract description 88
- 230000015654 memory Effects 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 9
- 230000003044 adaptive effect Effects 0.000 claims description 7
- 238000007906 compression Methods 0.000 abstract description 12
- 230000006835 compression Effects 0.000 abstract description 12
- 238000013461 design Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000013144 data compression Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/40—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请应用于计算机技术领域,提供一种视频数据处理方法、电子设备及计算设备集群,用以对标准格式视频流进行编码,提高视频数据的压缩率,减少传输视频数据的带宽成本。在该方法中,终端设备对第一视频的编码数据进行解码,得到系数信息、运动矢量信息和第一信息,其中,所述第一信息是所述编码数据中除了所述系数信息和所述运动矢量信息之外的信息;编码所述系数信息和/或编码所述运动矢量信息,得到第一数据;根据所述第一数据和所述第一信息,确定第二数据;以及向云平台发送所述第二数据。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种视频数据处理方法、电子设备及计算设备集群。
背景技术
在数字媒体时代,人们对视频的需求量与日俱增,视频会议、在线教育、直播、云桌面办公以及云游戏等端到端业务日渐盛行,已经成了人们日常生活中不可或缺的一部分。随着端到端业务需求量的增加,带宽成本居高不下,给企业带来了很大的成本压力。如何减少端到端业务的带宽成本是亟需解决的问题。
发明内容
本申请实施例提供一种视频数据处理方法、电子设备及计算设备集群,用以提高视频数据的压缩率,减少传输视频数据传输的带宽成本。
第一方面,本申请提供一种视频数据处理方法,该方法可由终端设备执行,或者由终端设备的部件执行,在该方法中,对第一视频的编码数据进行解码,得到系数信息、运动矢量信息和第一信息,其中,所述第一信息是所述编码数据中除了所述系数信息和所述运动矢量信息之外的信息;编码所述系数信息和/或编码所述运动矢量信息,得到第一数据;根据所述第一数据和所述第一信息,确定第二数据;向云平台发送所述第二数据。
在上述实施例中,终端设备对第一视频的编码数据进行解码,并对解码得到的系数信息和/或运动矢量信息进行编码,这样可以对第一视频进行重新压缩,能够提高视频数据的压缩率,从而减少传输该视频数据的带宽成本。
在一种可能的设计中,所述编码数据是基于硬件编码的数据。通过该设计,终端设备能够对基于硬件的编码数据重新编码,以弥补硬编码在视频数据压缩率的性能缺陷。
在一种可能的设计中,所述编码所述系数信息和/或编码所述运动矢量信息,可以为:基于软件编码所述系数信息和/或基于软件编码所述运动矢量信息。基于软件的编码方式的视频数据压缩率高于基于硬件的编码方式的视频数据压缩率,该设计中基于软件编码系数信息和/或基于软件编码运动矢量信息,能够提高视频数据的压缩率,减少传输视频数据的带宽成本。
在一种可能的设计中,所述根据所述第一数据和所述第一信息,确定第二数据,可以为如下中的任一种:
所述第一数据是编码所述系数信息得到的数据,根据所述第一数据、所述运动矢量信息和所述第一信息,确定所述第二数据;
或者,所述第一数据是编码所述运动矢量信息得到的数据,根据所述第一数据、所述系数信息和所述第一信息,确定所述第二数据;
或者,所述第一数据是编码所述系数信息和编码所述运动矢量信息得到的数据,根据所述第一数据和所述第一信息,确定所述第二数据。
通过上述设计,终端设备可以对系数信息编码,或者也可以对运动矢量信息编码,或者还可以对系数信息和运动矢量信息编码,实现方式灵活。
在一种可能的设计中,该方法还可以包括:接收来自所述云平台的第三数据;基于硬件解码所述第三数据,得到第二视频,所述第二视频的内容与所述第一视频的内容相同。例如,在接收来自云平台的第三数据之前,终端设备可以向云平台发送第一请求消息,该第一请求消息用于请求获取第二视频。例如,所述第二视频的分辨率大于或等于所述第一视频的分辨率。通过该设计,终端设备可以接收云平台对原始视频进行转码后的视频,能够适应终端设备的能力和/或终端设备的网络环境,兼容性好。例如,终端设备不支持基于软件解码,终端设备可接收云平台基于硬件编码得到的第三数据,以避免终端设备不能解码第二数据的问题。又例如,终端设备的网络环境较好,终端设备可接收云平台转码得到的高品质视频,以提高用户的观感体验。
在一种可能的设计中,该方法还可以包括:接收来自所述云平台的所述第二数据;基于软件解码所述第二数据,得到所述第一视频。例如,在接收来自所述云平台的所述第二数据之前,终端设备可以向云平台发送第二请求消息,所述第二请求消息用于请求获取所述第一视频。通过该设计,终端设备可以接收云平台转发的第二数据,由于该第二数据的视频数据压缩率高于第一视频的编码数据的视频数据压缩率,因此可以减少云平台与视频接收端之间传输视频数据的带宽成本。
在一种可能的设计中,所述系数信息包括所述第一视频中的每一帧对应的多个系数值,所述编码所述系数信息,可以为:获取所述多个系数值中的每个系数值对应的二进制取值的指数部分、尾数部分和符号部分;根据多符号算术编码算法编码所述指数部分,根据基于上下文自适应的二进制算术编码算法编码所述尾数部分进行,以及根据等概二进制算术编码算法编码所述符号部分。通过该设计,终端设备将每个系数值对应的二进制取值用三部分表达,再对这三部分分别进行编码,能够提高视频数据的编码效率,且多符号算术编码、基于上下文自适应的二进制算术编码、以及等概二进制算术编码的无损编码算法可以实现对系数信息的无损编码,能够确保编码后的数据的正确性。
在一种可能的设计中,在获取所述多个系数值中的每个系数值对应的二进制取值的指数部分、尾数部分和符号部分之前,该方法还可以包括:根据所述多个系数值,确定多组系数值,其中,所述多组系数值包括第一组系数值和第二组系数值,所述第一组系数值中的系数值对应的频率与所述第二组系数值中的系数值对应的频率不同,所述第一组系数值包括一个或多个系数值,其中,所述第一组系数值所包括的多个系数值对应的频率相同。通过该设计,终端设备可以将相同频率的系数值划分为一组,再对每组系数值进行编码,能够提高编码效率。
在一种可能的设计中,所述系数信息包括所述第一视频中的每一帧对应的多个系数值,所述编码所述系数信息,可以为:确定系数差值集合,所述系数差值集合中的元素是第一像素点对应的系数值与第二像素点对应的系数值之间的差值,其中,所述第一像素点在第一帧中的位置与所述第二像素点在第二帧中的位置相同,所述第一帧和所述第二帧是所述第一视频中相邻的两个关键帧中;根据基于上下文自适应的二进制算术编码算法对所述第一视频中的第一个帧和所述系数差值集合进行编码。通过该设计,终端设备对第一视频的第一个帧和系数差值集合编码,能够提高编码效率和视频数据的编码效率,且基于上下文自适应的二进制算术编码的无损编码算法可以实现对系数信息的无损编码,能够确保编码后的数据的正确性。
在一种可能的设计中,所述对第一视频的编码数据进行解码,可以为:确定所述编码数据对应的编码算法是否是基于上下文自适应的二进制算术编码算法;所述编码数据对应的编码算法是所述基于上下文自适应的二进制算术编码算法,对所述编码数据进行解码;或者,所述编码数据对应的编码算法不是所述基于上下文自适应的二进制算术编码算法,对所述编码数据进行解码,根据所述基于上下文自适应的二进制算术编码算法对解码后的数据进行编码,并对编码后的数据进行解码。通过该设计,终端设备可从基于上下文自适应的二进制算术编码算法的编码数据中获取系数信息。
在一种可能的设计中,所述运动矢量信息包括所述第一视频中的每一帧的每个像素块对应的运动矢量,所述编码所述运动矢量信息,可以为:根据多符号算术编码算法对半径值、扇形值和索引值进行编码,所述半径值是第一运动矢量的终点到第一像素块所在的坐标系的坐标原点的直线距离,所述扇形值用于指示所述第一运动矢量的终点所在的扇形区域在圆形区域中的位置,所述索引值用于指示所述第一运动矢量的终点在所述扇形区域中的位置;其中,所述第一运动矢量是所述第一像素块对应的运动矢量,所述圆形区域是以所述第一像素块的中心为圆心以及所述半径值为半径所形成的区域,所述第一像素块是所述第一视频中的一个像素块。通过该设计,终端设备将每个像素块对应的运动矢量用半径值、扇形值和索引值这三个参数表达,再对这三个参数进行编码,能够提高视频数据的编码效率,且多符号算术编码的无损编码算法可以实现对运动矢量信息的无损编码,能够确保编码后的数据的正确性。
第二方面,本申请提供一种视频数据处理方法,该方法可由云平台执行,或者由云平台的部件执行。在该方法中,云平台接收来自终端设备的第二数据,所述第二数据包括第一数据,其中,所述第一数据是对系数信息和/或运动矢量信息进行编码得到的数据,所述系数信息和所述运动矢量信息是对第一视频的编码数据进行解码得到的信息;解码所述第二数据,得到所述系数信息、所述运动矢量信息和第一信息,所述第一信息是所述编码数据中除了所述系数信息和所述运动矢量信息之外的信息;基于硬件对所述系数信息、所述运动矢量信息和所述第一信息进行编码,得到第三数据,其中,所述第三数据包括第二视频,所述第二视频的内容与所述第一视频的内容相同;向所述终端设备发送所述第三数据。
在一种可能的设计中,所述编码数据是基于硬件编码的数据。
在一种可能的设计中,所述解码所述第二数据,可以为:基于软件解码所述第二数据。
在一种可能的设计中,所述第二视频的分辨率大于或等于所述第一视频的分辨率。
在一种可能的设计中,在向所述终端设备发送所述第三数据之前,该方法还可以包括:
接收来自所述终端设备的第一请求消息,所述第一请求消息用于请求所述第二视频。
在一种可能的设计中,该方法还可以包括:向所述终端设备发送所述第二数据。
在一种可能的设计中,在向所述终端设备发送所述第二数据之前,该方法还可以包括:接收来自所述终端设备的第二请求消息,所述第二请求消息用于请求所述第一视频。
其中,第二方面以及各个可能的设计所达到的有益效果,请对应参考第一方面以及各个可能的设计所达到的有益效果,此处不再赘述。
第三方面,本申请提供一种电子设备,该电子设备包括至少一个处理器和存储器,该至少一个处理器用于执行存储器中存储的指令,以使得该电子设备执行如第一方面或第一方面的任意可能的设计提供的方法,或者执行如第二方面或第二方面的任意可能的设计提供的方法。
第四方面,本申请提供一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得该计算设备执行如第二方面或第二方面的任意可能的设计提供的方法。
在一些可能的设计中,该计算设备集群包括一个计算设备,该计算设备包括处理器和存储器;该处理器用于执行该存储器中存储的指令以使得该计算设备执行如第二方面或第二方面的任意可能的设计提供的方法。
在一些可能的设计中,该计算设备集群包括至少两个计算设备,每个计算设备包括处理器和存储器。该至少两个计算设备的处理器用于执行该至少两个计算设备的存储器中存储的指令以使得该计算设备集群执行如第二方面或第二方面的任意可能的设计提供的方法。
第五方面,本申请提供一种计算机可读存储介质,包括计算机程序指令,当所述计算机程序指令由电子设备执行时,所述电子设备执行如第一方面或第一方面的任意可能的设计提供的方法,或者执行如第二方面或第二方面的任意可能的设计提供的方法。
第六方面,本申请还提供一种通信系统,包括执行如第一方面或第一方面的任意可能的设计提供的方法的终端设备,和/或,包括执行如第二方面或第二方面的任意可能的设计提供的方法的云平台。
第七方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括指令,当所述指令被电子设备运行时,使得所述电子设备执行如第一方面或第一方面的任意可能的设计提供的方法,或者执行如第二方面或第二方面的任意可能的设计提供的方法。
附图说明
图1为本申请实施例中端到端场景的一种示意图;
图2为本申请实施例提供的视频数据处理方法的一种流程示意图;
图3为本申请实施例提供的系数信息编码方法的一种流程示意图;
图4为本申请实施例提供的系数信息编码方法的又一种流程示意图;
图5为本申请实施例提供的运动矢量信息编码方法的一种流程示意图;
图6为本申请实施例提供的使用半径值、扇形值和索引值表达运行矢量的一种示意图;
图7为本申请实施例提供的端到端系统的一种示意图;
图8为本申请实施例提供的通信装置的一种示意图。
具体实施方式
首先,对本申请实施例涉及的部分用语以及相关技术进行解释说明,以便本领域技术人员容易理解。
(1)基于硬件的编码方式,可简称为硬编码,是指基于非中央处理器(centralprocessing unit,CPU)进行编码的方式。相应的,基于硬件编码视频数据,是指基于非CPU编码该视频数据。其中,非CPU例如可以是图形处理器(graphics processing unit,GPU)、数字信号处理器(digital signal processor,DSP)、现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)、专用集成电路(application specific integratedcircuit,ASIC)等,本申请实施例对非CPU的具体实现方式并不限定于此。
基于硬件的解码方式,可简称为硬解码,是指基于非CPU进行解码的方式,可理解为硬编码的逆过程。相应的,基于硬件解码编码数据,是指基于非CPU解码该编码数据。
(2)基于软件的编码方式,可简称为软编码,是指基于CPU进行编码的方式。相应的,基于软件编码视频数据,是指基于CPU编码该视频数据。
基于软件的解码方式,可简称为软解码,是指基于CPU进行解码的方式,可理解为软编码的逆过程。相应的,基于软件解码编码数据,是指基于CPU解码该编码数据。
(3)像素点对应的系数值,是指空间域的像素点的灰度像素值进行频域变换后得到的系数值。例如,像素点对应的系数值是对空间域的像素点的灰度像素值进行离散余弦变换(discrete cosine transform,DCT)后得到的系数值。
(4)系数值对应的频率,是指该系数值对应的空间域的像素点的灰度像素值进行频域变换后所在的位置。
(5)像素块对应的运动矢量(motion vector,MV),是指参考像素块到该像素块的位移。像素块对应的运动矢量残差(motion vector difference,MVD),是指该像素块的预测MV与该像素块的理想MV之间的矢量差值。
(6)二进制值的指数部分,是指该二进制值中除去符号位剩余的比特位数。例如,“+25”的二进制值为“0 11001”,“0 11001”中的最高位“0”表示符号“+”,剩余的“11001”表示幅值,幅值有5比特,那么该二进制值的指数部分为5。
二进制值的尾数部分,是指该二进制值中除去符号位和幅值的最高位后剩余的比特。例如,“+25”的二进制值为“0 11001”,“0 11001”中的最高位“0”表示符号“+”,剩余的“11001”表示幅值,幅值的最高位为“1”,该二进制值中除去符号位和幅值的最高位后剩余的比特为“1001”,即该二进制值的尾数部分为“1001”。
二进制值的符号部分,是指该二进制值中的最高位。例如,+25”的二进制值为“011001”,“0 11001”中的最高位“0”为该二进制值的符号部分。
(7)本申请实施例中“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。本申请实施例中的术语“根据”和“基于”可被互换使用。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,本申请实施例涉及的第一数据、第二数据、第三数据以及第四数据用于对多个数据进行区分,并不限定该多个数据的优先级或重要程度。
本申请实施例适用于端到端的视频传输场景,例如直播场景、实时通信(real-time communication,RTC)场景、以及实时监控等视频传输场景。请参见图1,图1示出了端到端系统的一种示意图。如图1所示,端到端系统包括云平台和一个或多个终端设备(图1以终端设备1和终端设备2为例)。其中,终端设备可以通过任何通信机制或任何通信标准的通信网络与云平台之间传输数据。该通信网络可以是广域网、局域网、点对点连接等方式,或者是它们的任意组合,本申请实施例不作限定。
其中,终端设备,可以是具有视频采集功能和/或视频播放功能的用户侧设备,例如,手机、平板电脑、带无线收发功能的电脑、带无线收发功能的智能电视等。本申请实施例对终端设备所采用的具体技术和具体设备形态不做限定。
一个终端设备即可以是视频发送端,也可以是视频接收端。例如,终端设备1可作为视频发送端,也可以作为视频接收端。终端设备2可作为视频发送端,也可以作为视频接收端。图1中以终端设备1为视频发送端,终端设备2为视频接收端为例。示例性的,终端设备1,作为视频发送端,可包括视频采集模块和硬编码模块。视频采集模块可通过摄像头或计算机渲染等实现,用于采集视频数据。硬编码模块可基于硬件对采集到的视频数据进行编码,得到标准格式视频流。其中,该标准格式视频流是指基于H.264标准的数据,或基于H.265标准的数据。终端设备2,作为视频接收端,可包括硬解码模块和视频播放模块。硬解码模块,可基于硬件解码标准格式视频流得到视频数据。视频播放模块,用于播放视频,以将视频呈现给用户。
需要说明的是,当一个终端设备即是视频发送端又是视频接收端时,该终端设备可包括视频采集模块、硬编解码模块以及视频播放模块。其中的硬编解码模块具有上述硬编码模块和硬解码模块的功能。
云平台,可以部署在云服务器上,但本申请实施例并不限定于此。示例性的,云平台可以通过一个或者多个计算设备来实现。多个计算设备可以构成计算设备集群。本申请的实施例对云平台所采用的具体技术和具体设备形态不做限定。在本申请实施例中,云平台可包括视频转码模块。该视频转码模块,可基于硬件解码标准格式视频流,再基于硬件对解码后的数据进行编码,并在编码过程中将原始视频数据转码为一个或多个分辨率(或码率)的视频数据。作为一个示例,视频转码模块可将接收到的标准格式视频流转码为多个分辨率的标准格式视频流,根据视频接收端的网络情况(或视频接收端的需求),向该视频接收端发送符合该视频接收端的网络情况(或视频接收端的需求)的标准格式视频流。例如,视频接收端的网络情况较好,视频转码模块可向视频接收端发送分辨率大于原始视频的标准格式视频流,如超清,蓝光等。又例如,视频接收端的网络情况较差,视频转码模块可向视频接收端发送分辨率小于或等于原始视频的标准格式视频流,如标清、流畅等。再例如,视频转码模块可根据来自视频接收端的请求消息中携带的目标分辨率,向该视频接收端发送该目标分辨率的标准格式视频流。
在一些可能的实现方式中,终端设备可包括视频应用客户端(图1中未示出),云平台可包括视频应用服务端(图1中未示出)。终端设备上的视频应用客户端和云平台上的视频应用服务端可以合称为视频应用。常见的视频应用可以包括但不限定于:直播应用、线上会议应用、线上教学应用、RTC应用、实时监控应用等。例如,主播操作终端设备1上的视频应用客户端,使得视频采集模块采集视频数据以及硬编码模块对采集的视频数据进行硬件编码得到标准格式视频流,并将该标准格式视频流发送给云平台上的视频应用服务端。视频应用服务端接收到标准格式视频流后,调用视频转码模块将接收到的标准格式视频流转码为多个不同分辨率的标准格式视频流。观众操作终端设备2上的视频应用客户端订阅终端设备1的视频数据,这样云平台上的视频应用服务端可为终端设备2推送分辨率符合终端设备2的网络情况的标准格式视频流;进一步,终端设备2上的视频应用客户端接收到标准格式视频流后,调度硬解码模块对其进行解码,并通过视频播放模块将视频呈现给观众。或者,观众也可以操作终端设备2上的视频应用客户端从视频应用服务端获取终端设备1的视频数据,如向云平台发送请求消息;进一步,终端设备2上的视频应用客户端接收到标准格式视频流后,调度硬解码模块对其进行解码,并通过视频播放模块将视频呈现给观众。
为了满足端到端业务实时、低时延等高性能的需求,业界普遍采用基于硬件的编码方式对视频数据进行编码。但是基于硬件的编码方式在带来实时、低时延等高性能的同时,因硬编码算法本身的原因牺牲了一部分视频压缩率,使得硬编码的视频压缩率较低,导致传输视频数据的带宽成本较高。
鉴于此,本申请实施例提供一种视频数据处理方法、电子设备及计算设备集群,该方法通过对硬编码后的编码数据进行重编码,能够提高视频数据的压缩率,从而减少传输视频数据的带宽成本。
请参见图2,图2示出了本申请实施例提供的视频数据处理方法的一种流程示意图。该方法可用于图1所示的系统中。如图2所示,该方法可以包括如下流程。
S201,终端设备1对第一视频的编码数据进行解码,得到系数信息、运动矢量信息和第一信息。
第一视频的编码数据也可以称为第一视频的标准格式视频流。该第一视频的编码数据可以是基于硬件对第一视频编码得到的数据。示例性的,终端设备1可以获取第一视频的编码数据。例如,终端设备1可通过摄像头或计算机渲染等采集第一视频,并对第一视频进行硬编码得到该第一视频的编码数据。硬编码算法包括但不限定于:基于上下文自适应的二进制算法编码(context-based adaptive binary arithmetic coding,CABAC)解码、或基于上下文自适应的变长编码(context-based adaptive variable length coding,CAVLC)等。应理解的是,本申请实施例对终端设备1获取第一视频的具体实现方式不作限定。
在S201中,终端设备1对第一视频的编码数据进行解码,如对第一视频的编码数据进行硬解码,得到系数信息、运动矢量信息和第一信息。硬解码算法包括但不限定于:CABAC解码,或CAVLC解码等。其中,系数信息可包括第一视频中的每一帧对应的多个系数值。运动矢量信息包括第一视频中的每一帧的每个像素块对应的运动矢量。第一信息是第一视频的编码数据中除了系数信息和运动矢量信息之外的信息,如像素块的标识、像素块的头比特、帧信息等。该第一信息可协同系数信息和运动矢量信息恢复第一视频。其中,有关系数值和运动矢量的介绍请参考前述术语解释部分,此处不再赘述。
S202,终端设备1编码系数信息,和/或,编码运动矢量信息,得到第一数据。
示例性的,终端设备1可基于软件编码系数信息和/或基于软件编码运动矢量信息。基于软件的编码方式可以对系数信息和/或运动矢量信息进行无损编码,且基于软件的编码方式的视频数据压缩率高于基于硬件的编码方式的视频数据压缩率,能够弥补基于硬件的编码方式在视频数据压缩率的性能损失,从而减少传输视频数据的带宽成本。其中,终端设备1可以编码系数信息得到第一数据,在此情况下,该第一数据是编码系数信息得到的数据;或者,终端设备1可以编码运动矢量信息得到第一数据,在此情况下,该第一数据是编码运动矢量信息得到的数据;或者,终端设备1可以编码系数信息和运动矢量信息得到第一数据,在此情况下,该第一数据是编码系数信息和运动矢量信息得到的数据。
可选的,终端设备1编码运动矢量信息,可理解为终端设备1对每个像素块对应的运动矢量进行编码;或者也可以理解为终端设备1对每个像素块对应的运动矢量残差进行编码。其中,有关像素块对应的运动矢量残差请参考前述术语介绍部分的相关内容。
S203,终端设备1根据第一数据和第一信息,确定第二数据。
例如,第一数据是对系数信息编码得到的数据,终端设备1可根据第一数据、运动矢量信息和第一信息,确定第二数据,如对第一数据、运动矢量信息和第一信息进行和运算得到第二数据。又例如,第一数据是对运动矢量信息编码得到的数据,终端设备1可根据第一数据、系数信息和第一信息,确定第二数据,如对第一数据、系数信息和第一信息进行和运算得到第二数据。再例如,第一数据是对系数信息和运动矢量信息编码得到的数据,终端设备1可根据第一数据和第一信息,确定第二数据,如对第一数据和第一信息进行和运算得到第二数据。其中,该第二数据也可以称为非标准格式视频流,或私有格式视频流等,本申请实施例不作限定。
在S201至S203所示的步骤中,终端设备1解码待发送的第一视频的标准格式视频流,再对解码得到的系数信息和/或运动矢量信息进行软编码,这样能够弥补硬编码在视频数据压缩率的性能缺失,能够提高视频数据的压缩率,从而能够减少传输第一视频的带宽成本。
S204,终端设备1向云平台发送第二数据;相应的,云平台接收第二数据。
终端设备1将重新编码得到的第二数据发送给云平台,云平台接收到第二数据后,可以通过方式一处理第二数据,即执行S205的内容;或通过方式二处理第二数据,即执行S208至S210的内容;或通过方式一和方式二处理第二数据,即执行S205以及S208至S210的内容。
S205,云平台向终端设备2发送第二数据;相应的,终端设备2接收第二数据。即,云平台可以向终端设备2转发来自终端设备1的第二数据。
示例性的,云平台可主动向终端设备2发送第二数据,或者也可以在接收到来自终端设备2的请求消息后向终端设备2发送第二数据,或者还可以响应于终端设备2对第一视频的订阅向终端设备2发送第二数据。
作为一个示例,云平台可根据终端设备2的能力信息确定是否向终端设备2发送第二数据。该终端设备2的能力信息可指示终端设备2是否支持基于软件的解码方式。终端设备2支持基于软件的解码方式,云平台向终端设备2发送第二数据,这样可以减少云平台与终端设备2之间传输第一视频的带宽成本。若终端设备2不支持基于软件的解码方式,云平台不向终端设备2发送第二数据,并执行S208至S210的内容。例如,云平台可以在终端设备2的注册信息中获取终端设备2的能力信息,或者也可以从终端设备2的请求消息中获取终端设备2的能力信息,或者还可以从终端设备2的订阅请求中获取终端设备2的能力信息,本申请实施例并不限定于此。
作为又一个示例,云平台可根据终端设备2的网络环境,确定是否向终端设备2发送第二数据。例如,终端设备2的网络环境较差,则云平台可向终端设备2发送第二数据,由于第二数据是对第一视频进行无损编码得到的数据,且第二数据的视频数据压缩率大于第一视频的标准格式视频流的视频数据压缩率,这样在弱网环境下以较低的带宽成本传输第一视频,且不影响用户的观感体验。又例如,终端设备2的网络环境较好,则云平台可执行S208至S210的内容。
作为再一个示例,终端设备2可向云平台发送第二请求消息,该第二请求消息用于请求获取第一视频,在此情况下,云平台可向终端设备2发送第二数据。或者,终端设备2预先向云平台订阅第一视频,在此情况下,云平台接收第二数据后可向终端设备发送该第二数据。
可选的,云平台可以存储第二数据。由于第二数据的视频压缩率高于第一视频基于硬件编码的视频压缩率,这样可以减少存储第一视频的存储空间,提高云平台的存储空间的利用率。应理解的是,终端设备(如终端设备1或终端设备2)也可以存储该第二数据,减少终端设备存储第一视频的存储空间,提高终端设备的存储空间的利用率。
S206,终端设备2基于软件解码第二数据,得到第一视频。其中,终端设备基于软件解码第二数据可理解为S202和S203的逆过程。例如,终端设备2从第二数据中获取第一信息和第一数据,再从第一数据中获取系数信息和运动矢量信息;进一步,终端设备2根据第一信息、系数信息和运动矢量信息确定第一视频。
S207,终端设备2播放第一视频。终端设备2播放第一视频以将第一视频呈现给观众。
S208,云平台基于软件解码第二数据,得到系数信息、运动矢量信息和第一信息。
云平台可基于软件解码第二数据,得到系数信息、运动矢量信息和第一信息。云平台基于软件解码第二数据可理解为S202和S203的逆过程。例如,云平台从第二数据中获取第一信息和第一数据,再从第一数据中获取系数信息和运动矢量信息;进一步,云平台根据第一信息、系数信息和运动矢量信息确定第一视频。其中有关第一信息的描述请参考S201的相关内容,此处不再赘述。
例如,终端设备2不支持基于软件的解码方式,则云平台基于软件解码第二数据,这样避免终端设备2不能正确解码第二数据的问题。又例如,终端设备2向云平台发送第一请求消息,该第一请求消息用于请求获取第二视频,云平台根据该第一请求消息,在接收到来自终端设备1的第二数据后,基于软件解码第二数据,以便为终端设备2转码生成第二视频。再例如,终端设备2预先向云平台订阅第二视频,响应于该订阅,云平台在接收到来自终端设备1的第二数据后,基于软件解码第二数据,以便为终端设备2转码生成第二视频。再例如,云平台可根据终端设备2的网络环境,基于软件解码第二数据,如终端设备2的网络环境较好,云平台基于软件解码第二数据,以便为终端设备2提供高品质的视频。
其中,第二视频的内容与第一视频的内容相同。第二视频的分辨率与第一视频的分辨率可以相同,也可以不同。可选的,第二视频的分辨率大于或等于第一视频的分辨率,如蓝光、超清等,这样云平台可以为观众提供高于或等于原始视频的分辨率的视频,能够提高观众的观感体验。
S209,云平台基于硬件对系数信息、运动矢量信息和第一信息进行编码,得到第三数据。该第三数据可称为标准格式视频流。该第三数据中包括第二视频。
S210,云平台向终端设备2发送第三数据;相应的,终端设备2接收第三数据。
在上述S205和S208至S210中,云平台可将第二数据转发给终端设备2,减少云平台与终端设备2之间传输视频数据的带宽成本,能够在弱网环境下传输第一视频,确保了观众的观感体验;或者也可以基于软件解码第二数据,再基于硬件对解码得到的数据进行编码得到第三数据,这样既可以兼容不支持基于软件的解码方式的终端设备,也可以为终端设备提供更高分辨率(或码率)的视频数据,提高观众的观感体验。
S211,终端设备2基于硬件解码第三数据,得到第二视频。例如,终端设备2可以基于硬件解码第三数据得到系数信息、运动矢量信息和第一信息,根据该系数信息、运动矢量信息和第一信息确定第二视频。
S212,终端设备2播放第二视频。终端设备2播放第二视频以将第二视频呈现给观众。
至此,第一视频的内容从终端设备1传输到终端设备2,并由终端设备2呈现给观众。应理解的是,上述终端设备2可替换为终端设备1,即终端设备1既采集第一视频,并将第一视频的编码数据基于软件重新编码为第二数据发送给云平台,也可以从云平台处接收第二数据或第三数据,以将第一视频的内容呈现给主播。
在上述S202中,终端设备1编码系数信息,和/或,编码运动矢量信息,得到第一数据。下面分别介绍终端设备1编码系数信息和终端设备1编码运动矢量信息的具体实现过程。
图3示出了本申请实施例提供的系数信息编码方法的一种流程示意图。可选的,该图3所示的系数信息编码方法可应用于直播场景,但本申请实施例并不限定于此。如图3所示,该流程可以包括如下内容。
S31,终端设备1确定多个系数值中的每个系数值对应的二进制取值。终端设备1确定系数值对应的二进制值,即将系数值从十进制表达转换成二进制表达。该多个系数值是第一视频的每一帧对应的系数值。可选的,该多个系数值也可以是第一视频的每一帧对应的非零系数值。例如,终端设备1可以确定第一视频的每一帧对应的一个或多个非零系数值中的每个非零系数值对应的二进制取值,这样终端设备1无需编码取值为零的系数值,能够提高编码效率。本申请实施例中以每一帧对应多个非零系数值为例。
在一种可能的实现方式中,终端设备1可以对每帧对应的多个系数值进行划分,得到多组系数值。例如,终端设备1可以根据多个系数值中每个系数值对应的频率,将频率相同的系数值划分为一组,得到多组系数值,再针对每组系数值确定每组系数值中的每个系数值对应的二进制取值。例如,假设第一组系数值和第二组系数值是该多组系数值中的任意两组系数值,该第一组系数值中的任意一个系数值对应的频率与第二组系数值中的任意一个系数值对应的频率不同。该第一组系数值可包括一个或多个系数值。在第一组系数值包括多个系数值时,该第一组系数值所包括的多个系数值对应的频率相同。类似的,该第二组系数值也可以包括一个或多个系数值。在第二组系数值包括多个系数值时,该第二组系数值所包括的多个系数值对应的频率相同。通过该实现方式,终端设备1可以将频率相同的多个系数值一起进行编码,能够提高编码效率。
S32,终端设备1获取每个系数值对应的二进制取值的指数部分、尾数部分和符号部分。其中,有关指数部分、尾数部分和符号部分的描述请参考前述术语解释部分,此处不再赘述。
S33,终端设备1编码指数部分得到指数部分的编码数据。在S33中,终端设备1可基于软件的编码方式对指数部分进行编码。例如,终端设备1可根据多符号算术编码(multisymbol arithmetic coding,MSAC)算法对每个系数值对应的二进制取值的指数部分进行编码。
S34,终端设备1编码尾数部分得到尾数部分的编码数据。在S34中,终端设备1可基于软件的编码方式对尾数部分进行编码。例如,终端设备1可根据CABAC算法对每个系数值对应的二进制取值的尾数部分进行编码。
S35,终端设备1编码符号部分,得到符号部分的编码数据。在S35中,终端设备1可基于软件的编码方式对符号部分进行编码。例如,终端设备1可根据等概二进制算术编码(binary arithmetic coding,BAC)算法对每个系数值对应的二进制取值的符号部分进行编码。
S36,终端设备1根据指数部分的编码数据、尾数部分的编码数据以及符号部分的编码数据,确定系数信息的编码数据。例如,终端设备1对指数部分的编码数据、尾数部分的编码数据和符号部分的编码数据进行和运算,得到系数信息的编码数据。
至此,终端设备1完成对系数信息的编码。
在图3所示的流程中,终端设备获取系数值对应的指数部分、尾数部分和符号部分,并基于软件的编码方式分别对这三个部分进行编码,能够提高系数信息的压缩率,且在基于软件的编码方式上结合MSAC、CABAC、以及等概BAC等无损编码算法能够确保终端设备1对系数信息的编码是无损的编码。
图4示出了本申请实施例提供的编码系数信息的另一种流程示意图。可选的,该图4所示的系数信息编码方法可应用于RTC场景,实时监控场景等,但本申请实施例并不限定于此。如图4所示,该流程可以包括如下内容。
S41,终端设备1确定第一视频的编码数据对应的编码算法是否是CABAC算法。
如果终端设备1确定第一视频的编码数据对应的编码算法不是CABAC算法,如是CAVLC算法,则终端设备1执行S42的内容;如果终端设备1确定第一视频的编码数据对应的编码算法是CABAC算法,则终端设备1执行S43的内容,在此情况下,第一视频的编码数据可称为基于CABAC算法的编码数据。
S42,终端设备1将第一视频的编码数据的编码算法转换为CABAC算法。例如,终端设备1可对第一视频的编码数据进行解码,根据CABAC算法对解码后的数据进行编码,得到基于CABAC算法的编码数据。
需要说明的是,S41和S42的执行顺序可在S201之前。
S43,终端设备1从基于CABAC算法的编码数据中获取系数信息。例如,该终端设备1可基于硬件的解码方式解码基于CABAC算法的编码数据,得到系数信息、运动矢量信息和第一信息,具体可参考S202的相关描述。
S44,终端设备1确定系数差值集合,该系数差值集合中的元素是第一视频中相邻的两个关键帧中的同一位置的两个像素点对应的系数差值。
例如,假设第一帧和第二帧是第一视频中相邻的两个关键帧,第一像素点是第一帧中的一个像素点,第二像素点是第二帧中的一个像素点,该第一像素点在第一帧中的位置与第二像素点在第二帧中的位置相同。终端设备1可以确定第一像素点对应的系数值与第二像素点对应的系数值之间的系数差值。
S45,终端设备1对第一视频中的第一个帧和系数差值集合进行编码,得到系数信息的编码数据。终端设备1可基于软件对第一视频中的关键帧和系数差值集合进行编码。例如,终端设备1可根据CABAC对第一视频中的关键帧和系数差值集合进行编码。
至此,终端设备1完成对系数信息的编码。
在图4所示的流程中,终端设备对第一视频的第一个帧和相邻两个关键帧间的系数差值进行编码,对于RTC场景,实时监控场景等场景,相邻两个关键帧间的变化较小,这样可以提高编码效率,基于软件的编码方式对第一视频的第一个帧和相邻两个关键帧间的系数差值进行编码,能够提高系数信息的压缩率,且在基于软件的编码方式上结合CABAC等无损编码算法能够确保终端设备1对系数信息的编码是无损的编码。
图3和图4介绍了编码系数信息的流程,接下来介绍编码运行矢量信息的流程。图5示出了编码运动矢量信息的流程示意图。如图5所示,该流程可以包括如下内容。
S51,终端设备1采用半径值(radius)、扇形值(sector)和索引值(index)表达多个像素块中的每个像素块对应的运动矢量。即,终端设备1使用半径值、扇形值、以及索引值这三个参数来表达每个运动矢量。其中,该多个像素块是第一视频的每一帧中的像素块。
例如,假设第一像素块是第一视频中的一个像素块,第一像素块对应的运动矢量是第一运动矢量,半径值可理解为第一运动矢量的终点到第一像素块所在的坐标系(如二维坐标系)的坐标原点的直线距离。扇形值可用于指示第一运动矢量的终点所在的扇形区域在圆形区域中的位置,该圆形区域是以第一像素块的中心点为圆心以及半径值为半径所形成的区域。索引值可指示第一运动矢量的终点在该扇形区域中的位置。
图6以三个圆形区域(记为圆形区域0、圆形区域1和圆形区域2),每个圆形区域包括12个扇形区域(如记为0、1、……11)为例,示出了使用半径值、扇形值和索引值表达运动矢量的一种示意图。图6中的每个“XY”所在的位置可唯一指示(或表达)一个运动矢量,其中的“X”为扇形值,“Y”为索引值,“XY”与圆心之间的直线距离为半径值。
假设圆形区域0的半径值为1,圆形区域1的半径值为1,圆形区域2的半径值为2。圆形区域0可指示8个运动矢量。例如,圆形区域0中的“90”表示扇形值为9、索引值为0以及半径值为1,可用于指示运动矢量1,即运动矢量1的终点到坐标原点的直线距离为1,该运动矢量1的终点位于圆形区域0中的编号为9的扇形区域,以及该运动矢量1的终点位于扇形区域9中的编码为0的位置。
圆形区域1可指示16个运动矢量。例如,圆形区域1中的“30”表示扇形值为3、索引值为0以及半径值为2,可用于指示运动矢量2,即运动矢量2的终点到坐标原点的直线距离为2,该运动矢量2的终点位于圆形区域1中的编号为3的扇形区域,以及该运动矢量2的终点位于扇形区域3中的编码为0的位置。又例如,圆形区域1中的“31”表示扇形值为3、索引值为1以及半径值为2,可用于指示运动矢量3,即运动矢量3的终点到坐标原点的直线距离为2,该运动矢量3的终点位于圆形区域1中的编号为3的扇形区域,以及该运动矢量3的终点位于扇形区域3中的编码为1的位置。
圆形区域2可指示24个运动矢量。例如,圆形区域2中的“50”表示扇形值为5、索引值为0以及半径值为3,可用于指示运动矢量4,即运动矢量4的终点到坐标原点的直线距离为3,该运动矢量4的终点位于圆形区域2中的编号为5的扇形区域,以及该运动矢量4的终点位于扇形区域5中的编码为0的位置。又例如,圆形区域2中的“51”表示扇形值为5、索引值为1以及半径值为3,可用于指示运动矢量5,即运动矢量5的终点到坐标原点的直线距离为3,该运动矢量5的终点位于圆形区域2中的编号为5的扇形区域,以及该运动矢量5的终点位于扇形区域5中的编码为1的位置。再例如,圆形区域2中的“52”表示扇形值为5、索引值为2以及半径值为3,可用于指示运动矢量6,即运动矢量6的终点到坐标原点的直线距离为3,该运动矢量6的终点位于圆形区域2中的编号为5的扇形区域,以及该运动矢量6的终点位于扇形区域5中的编码为2的位置。
需要说明的是,圆形区域0可指示8个运动矢量,这8个运动矢量分别位于圆形区域0中的不同扇形区域,在此情况下,半径值和扇形值可唯一指示一个运动矢量,即不需要采用索引值,即,运动矢量1可使用“9”表示,如图6所示。换而言之,一个圆形区域的一个扇形区域仅用于表达一个运动矢量时,该一个运动矢量可通过半径值和扇形值表达,如图6中的圆形区域0中的“3”、“9”、“1”、“8”、“7”、“11”、“5”、“10”,圆形区域1的“2”、“9”、“8”、“6”、“11”、“4”、“10”,圆形区域2中的“9”、“8”、“11”、“10”。
S52,终端设备1对半径值、扇形值和索引值进行编码,得到运动矢量信息的编码数据终端设备1基于软件对半径值、扇形值和索引值进行编码。例如,终端设备1可根据MSAC对半径值、扇形值和索引值进行编码。
至此,终端设备1完成对运动矢量信息的编码。
在图5所示的流程中,终端设备利用半径值、扇形值以及索引值这三个参数来表达运动矢量,这样将一个运动矢量从三个维度来表达能够提高压缩率,且在基于软件的编码方式上结合MSAC等无损编码算法能够确保终端设备1对运动矢量信息的编码是无损的编码。
基于与上述方法相同的技术构思,本申请实施例还提供一种端到端系统。图7示出了本申请实施例提供的端到端系统的结构示意图。如图7所示,该端到端系统包括云平台,和一个或多个终端设备。图7以中终端设备1为视频发送端和终端设备2为视频接收端为例。其中,终端设备1包括视频采集模块、硬编码模块和软编码模块。终端设备2可包括硬解码模块和视频播放模块。可选的,该终端设备2还可以包括软解码模块,图7中用虚线表示。可选的,云平台可包括视频转码模块和软解码模块,图7中用虚线表示。
其中,软编码模块,可基于软件编码系数信息和/或编码运动矢量信息,得到第一数据,以及根据第一数据和第一信息确定第二数据等。例如,该软编码模块可实现图2中的S202和S203、图3中的S31至S36、图4中的S44和S45、以及图5中的S51和S52的内容。
软解码模块,可实现软编码的逆过程,如基于软件解码第二数据得到系数信息、运动矢量信息和第一信息等。例如,该软解码模块位于终端设备2时,该软解码模块可实现图2中S206所示的内容。该软解码模块位于云平台时,该软解码模块可实现图2中S208所示的内容。
剩余的视频采集模块、硬编码模块、视频转码模块、硬解码模块以及视频播放模块的具体实现请参考图1的相关内容,此处不再赘述。例如,硬编码模块可基于硬件对第一视频进行编码,得到第一视频的编码数据。视频转码模块可用于实现S209所示的内容。硬解码模块可用于实现S211所示的内容。视频播放模块可实现S207和S212所示的内容。图7中各个模块的具体实现过程请参考前述各个实施例的相关内容。
需要说明的是,当一个终端设备即是视频发送端又是视频接收端时,该终端设备可包括视频采集模块、硬编解码模块、软编解码模块以及视频播放模块。其中的硬编解码模块具有上述硬编码模块和硬解码模块的功能。软编解码模块具有上述软编码模块和软解码模块的功能。
需要说明的是,本申请实施例对终端设备或云平台的各个功能模块(或单元)的划分并不限定于此。例如,终端设备还可以包括收发模块,用于向云平台发送视频数据,以及接收来自云平台的视频数据。同理,云平台也可以包括收发模块,用于接收来自终端设备的视频数据,以及向终端设备发送视频数据。又例如,终端设备还可以包括存储单元,该存储单元存储有计算机程序指令,当该计算机程序指令在终端设备上运行时,该终端设备可执行图2至图5中终端设备1或终端设备2所执行的内容。同理,云平台还可以包括存储单元,该存储单元存储有计算机程序指令,当该计算机程序指令在云平台上运行时,该云平台可执行图2中云平台所执行的内容。
本申请还提供一种电子设备800。如图8所示,电子设备800包括:总线801、处理器802和存储器803。可选的,电子设备800还可以包括通信接口804(图8中以虚线表示)。处理器802、存储器803和通信接口804之间通过总线801通信。电子设备800可以是云平台或终端设备。应理解,本申请不限定电子设备800中的处理器、存储器的个数。
总线801可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线801可包括在电子设备800各个部件(例如,存储器803、处理器802、通信接口804)之间传送信息的通路。
处理器802可以是CPU、GPU、微处理器(micro processor,MP)、DSP、ASIC、FPGA或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
在一些可能的实现方式中,处理器802可以包含一个或多个图形处理器、或者其它非CPU的处理器。该处理器802用于执行存储在存储器803中的指令以实现软编码和软解码。
在一些可能的实现方式中,处理器802可以包括一个或多个CPU。该处理器802用于执行存储在存储器803中的指令以实现硬编码和硬解码。
存储器803可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器802还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。存储器803中存储有可执行的程序代码,处理器802执行该可执行的程序代码以实现图2至图5中终端设备1或终端设备2或云平台所执行的内容。
通信接口804使用例如但不限于网络接口卡、收发器一类的收发模块,来实现电子设备800与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是电子设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示电子设备执行上述图2至图5中任一实施例所述的方法。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在电子设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在电子设备上运行时,使得电子设备执行上述图2至图5中任一实施例所述的方法。
本申请实施例还提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得该计算设备执行上述实施例中云平台所执行的内容。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中终端设备1、云平台或终端设备2的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应所述以权利要求的保护范围为准。
Claims (26)
1.一种视频数据处理方法,应用于终端设备,其特征在于,所述方法包括:
对第一视频的编码数据进行解码,得到系数信息、运动矢量信息和第一信息,其中,所述第一信息是所述编码数据中除了所述系数信息和所述运动矢量信息之外的信息;
编码所述系数信息和/或编码所述运动矢量信息,得到第一数据;
根据所述第一数据和所述第一信息,确定第二数据;
向云平台发送所述第二数据。
2.根据权利要求1所述的方法,其特征在于,所述编码数据是基于硬件编码的数据。
3.根据权利要求1或2所述的方法,其特征在于,所述编码所述系数信息和/或编码所述运动矢量信息,包括:
基于软件编码所述系数信息和/或基于软件编码所述运动矢量信息。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述第一数据和所述第一信息,确定第二数据,包括:
所述第一数据是编码所述系数信息得到的数据,根据所述第一数据、所述运动矢量信息和所述第一信息,确定所述第二数据;或者,
所述第一数据是编码所述运动矢量信息得到的数据,根据所述第一数据、所述系数信息和所述第一信息,确定所述第二数据;或者,
所述第一数据是编码所述系数信息和编码所述运动矢量信息得到的数据,根据所述第一数据和所述第一信息,确定所述第二数据。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
接收来自所述云平台的第三数据;
基于硬件解码所述第三数据,得到第二视频,所述第二视频的内容与所述第一视频的内容相同。
6.根据权利要求5所述的方法,其特征在于,所述第二视频的分辨率大于或等于所述第一视频的分辨率。
7.根据权利要求5或6所述的方法,其特征在于,在接收来自所述云平台的第三数据之前,所述方法还包括:
向所述云平台发送第一请求消息,所述第一请求消息用于请求获取所述第二视频。
8.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
接收来自所述云平台的所述第二数据;
基于软件解码所述第二数据,得到所述第一视频。
9.根据权利要求8所述的方法,其特征在于,在接收来自所述云平台的所述第二数据之前,所述方法还包括:
向所述云平台发送第二请求消息,所述第二请求消息用于请求获取所述第一视频。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述系数信息包括所述第一视频中的每一帧对应的多个系数值,所述编码所述系数信息,包括:
获取所述多个系数值中的每个系数值对应的二进制取值的指数部分、尾数部分和符号部分;
根据多符号算术编码算法编码所述指数部分,根据基于上下文自适应的二进制算术编码算法编码所述尾数部分进行,以及根据等概二进制算术编码算法编码所述符号部分。
11.根据权利要求9所述的方法,其特征在于,在获取所述多个系数值中的每个系数值对应的二进制取值的指数部分、尾数部分和符号部分之前,所述方法还包括:
根据所述多个系数值,确定多组系数值,其中,所述多组系数值包括第一组系数值和第二组系数值,所述第一组系数值中的系数值对应的频率与所述第二组系数值中的系数值对应的频率不同,所述第一组系数值包括一个或多个系数值,其中,所述第一组系数值所包括的多个系数值对应的频率相同。
12.根据权利要求1至9中任一项所述的方法,其特征在于,所述系数信息包括所述第一视频中的每一帧对应的多个系数值,所述编码所述系数信息,包括:
确定系数差值集合,所述系数差值集合中的元素是第一像素点对应的系数值与第二像素点对应的系数值之间的差值,其中,所述第一像素点在第一帧中的位置与所述第二像素点在第二帧中的位置相同,所述第一帧和所述第二帧是所述第一视频中相邻的两个关键帧中;
根据基于上下文自适应的二进制算术编码算法对所述第一视频中的第一个帧和所述系数差值集合进行编码。
13.根据权利要求12所述的方法,其特征在于,所述对第一视频的编码数据进行解码,包括:
确定所述编码数据对应的编码算法是否是基于上下文自适应的二进制算术编码算法;
所述编码数据对应的编码算法是所述基于上下文自适应的二进制算术编码算法,对所述编码数据进行解码;或者,
所述编码数据对应的编码算法不是所述基于上下文自适应的二进制算术编码算法,对所述编码数据进行解码,根据所述基于上下文自适应的二进制算术编码算法对解码后的数据进行编码,并对编码后的数据进行解码。
14.根据权利要求1至13中任一项所述的方法,其特征在于,所述运动矢量信息包括所述第一视频中的每一帧的每个像素块对应的运动矢量,所述编码所述运动矢量信息,包括:
根据多符号算术编码算法对半径值、扇形值和索引值进行编码,所述半径值是第一运动矢量的终点到第一像素块所在的坐标系的坐标原点的直线距离,所述扇形值用于指示所述第一运动矢量的终点所在的扇形区域在圆形区域中的位置,所述索引值用于指示所述第一运动矢量的终点在所述扇形区域中的位置;其中,所述第一运动矢量是所述第一像素块对应的运动矢量,所述圆形区域是以所述第一像素块的中心为圆心以及所述半径值为半径所形成的区域,所述第一像素块是所述第一视频中的一个像素块。
15.一种视频数据处理方法,应用于云平台,其特征在于,所述方法包括:
接收来自终端设备的第二数据,所述第二数据包括第一数据,其中,所述第一数据是对系数信息和/或运动矢量信息进行编码得到的数据,所述系数信息和所述运动矢量信息是对第一视频的编码数据进行解码得到的信息;
解码所述第二数据,得到所述系数信息、所述运动矢量信息和第一信息,所述第一信息是所述编码数据中除了所述系数信息和所述运动矢量信息之外的信息;
基于硬件对所述系数信息、所述运动矢量信息和所述第一信息进行编码,得到第三数据,其中,所述第三数据包括第二视频,所述第二视频的内容与所述第一视频的内容相同;
向所述终端设备发送所述第三数据。
16.根据权利要求15所述的方法,其特征在于,所述编码数据是基于硬件编码的数据。
17.根据权利要求15或16所述的方法,其特征在于,所述解码所述第二数据,包括:
基于软件解码所述第二数据。
18.根据权利要求15至17中任一项所述的方法,其特征在于,所述第二视频的分辨率大于或等于所述第一视频的分辨率。
19.根据权利要求15至18中任一项所述的方法,其特征在于,在向所述终端设备发送所述第三数据之前,所述方法还包括:
接收来自所述终端设备的第一请求消息,所述第一请求消息用于请求所述第二视频。
20.根据权利要求15至18中任一项所述的方法,其特征在于,所述方法还包括:
向所述终端设备发送所述第二数据。
21.根据权利要求20所述的方法,其特征在于,在向所述终端设备发送所述第二数据之前,所述方法还包括:
接收来自所述终端设备的第二请求消息,所述第二请求消息用于请求所述第一视频。
22.一种电子设备,其特征在于,包括至少一个处理器和存储器;
所述至少一个处理器用于执行所述存储器中存储的指令,以使得所述电子设备执行如权利要求1至14中任一项所述的方法,或者执行如权利要求15至21中任一项所述的方法。
23.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求15至21中任一项所述的方法。
24.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由电子设备执行时,所述电子设备执行如权利要求1至14中任一项所述的方法,或者执行如权利要求15至21中任一项所述的方法。
25.一种通信系统,其特征在于,包括执行如权利要求1至14中任一项所述方法的所述终端设备,和/或,包括执行如权利要求15至21中任一项所述方法的所述云平台。
26.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述指令被电子设备运行时,使得所述电子设备执行如权利要求的1至14中任一项所述的方法,或者执行如权利要求的15至21中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211032112.6A CN117676158A (zh) | 2022-08-26 | 2022-08-26 | 一种视频数据处理方法、电子设备及计算设备集群 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211032112.6A CN117676158A (zh) | 2022-08-26 | 2022-08-26 | 一种视频数据处理方法、电子设备及计算设备集群 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117676158A true CN117676158A (zh) | 2024-03-08 |
Family
ID=90083089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211032112.6A Pending CN117676158A (zh) | 2022-08-26 | 2022-08-26 | 一种视频数据处理方法、电子设备及计算设备集群 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117676158A (zh) |
-
2022
- 2022-08-26 CN CN202211032112.6A patent/CN117676158A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11445209B2 (en) | History-based image coding method and apparatus | |
US11277607B2 (en) | Method and apparatus for constructing prediction candidate on basis of HMVP | |
EP3941065A1 (en) | Method and device for signaling information on chroma format | |
US10609421B2 (en) | Context derivation for coefficient coding | |
US20230134294A1 (en) | Coding of information about transform kernel set | |
CN112313959A (zh) | 使用基于图像编码系统中的lut导出的mvd解码图像的方法和设备 | |
CN113767625A (zh) | 基于mpm列表的帧内预测方法及其设备 | |
KR101289514B1 (ko) | 인코딩 방법 및 인코더 장치 | |
JP2023503070A (ja) | フィルタリングに基づく画像コーディング装置及び方法 | |
JP2023502128A (ja) | ループフィルタリングを制御する画像コーディング装置及び方法 | |
CN111246208B (zh) | 视频处理方法、装置及电子设备 | |
US12022078B2 (en) | Picture processing method and apparatus | |
CN114556949A (zh) | 帧内预测装置和方法 | |
CN115866297A (zh) | 视频处理方法、装置、设备及存储介质 | |
CN117676158A (zh) | 一种视频数据处理方法、电子设备及计算设备集群 | |
WO2021168624A1 (zh) | 视频图像编码方法、设备及可移动平台 | |
US11962757B2 (en) | Residual signal encoding/decoding method and apparatus employing intra sub-partitions (ISP), and method for transmitting bitstream | |
US11758178B2 (en) | Method for compressing motion vector and apparatus therefor | |
US20220046246A1 (en) | Transform-based image coding method and device therefor | |
CN115280771A (zh) | 基于滤波相关信息信令的图像编码设备和方法 | |
CN114586354A (zh) | 基于矩阵的帧内预测设备和方法 | |
US12010323B2 (en) | Method and apparatus for deriving motion vector | |
CN114786037B (zh) | 一种面向vr投影的自适应编码压缩方法 | |
CN116248895B (zh) | 虚拟现实全景漫游的视频云转码方法及系统 | |
US11706442B2 (en) | Process and apparatus for controlling compressed motion vectors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |