CN115550688A - 视频码流的处理方法、介质、程序产品和电子设备 - Google Patents

视频码流的处理方法、介质、程序产品和电子设备 Download PDF

Info

Publication number
CN115550688A
CN115550688A CN202110735587.0A CN202110735587A CN115550688A CN 115550688 A CN115550688 A CN 115550688A CN 202110735587 A CN202110735587 A CN 202110735587A CN 115550688 A CN115550688 A CN 115550688A
Authority
CN
China
Prior art keywords
frame
video
frames
image
electronic equipment
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
CN202110735587.0A
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 CN202110735587.0A priority Critical patent/CN115550688A/zh
Priority to PCT/CN2022/088011 priority patent/WO2023273535A1/zh
Publication of CN115550688A publication Critical patent/CN115550688A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display

Landscapes

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

Abstract

本申请涉及一种视频码流的处理方法、介质、程序产品和电子设备。该方法包括:第一电子设备采集原始视频;第一电子设备将原始视频进行编码,得到至少一个I帧和与I帧存在参考关系的多个P帧;第一电子设备将基于得到的至少一个I帧和与I帧存在参考关系的多个P帧构成的目标码流发送给第二电子设备,其中,目标码流中的至少部分I帧被拆分成N个子I帧,N为大于或等于1的正整数;第二电子设备将从第一电子设备接收到的目标码流进行解码,得到目标视频,并播放目标视频。本申请的技术方案可以使得第一电子设备向第二电子设备传输的视频码流中的码率比较平稳,从而减少第二电子设备在播放解码出的视频时存在的画面抖动。

Description

视频码流的处理方法、介质、程序产品和电子设备
技术领域
本申请涉及视频编解码技术领域,特别涉及一种可以实现视频去抖动的视频码流的处理方法、介质、程序产品和电子设备。
背景技术
随着电子设备越来越智能化,具有各种功能的电子设备在人们的日常工作、生活中起到越来越重要的作用。例如,可以通过智能电子设备进行移动办公、娱乐、线上学习等。并且,随着智能终端技术的快速发展和终端市场需求的变化,电子设备上各功能应用的实现方式从由单电子设备实现的方式,逐步转变为由多个电子设备通过网络协同实现的分布式实现方式。例如,用户可以通过本地设备安装的相机应用来访问远端设备的相机,以实现相机的跨设备使用。
然而在相机跨设备使用的场景中,在本地设备需要从远端设备获取实时的高清视频流的情况下,由于高清视频流数据量较大,通常为了减少数据量,会在远端设备上对高清视频流进行压缩,再在本地设备上对接收到的压缩过的高清视频流进行解压。然而,压缩后的高清视频流的码率不稳定,会导致本地设备上播放解压出的视频出现画面抖动的情况,影响用户体验。
发明内容
本申请实施例提供了一种可以实现视频去抖动的视频码流的处理方法、介质、程序产品和电子设备。本申请的技术方案在跨设备传输视频码流时,通过调整远端设备在对采集的原始视频流编码生成I帧和P帧时的参考关系,可以提在升播放解码出的视频时的视频画质。并且在传输编码得到的I帧和P帧时,将非首个I帧进行拆分,然后将拆分成的子I帧利用P帧的剩余带宽进行传输,使得远端设备和本地设备之间传输的视频码流的码率比较稳定,可以减少本地设备在播放解码出的视频码流时画面存在的抖动,提升用户体验。
第一方面,本申请实施例提供了一种视频码流的处理方法,包括:第一电子设备采集原始视频;第一电子设备将原始视频进行编码,得到至少一个I帧和与I帧存在参考关系的多个P帧;第一电子设备将基于得到的至少一个I帧和与I帧存在参考关系的多个P帧构成的目标码流发送给第二电子设备,其中,目标码流中的至少部分I帧被拆分成N个子I帧,N为大于或等于1的正整数;第二电子设备将从第一电子设备接收到的目标码流进行解码,得到目标视频,并播放目标视频。
例如,在一些实施例中,在传输编码得到的I帧和P帧时,将非首个I帧进行拆分,然后将拆分成的子I帧利用P帧的剩余带宽进行传输,使得远端设备和本地设备之间传输的视频码流的码率比较稳定,可以减少本地设备在播放解码出的视频码流时画面存在的抖动,提升用户体验。
在上述第一方面的一种可能的实现中,上述原始视频包括多个原始图像组,上述第一电子设备将原始视频进行编码,得到至少一个I帧和与I帧存在参考关系的多个P帧,包括:第一电子设备将原始视频的第一原始图像组中的首帧图像编码生成I帧,并且将第一原始图像组中除首帧图像以外的其他图像编码生成P帧,得到第一目标图像组;第一电子设备将原始视频中除了第一原始图像组以外的其他原始图像组中的首帧图像编码生成I帧和P帧,将其他原始图像组中除了首帧图像以外的其他图像编码生成P帧,得到其他目标图像组。
例如,在一些实施例中,第一电子设备按照每秒钟30帧的帧率采集原始视频流,两帧图像之间的帧间隔约为33毫秒,将采集前30帧图像对应的第一秒钟记为第一视频采集周期,并且将第一视频采集周期内对应的30帧图像记为第一原始图像组,将采用本申请的技术方案对第一原始图像组的30帧图像进行编码得到的I帧和P帧组成的图像集合记为第一目标图像组。
将采集第31至第60帧图像对应的第二秒钟记为第二视频采集周期,将第二视频采集周期内对应的30帧图像记为第二原始图像组,将采用本申请的技术方案对第二原始图像组的30帧图像进行编码得到的I帧和P帧组成的图像集合记为第二目标图像组。
将采集第61至第90帧图像对应的第三秒钟记为第三视频采集周期,将第三视频采集周期内对应的30帧图像记为第三原始图像组,将采用本申请的技术方案对第三原始图像组的30帧图像进行编码得到的I帧和P帧组成的图像集合记为第三目标图像组。
依次类推,将采集第30M+1至第30(M+1)帧图像对应的第M+1秒钟记为第M+1视频采集周期,将第M+1视频采集周期内对应的30帧图像记为第M+1原始图像组,将采用本申请的技术方案对第M+1原始图像组的30帧图像进行编码得到的I帧和P帧组成的图像集合记为第M+1目标图像组。此外,可以将第二目标图像组至第M+1目标图像组称作为其他目标图像组。
可以理解的是,视频采集周期的数量以及每个视频采集周期内采集的视频帧的具体数值可以由实际情况进行设定。
在一些可能的设计中,图像组包括一个I帧和多个和该I帧相关的P帧,P帧的解析需要依赖于这个I帧。
在一些可能的设计中,图像组包括一个I帧和多个和该I帧相关的P帧,例如视频流每30帧为一个周期,包括1个I帧,和依赖于该I帧解析的29个P帧,则这个周期中的I帧和P帧可以为一个图像组。
在上述第一方面的一种可能的实现中,上述第一电子设备将原始视频的第一原始图像组中的首帧图像编码生成I帧,并且将第一原始图像组中除首帧图像以外的其他图像编码生成P帧,包括:
第一电子设备将原始视频的第一原始图像组中的首帧图像独立编码生成I帧;并且,第一电子设备将第一原始图像组中除首帧图像以外的其他图像中的每一帧图像和相邻前一帧图像的差值编码生成P帧。
例如,在一些实施例中,将第一电子设备在第一视频采集周期内采集的30帧图像分别为S1-S30,在第二视频采集周期内采集的30帧图像分别为S1’-S30’。第一电子设备在编码过程中,将第一视频采集周期内的首帧图像S1独立编码成I1,将第二帧图像S2和首帧图像S1的差值编码成P1,将第三帧图像S3和第二帧图像S2的差值编码成P2,将第四帧图像S4和第三帧图像S3的差值编码成P3,以此类推,将第二十九帧图像S29和第二十八帧图像S28的差值编码成P28,将第三十帧图像S30和第二十九帧图像S29的差值编码成P29。
在上述第一方面的一种可能的实现中,上述第一电子设备将原始视频中除了第一原始图像组以外的其他原始图像组中的首帧图像编码生成I帧和P帧,将其他原始图像组中除了首帧图像以外的其他图像编码生成P帧,包括:
第一电子设备将原始视频中除了第一原始图像组以外的其他原始图像组中的首帧图像独立编码生成I帧,并且将首帧图像和相邻前一帧图像的差值编码生成P帧;第一电子设备分别将其他原始图像组中各个原始图像组的第N+1帧图像和首帧图像的差值编码生成P帧;并且,第一电子设备将其他原始图像组的各个原始图像组中除了首帧图像和第N+1帧图像之外的其他图像和相邻前一帧图像的差值编码生成P帧。
例如,在一些实施例中,对于第二视频采集周期内的30帧图像,第一电子设备将首帧图像S1’独立编码成I2和P1’,将第二帧图像S2’和首帧图像S1’的差值编码成P2’,将第三帧图像S3’和第二帧图像S2’的差值编码成P3’,将首帧图像S1’之后的第四帧图像S4’和第一帧图像S1’的差值编码成P4’,将第五帧图像S5’和第四帧图像S4’的差值编码成P4’,以此类推,将第二十九帧图像S29’和第二十八帧图像S28’的差值编码成P29’,将第三十帧图像S30’和第二十九帧图像S29’的差值编码成P30’。第二视频采集周期之后的各个视频采集周期的编码方式和第二视频采集周期类似,在此不再赘述。
在上述第一方面的一种可能的实现中,上述第一电子设备将基于得到的至少一个I帧和与I帧存在参考关系的多个P帧构成的目标码流发送给第二电子设备,包括:
第一电子设备将其他目标图像组中的I帧拆分成N个子I帧,并且,第一电子设备将第一目标图像组中的I帧和与I帧存在参考关系的P帧、其他目标图像组中拆分得到的子I帧、与拆分前的I帧存在参考关系的P帧构成的目标码流发送给第二电子设备。
例如,在一些实施例中,目标码流包括:由第一视频采集周期内的30个视频帧构成的码流:I1、P1至P29,将第二视频采集周期内的I帧切分后,和P帧构成的码流:P1’、I’1、P2’、I’2、P3’、I’3、P4’至P30’,以及第二视频采集周期之后的各个视频采集周期的码流。
在上述第一方面的一种可能的实现中,上述第一电子设备将第一目标图像组中的I帧和与I帧存在参考关系的P帧、其他目标图像组中拆分得到的子I帧、与拆分前的I帧存在参考关系的P帧构成的目标码流发送给第二电子设备,包括:
第一电子设备发送第一目标图像组中的I帧,在确定第一目标图像组中的I帧发送完成的情况下,发送第一目标图像组中的多个P帧;在确定第一目标图像组中多个P帧发送完成的情况下,发送其他目标图像组中的前N个P帧和I帧拆分成的N个子I帧,其中,N个子I帧中的每一个子I帧分别位于前N个P帧中每一个P帧之后;在确定其他目标图像组中的前N个P帧和I帧拆分成的N个子I帧发送完成的情况下,发送其他目标图像组中的其他P帧。
例如,在一些实施例中,第一电子设备在向第二电子设备发送视频码流的过程中,优先发送第一视频采集周期内的30个视频帧的数据,传输的顺序依次为:I1、P1至P29。在发送第二视频采集周期内的30个视频帧时,首先经过计算,确定出需要将I2拆成三个子I帧I’1、I’2、I’3,将这三个子I帧分别利用3个P帧(即P1’、P2’、P3’)的剩余带宽传输,则对于第二视频采集周期内的I2以及P1’至P30’,传输的顺序依次为:P1’、I’1、P2’、I’2、P3’、I’3、P4’至P30’。第二视频采集周期内的视频帧的数据传输完成之后,再依次传输第三视频采集周期内的视频帧的数据,直至所有视频帧全部被传输完。
在上述第一方面的一种可能的实现中,上述第二电子设备将从第一电子设备接收到的目标码流进行解码,包括:
第二电子设备将从第一电子设备接收到的目标码流中的第一目标图像组的I帧独立解码,将第一目标图像组中的P帧参考相邻前一帧目标图像进行解码;并且,第二电子设备将目标码流中其他目标图像组的I帧独立解码,将其他目标图像组中每一个目标图像组的第N+1个P帧参考同一目标图像组的I帧进行解码,将其他目标图像组中每一个目标图像组中除了第N+1个P帧以外的其他P帧参考相邻的前一帧目标图像进行解码。
例如,在一些实施例中,在解码时,第二电子设备对第一视频采集周期内的I1帧进行独立解码,将第一视频采集周期内的P1帧参考I1帧进行解码;将P2帧参考P1帧进行解码;将P3帧参考P2帧进行解码;以此类推,将P29帧参考P28帧进行解码。将第二视频采集周期内的P1’帧参考第一视频采集周期内的P29帧进行解码;将P2’帧参考P1’帧进行解码;将P3’帧参考P2’帧进行解码;将I2帧独立解码;将P4’帧参考I2帧进行解码;将P5’帧以及之后的各个P帧参考相邻的前一个P帧进行解码。
可以理解的是,由于I帧携带有一帧图像的全部信息,而P帧只携带有一帧图像和上一帧图像之间的差值信息,因此,对于一个目标图像组,相比较于将该目标图像组中的第N+1个P帧参考与其相邻的前一个P帧(即第N个P帧)进行解码的方案,参考该目标图像组中的I帧对前述第N+1个P帧进行编码,可以使解码出的P帧包含的图像信息更加丰富,可以使解码出的图像质量更高。在上述第一方面的一种可能的实现中,上述方法还包括:第一电子设备确定出每个目标图像组中的I帧和P帧的参考关系,并且将表征每个目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给第二电子设备。
在上述第一方面的一种可能的实现中,上述方法还包括:每个目标图像组中的I帧和/或P帧包括参考关系标识信息,上述将表征每个目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给第二电子设备,包括:
通过将包括参考关系标识信息的I帧和/或P帧发送给第二电子设备,实现将表征每个目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给第二电子设备。
例如,可以在每一个I帧和P帧中增加两个字段,这两个字段分别用来表征该I帧或P帧是否需要依赖其他I帧才能解码,以及在需要依赖其他I帧才能解码的情况下,依赖的I帧的序号。然后将在各个I帧和P帧中增加的两个表征编码参考关系的字段和相应的I帧或P帧一起作为传输报文中的数据进行传输。在上述第一方面的一种可能的实现中,上述将表征每个目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给第二电子设备,包括:
将表征每个目标图像组中的I帧和P帧的参考关系的参考关系标识信息,通过携带有I帧和/或P帧的报文的扩展字段发送给第二电子设备。
在上述第一方面的一种可能的实现中,上述每个目标图像组中的I帧和P帧的参考关系的参考关系标识信息包括:用于表征P帧编码和解码时所参考的I帧或P帧的参考关系标识信息。
在上述第一方面的一种可能的实现中,上述方法还包括:第二电子设备基于从第一电子设备接收到的参考关系标识信息,对从第一电子设备接收到的目标码流进行解码。
在上述第一方面的一种可能的实现中,上述方法还包括:第一电子设备确定出当前网络总带宽、发送P帧数据占用的带宽以及I帧的数据量;并且,第一电子设备基于确定出的当前网络总带宽、发送P帧数据传输占用的带宽以及I帧的数据量的至少一个,确定出N的数值。
在上述第一方面的一种可能的实现中,第一电子设备通过以下公式计算出N的数值:
Figure BDA0003141499740000051
其中,BWtotal为当前网络总带宽;BWp为发送P帧数据占用的带宽;Isize为I帧数据量,FPS为第一电子设备采集视频的帧率,C为一个常量。
例如,在一些实施例中,当前的实时网络总带宽为10Mbit/s,发送P帧数据所占用带宽为2Mbit/s,I帧的数据量为65.10Kbyte,FPS为30,C为1,则N=3。在上述第一方面的一种可能的实现中,上述第一电子设备采集原始视频,包括:
第二电子设备响应于用户在第二电子设备中选择连接第一电子设备进行视频拍摄的操作,产生第一电子设备的视频拍摄指令;第一电子设备响应于视频拍摄指令,采集原始视频流。
例如,在一些实施例中,第二电子设备安装有体育直播应用,第二电子设备响应于解说员在体育直播应用中选择连接第一电子设备进行拍摄的操作,生成第一电子设备的视频拍摄指令。第一电子设备响应于该视频拍摄指令,通过摄像头采集原始视频流。在上述第一方面的一种可能的实现中,上述第一电子设备将原始视频进行编码,得到至少一个I帧和与I帧存在参考关系的多个P帧,包括:
第一电子设备基于H.261、H.263以及H.264编码标准中的其中一种,将原始视频进行编码,得到至少一个I帧和与I帧存在参考关系的多个P帧。
第二方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,该指令在电子设备上执行时使电子设备执行上述第一方面以及第一方面的各种可能实现中的任意一种方法。
第三方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括指令,指令用于实现上述第一方面以及第一方面的各种可能实现中的任意一种方法。
第四方面,本申请实施例提供了一种芯片装置,芯片装置包括:
通信接口,用于输入和/或输出信息;
处理器,用于执行计算机可执行程序,使得安装有芯片装置的设备执行上述第一方面以及第一方面的各种可能实现中的任意一种方法。
第五方面,本申请实施例提供了一种电子设备,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及
处理器,当指令被一个或多个处理器执行时,处理器用于执行上述第一方面以及第一方面的各种可能实现中的任意一种方法。
附图说明
图1(a)根据本申请的一些实施例,示出了视频流压缩后得到的I帧和P帧数据量的示意图;
图1(b)示出了相关技术方案中视频帧编码的示意图;
图1(c)根据本申请的一些实施例,示出了一种分布式相机场景图;
图2(a)示出了一种技术方案中的视频帧处理方法;
图2(b)示出了另一种技术方案中的视频帧处理方法;
图2(c)根据本申请的一些实施例,示出了本申请提供的一种视频帧的编码、传输、解码的示意图;
图3根据本申请的一些实施例,示出了本申请提供的一种系统结构图;
图4根据本申请的一些实施例,示出了图3所示的本地设备通过远端设备进行视频拍摄的交互图;
图5(a)至图5(d)示出了本地设备的一些用户界面图;
图6根据本申请的一些实施例,示出了本申请提供的一种视频帧的编码、传输、解码的示意图;
图7根据本申请的一些实施例,示出了本申请提供的一种编码方案的流程图;
图8根据本申请的一些实施例,示出了本申请提供的一种传输方案的流程图;
图9根据本申请的一些实施例,示出了本申请提供的一种解码方案的流程图;
图10根据本申请的一些实施例,示出了一种体育直播场景图;
图11根据本申请的一些实施例,示出了图10所示的体育直播场景中,本地的手机和远端的手机的交互图;
图12根据本申请的一些实施例,示出了一种本地的计算机采用远端的无人机拍摄城市建筑物视频的场景图;
图13根据本申请的一些实施例,示出了图12所示的计算机和无人机的交互图;
图14根据本申请的一些实施例,示出了一种本地设备的结构框图;
图15根据本申请的一些实施例,示出了一种远端设备的结构框图;
图16根据本申请的一些实施例,示出了一种电子设备的结构框图。
具体实施方式
本申请的说明性实施例包括但不限于一种可以实现视频去抖动的视频码流的处理方法、介质、程序产品和电子设备。
为了更好地理解本申请实施例的方案,下面首先结合图1(a)和(b)对本申请实施例可能涉及的相关术语和概念进行介绍。
例如,相机跨设备使用的场景中,将高清视频压缩成如图1(a)所示的关键帧(I帧)和普通帧(P帧)。I帧的数据量较大,P帧的数据量较小,且各个P帧的数据量相差较小。
(1)I帧
I帧是一种自带一帧图像的全部信息的独立帧。I帧的编码和解码过程不依赖I帧之前的图像,可以独立编码、解码,解码时仅用I帧的数据就可重构完整图像。由于I帧携带有一帧图像的全部信息,因此I帧的数据量一般比较大,接近一幅静态图像的压缩图片大小,I帧的传输时间较长。
(2)P帧
P帧的编码需要依赖P帧前面的P帧或I帧,P帧是对P帧对应的一帧图像和前一帧图像的差值信息进行压缩编码。P帧不能独立解码,需要依赖该P帧前一帧的P帧或I帧进行解码。P帧解码时必须将前一帧图像和差值信息求和后才能重构完整的P帧图像。由于P帧编码的是差值信息,因此P帧的数据量一般比较小,可以在一帧时间内传输完。
例如,在图1(b)所示的实施例中,按照设定的帧间隔,将原始视频流周期性的编码生成I帧和P帧。原始视频流中的每一帧图像只对应编码生成一个I帧或一个P帧,I帧独立编码,P帧参考前一帧图像进行编码。
当传输由数据量较大的多个I帧和数据量较小的多个P帧组成的视频码流时,导致传输网络中实时的码率不稳定,导致本地设备播放解码出的视频码流时,画面存在抖动。
下面通过附图和实施例,对本申请实施例的技术方案做进一步的详细描述。
图1(c)根据本申请的一些实施例,示出了一种分布式相机使用场景图。其中包括远端设备100-1和本地设备100-2。远端设备100-1和本地设备100-2可以为同一局域网、同一物联网中可以互相通信的电子设备,也可以为距离较远例如异地的电子设备,还可以是登录同一用户账号的电子设备以及组成超级虚拟终端的电子设备等。
当用户想要使用本地设备100-2上安装的涉及视频的拍摄、编辑、播放等的应用时,若远端设备100-1的拍摄性能较佳,可以将远端设备100-1可以作为本地设备100-2的外接设备进行视频的拍摄,然后将拍摄的视频发送给本地设备100-2,本地设备100-2接收到远端设备100-1发送的视频后,可以保存、编辑、播放该视频。例如,解说员使用本地设备100-2安装的体育直播应用进行体育赛事的直播解说,可以使用拍摄性能较佳的远端设备100-1拍摄运动员的高清比赛视频,远端设备100-1将实时采集的视频帧传输至本地设备100-2进行显示,解说员通过体育直播应用对接收到的高清比赛视频进行同步解说。又例如,用户通过本地设备100-2观看远端设备100-1在特定范围内的监控视频,远端设备100-1可以将采集的监控视频传输至本地设备100-2进行显示。
为了解决在本地设备100-2上播放从远端设备100-1接收到的视频流时存在的画面抖动的问题。图2(a)示出了一种远端设备100-1和本地设备100-2对视频流的处理过程。其中,远端设备100-1将摄像头采集的原始视频流经过压缩编码后生成I帧和P帧,然后将生成的I帧和P帧发送给本地设备100-2。本地设备100-2接收到I帧和P帧后进行解码,并存入缓存区,即采用缓冲区来缓存解码出的视频帧,当缓冲区中缓存足够量的视频帧之后,再按固定帧率输出缓存的视频帧,实现视频播放。然而,图2(a)所示的技术方案虽然通过缓冲区可以减少视频抖动,但是由于缓冲区中需要缓存足够量的视频帧才能进行视频播放,增加了从视频采集到最终实现视频播放的时延,对于例如照片预览这种对实时性要求很高的场景,用户的实时性体验较差。
图2(b)示出了另一种可以解决上述存在的画面抖动的问题的技术方案中远端设备100-1和本地设备100-2对视频流的处理过程。其中,远端设备100-1适当降低摄像头采集的原始视频流的分辨率和压缩码率,编码生成I帧和P帧,然后将生成的I帧和P帧发送给本地设备100-2。本地设备100-2接收到I帧和P帧后进行解码,并放大解码出的视频帧的分辨率,恢复成原始视频帧的分辨率,再按固定帧率输出缓存的视频帧,实现视频播放。然而图2(b)所示的技术方案虽然通过降低分辨率和较低的压缩码率可以降低传输的数据量可以减少视频抖动,但是分辨率和压缩码率的降低会明显降低视频的画面质量,影响用户体验。
图2(a)和图2(b)的技术方案只能通过牺牲视频的画面质量或者增加时延来减少视频的画面抖动问题,无法在不影响视频的画面质量以及用户的实时性体验的同时,解决视频跨设备传输时存在实时画面抖动的问题。
为了解决上述技术问题,图1(c)所示的场景图中的本地设备100-2和远端设备100-1执行本申请提供的视频码流的处理方法,通过调整跨设备传输时视频流的编码方案、传输方案以及解码方案,能够在即不影响视频画质和用户的实时性体验的前提下,降低在跨设备传输视频流时存在的实时画面抖动的问题,提升用户体验。
具体地,例如,在本申请提供的如图2(c)所示的实施例中,远端设备100-1的编码方案为:远端设备100-1周期性地采集视频帧,将第一视频采集周期内的首帧图像编码成I帧,第一视频采集周期内的其他图像参考与该图像相邻的前一帧均被编码成P帧。例如第一视频采集周期内的第二帧(首帧之后),参考该图像相邻的前一I帧被编码成P帧。又如,第一视频采集周期内的第i帧(i不等于1或2)参考该图像相邻的前一P帧(第i-1帧)被编码成P帧。这样,第一采集周内除了首帧是I帧,其余帧皆为P帧。
除了第一视频采集周期,将其他视频采集周期内的首帧图像同时编码成I帧和P帧;将其他视频采集周期内除首帧以外的图像编码成P帧。为了提高本地设备100-2播放解码出的视频流时的画面质量,在除了第一个视频采集周期以外的其他视频采集周期内的第二个P帧之后的其他P帧中选取一个P帧参考该周期内的I帧进行编码。例如,将除了第一个视频采集周期以外的其他视频采集周期内第N+1个P帧(I帧之后的第N+1个P帧)参考该周期内的I帧进行编码,将其他视频采集周期内除了第N+1个P帧以外的P帧参考与该P帧相邻的前一帧进行编码,并且将编码后的I帧和P帧进行标记。其中N为大于或等于2的正整数。通过周期性的编码生成I帧,可以提升画面质量,P帧可以用于实时画面显示,避免画面卡顿。
传输方案为:远端设备100-1在将编码后的I帧和P帧传输给本地设备100-2的过程中,优先发送第一个视频采集周期内的第一个I帧和所有的P帧,再依次发送其他视频采集周期内的I帧和P帧。为了减少在传输数据量较大的I帧和多个数据量较小的P帧组成的码流存在的码流不稳定的问题,将除了第一个视频采集周期以外的其他视频采集周期内的I帧的数据利用I帧之后的N各P帧的剩余带宽进行传输。具体地,对于第一个I帧之后的其他I帧,由于I帧的数据量较大,因此可以结合当前的网络带宽和I帧的大小将这些I帧切分成N个子I帧,将这些子I帧分别利用同一视频采集周期内的前N个P帧的剩余带宽进行传输。如此,可以使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,从而减少本地设备100-2播放解码出的视频时存在的画面抖动。
解码方案为:本地设备100-2在接收到由远端设备100-1发送的I帧和P帧之后,所有的I帧独立解码。由于除了第一个视频采集周期以外的其他视频采集周期内的第N+1个P帧(I帧之后的第N+1个P帧)是参考该周期内的I帧进行编码的,相应的,在解码时,除了第一视频采集周期以外的其他视频采集周期内的第N+1个P帧需要参考该周期内的I帧进行解码,剩余其他所有的P帧均参考与该P帧相邻的前一帧进行解码。
相比较于图1(b)所示的实施例中,远端设备100-1按照设定的帧间隔,周期性的将除首帧图像以外的一帧图像编码成I帧,其他帧的图像编码成P帧,并且直接按照编码顺序将编码出来的I帧、P帧的发送给本地设备100-2,本地设备100-2直接根据接收到的帧顺序来对接收到的I帧、P帧进行解码。
本申请提供的如图2(c)所示的实施例中,远端设备100-1按照设定的帧间隔,除了首帧图像以外,周期性的将一帧图像同时编码成I帧和P帧,首个I帧和所有P帧高优先级传输,使得本地设备100-2可以优先接收到数据量小的P帧,实时显示出视频画面,避免画面卡顿。其他I帧利用I帧之后相邻的前N个P帧的剩余带宽来传输,使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,可以减少由于相关技术方案中将各个I帧的全部数据作为一个整体单独传输时,导致由于远端设备100-1向本地设备100-2传输的视频码流中的码率不稳定,而在本地设备100-2播放解码出的视频时存在的画面抖动问题。
此外,本申请技术方案的远端设备100-1调整了除首个I帧以外的其他I帧之后的第N+1个P帧编码时的参考关系。由于I帧携带了一帧图像的全部信息,P帧携带了一帧图像和相邻前一帧图像的差值信息。因此,相比较于某一P帧参考一P帧进行编码,上述某一P帧参考一I帧编码带来的误差更小,解码出的图片质量更高。不难理解,相比较于首个I帧以外的其他I帧之后的第N+1个P帧参考相邻的前一个P帧进行编码的技术方案,本申请技术方案中将首个I帧以外的其他I帧之后的第N+1个P帧参考对应的I帧进行编码,可以进一步提升视频的画质。
此外,可以理解,适用于本申请实施例的本地设备100-2可以为具有显示功能以及编码功能的各种电子设备,例如:手机、电脑、膝上型计算机、平板电脑、电视、显示设备、户外显示屏、车载终端等。
此外,可以理解,适用于本申请实施例的远端设备100-1可以为具有拍摄功能以及解码功能的各种电子设备,例如:摄像头、具有摄像头的手机、电脑、计算机、无人机、平板电脑等。
图3示出了上述图1(c)所示的场景中,能够实现本申请技术方案的一种本地设备100-2和远端设备100-1的分层系统架构图。如图3所示,本地设备100-2包括相机服务模块121、解码模块123、数据传输模块124、显示屏驱动模块125以及体育直播应用122、监控应用126、相机应用127、畅联通话应用128等等。
其中,相机服务模块121用于发送本地设备100-2的体育直播应用122、监控应用126、相机应用127、畅联通话应用128等生成的远端设备100-1的视频拍摄指令,以及回传由解码模块123解码出的视频帧供上述各种应用进行视频播放。
数据传输模块124,用于接收由远端设备100-1根据本申请提供的编码方案压缩编码并标记好的I帧和P帧,并且由远端设备100-1根据本申请提供的传输方案发送的前述标记好的I帧和P帧,并回传给本地设备100-2的解码模块123。
解码模块123用于根据本申请提供的解码方案对从数据传输模块124接收的标记好的I帧和P帧进行解码,并将解码出的视频帧回传给相机服务模块121。具体地,例如,解码模块123在接收到由远端设备100-1发送的I帧和P帧之后,所有的I帧独立解码,除了第一视频采集周期以外的其他视频采集周期内的第N+1个P帧参考该周期内的I帧进行解码,剩余其他所有的P帧均参考该P帧的前一帧进行解码。
显示屏驱动模块125用于驱动本地设备100-2的显示单元将上述各种应用播放的视频画面显示出来。
继续参考图3,远端设备100-1包括相机代理模块111、数据传输模块114、参考帧计算模块115、编码模块113、相机模块112以及摄像头驱动模块116等。
其中,相机代理模块111用于接收由本地设备100-2发送的视频拍摄指令,响应于该指令,向远端设备100-1的相机模块发送开启拍摄功能的指令。
相机模块112用于响应于由相机代理模块111发送的开启拍摄功能的指令,开启拍摄功能,按照设定的视频采集周期采集原始视频流。例如,在一些实施例中,相机模块112按照每秒钟30帧的帧率采集视频帧,视频采集周期为1秒,则每个视频采集周期内都会采集出30帧的视频帧。又例如,在一些实施例中,相机模块112按照每秒钟60帧的帧率采集视频帧,视频采集周期为1秒,则每个视频采集周期内都会采集出60帧的视频帧。可以理解的是,视频采集周期以及每个视频采集周期内采集的视频帧的具体数值可以由实际情况进行设定,本申请对此不作限定。
编码模块113用于对相机模块112采集的原始视频流按照本申请提供的编码方案进行压缩编码,生成预设帧间隔的多个I帧和P帧。具体地,编码模块113将第一视频采集周期内的首帧图像独立编码成I帧,第一视频采集周期内的其他图像参考与该图像相邻的前一个I帧或P帧编码成P帧。其他视频采集周期内的首帧图像同时编码成I帧和P帧,其中,I帧是对相应的首帧图像进行独立编码,P帧是参考该图像的前一帧进行编码。其他视频采集周期内除首帧以外的图像编码成P帧,其中,其他视频采集周期内第N+1个P帧是参考该周期内的I帧进行编码的;其他视频采集周期内除了第N+1个P帧以外的P帧是参考与该P帧相邻的前一帧进行编码的,并且将编码后的I帧和P帧进行标记。其中N为大于或等于2的正整数。
参考帧计算模块115用于基于当前远端设备100-1传输网络的实时带宽,以及预估的各个非首个I帧(除了第一视频采集周期以外的其他视频采集周期内的I帧)和P帧的数据量大小,计算出各个I帧需要拆分成N个数据块,和N个P帧一起传输(由于P帧的数据量一般比较小,传输P帧时,网络带宽有余量,利用传输P帧时的剩余带宽来传输)。然后将计算出的N值发送给编码模块113。具体计算过程将在下文中进行详细介绍。
需要说明的是,由于相机模块112是实时采集原始视频流,并且上述的参考帧计算模块115、编码模块113都是对实时获取的原始视频流进行实时处理的。因此,不难理解,参考帧计算模块115在计算各非首个I帧对应的N值时,可以把第一视频采集周期内的I帧和P帧的大小分别作为参考值,来预估其他视频采集周期内的I帧和P帧的数据量大小,从而计算出相应的N值。N值的具体计算方法将在下文中进行详细介绍。
数据传输模块114用于根据本申请提供的传输方案将由编码模块113输出的标记好的I帧和P帧发送给本地设备100-2。具体地,数据传输模块114高优先级发送第一个I帧和所有的P帧,低优先级发送其他I帧。对于第一个I帧之后的其他I帧,由于I帧的数据量较大,因此可以结合当前的网络带宽和I帧的大小将这些I帧切分成N个子I帧,将这些子I帧分别利用同一周期内的前N个P帧的剩余带宽进行传输,可以理解的是,前述同一周期内的前N个P帧为相应周期内I帧之后的N个P帧,其中包括在编码生成I帧时I帧对应的原始视频帧同时编码生成的P帧,以及I帧对应的原始视频帧之后相邻的N-1个原始视频帧编码生成的N-1个P帧。
可以使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,从而减少本地设备100-2播放解码出的视频时存在的画面抖动。
需要说明的是,由于视频流是实时采集的,因此,上述高优先级发送第一个I帧和所有的P帧,低优先级其他I帧,并不是将所有P帧发送完之后再发送除了第一个I帧之后的其他I帧,而是意味着如果数据传输模块114当前接收到P帧即可发送该P帧,如果当前接收到除了第一个I帧之后的其他I帧,则要把该I帧分成N份,利用N个P帧的剩余带宽进行传输,且发送这N个P帧和拆分的I帧时,P帧在前,拆分的I帧在后。如此,本地设备100-2可以先接收到P帧进行实时画面显示,避免画面卡顿。
摄像头驱动模块116用于驱动远端设备100-1的相机单元采集视频流。
因此,从上述关于图3的介绍可以看出,远端设备100-1的编码模块113周期性的将除了首帧图像以外的一帧图像同时编码成I帧和P帧。远端设备100-1的数据传输模块114将首个I帧和所有P帧高优先级传输,使得本地设备100-2可以优先接收到数据量小的P帧,实时显示出视频画面,避免画面卡顿。其他I帧利用N个P帧的剩余带宽来传输,可以使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,从而减少本地设备100-2播放解码出的视频时存在的画面抖动。远端设备100-1的编码模块113调整了除首个I帧以外的其他I帧之后的第N+1个P帧编码时的参考关系,即首个I帧以外的其他I帧之后的第N+1个P帧参考对应的I帧进行编码,相比较于首个I帧以外的其他I帧之后的第N+1个P帧参考相邻的前一个P帧进行编码的技术方案,可以进一步提升视频的画质。
可以理解的是,图3所示的系统结构作为一种示意性的系统结构,并不构成对可以实现本申请提供的视频码流的处理方法的远端设备100-1和本地设备100-2的具体限定。在本申请的另一些实施例中,本地设备100-2和远端设备100-1可以包括比图3所示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
下面将结合图3所示的系统结构图,以本地设备100-2通过网络访问控制远端设备100-1上的相机,然后远端设备100-1将相机采集的视频流实时传输给本地设备100-2为例,对本申请提供的技术方案进行详细介绍。具体地,如图4所示,本地设备100-2和远端设备100-1之间的交互图包括以下步骤:
步骤401:本地设备100-2的相机应用127响应于用户在相机应用127中选择连接远端设备100-1进行拍摄的操作,生成远端设备100-1的视频拍摄指令。
例如,在图5(a)所示的实施例中,用户点击本地设备100-2桌面的相机应用127的图标,本地设备100-2响应于用户的点击操作,显示出如图5(b)所示的本地设备100-2的相机应用127的操作界面,其中包括内容为“是否选择外接设备进行拍摄”提示框131和内容为“是”的控制131a以及内容为“否”的控件131b。
当用户点击控件131a之后,即选择本地设备100-2连接外接设备进行拍摄,本地设备100-2显示出如图5(c)所示的外接设备的选择界面,其中包括提示框141,提示框141包括本地设备100-2搜索到的外接设备的名称,例如,本地设备100-2搜索到第一远端设备、第二远端设备以及第三远端设备。并在提示框141中显示出与搜索到的第一远端设备、第二远端设备以及第三远端设备一一对应的连接控件141a、141b、141c。
当用户点击连接控件141a、141b、141c中的其中一个时,则表明用户选择使本地设备100-2连接第一远端设备、第二远端设备以及第三远端设备中的其中一个来实现拍摄功能。例如,用户点击了控件141a之后,本地设备100-2显示出如图5(d)所示的界面,其中包括“已与第一远端设备连接”的提示框151以及“是”控件151a,表明本地设备100-2已与第一远端设备建立了连接。若用户点击控件151a,本地设备100-2的相机应用127即可生成第一远端设备的视频拍摄指令。
可以理解的是,上述图5(a)至图5(d)的各个界面中显示的内容仅仅是为了更直观地阐述用户在点击本地设备100-2的相机应用127之后,相机应用127生成远端设备100-1的视频拍摄指令的一种示例,本申请对此过程中各个显示界面的内容不做限定。
此外,可以理解的是,本地设备100-2和远端设备100-1进行跨设备视频传输时,本地设备100-2和远端设备100-1之间可以通过底层网路实现互连。其中,底层网路包括但不限于分布式软总线、无线保真(Wireless-Fidelity,WIFI)、无线局域网(Wireless LocalArea Network,WLAN)、蓝牙(Bluetooth,BT)、近场通信(Near Field Communication,NFC)等,在此不做限制。
此外,可以理解的是,从安全角度考虑,本地设备100-2和远端设备100-1之间需要互为可信任的电子设备,例如,本地设备100-2和远端设备100-1之间经过用户统一授权认证,例如,可以通过用户进行客户识别模块(Subscriber Identity Module,SIM)卡的个人识别密码(Personal Identification Number,PIN码)认证、人脸识别认证、指纹认证、声纹认证等完成统一授权认证,在此不做限制。
步骤402:本地设备100-2的相机应用127将生成的视频拍摄指令发送给本地设备100-2的相机服务模块121。
步骤403:本地设备100-2的相机服务模块121将接收到的视频拍摄指令发送给远端设备100-1的相机代理模块111。在一些实施例中,相机服务模块121在接收到相机应用127下发的视频拍摄指令的情况下,可以采用预设的数据传输的端口号来传输视频拍摄指令。
步骤404:远端设备100-1的相机代理模块111在接收到由本地设备100-2发来的视频拍摄指令之后,对该指令进行解析,生成开启相机模块112的拍摄功能的指令。
步骤405:远端设备100-1的相机代理模块111将生成的开启拍摄功能的指令发送给远端设备100-1的相机模块112。
步骤406:远端设备100-1的相机模块112响应于接收到的开启拍摄功能的指令,开启拍摄功能,采集视频帧。
在一些实施例中,远端设备100-1的相机模块112按照设定的帧率周期性的采集视频帧。例如,在如图6所示的实施例中,远端设备100-1的相机模块112按照每秒30帧的帧率采集原始视频流,两帧图像之间的帧间隔约为33毫秒。则将相机模块112采集前30帧图像对应的第一秒钟记为第一视频采集周期,将第一视频采集周期内对应的30帧图像S1-S30记为第一原始图像组。将相机模块112采集第31至第60帧图像对应的第二秒钟记为第二视频采集周期,将第二视频采集周期内对应的30帧图像S1’-S30’记为第二原始图像组。
步骤407:远端设备100-1的相机模块112将采集到的视频流发送给远端设备100-1的编码模块113。
步骤408:远端设备100-1的编码模块113将接收到的第一视频采集周期内的视频帧按照预设的编码规则进行编码,得到第一视频采集周期内的首个I帧和多个P帧。
其中,首个I帧是编码模块113对第一视频采集周期内的首帧图像的全部信息进行独立压缩编码得到的。前述多个P帧是编码模块113分别对第一视频采集周期内除首帧图像以外的各个图像和相邻前一帧图像的差值进行编码得到的,即前述多个P帧是编码模块113对第一视频采集周期内除首帧图像以外的各个图像分别参考相邻的前一帧图像压缩编码得到的。
例如,在图6所示的实施例中,对于原始视频流中第一视频采集周期内的30帧图像,编码模块113将首帧图像S1独立编码成I1,将第二帧图像S2和首帧图像S1的差值编码成P1,将第三帧图像S3和第二帧图像S2的差值编码成P2,将第四帧图像S4和第三帧图像S3的差值编码成P3,以此类推,将第二十九帧图像S29和第二十八帧图像S28的差值编码成P28,将第三十帧图像S30和第二十九帧图像S29的差值编码成P29。在一些实施例中,将采用本申请的技术方案对第一原始图像组的30帧图像进行编码得到的I1帧、P1至P29帧组成的图像集合记为第一目标图像组。
在一些实施例中,编码模块113可以通过H.261、H.263、H.264等标准对第一视频采集周期中的各个图像进行编码,得到上述首个I帧和多个P帧,本申请对此不做限定。
步骤409:远端设备100-1的编码模块113将编号后的首个I帧和多个P帧发送给远端设备100-1的参考帧计算模块115,以供参考帧计算模块115计算出N值。
步骤410:远端设备100-1的参考帧计算模块115基于接收到的首个I帧以及多个P帧计算出N值。N值可以用来确定除第一视频采集周期之外的其他视频采集周期内的编码方案,也可以用来确定在远端设备100-1向本地设备100-2发送编码后的I帧和P帧的过程中,具体将首个I帧以外的其他I帧利用几个P帧的剩余带宽进行传输,以避免由单独传输数据量较大的完整的I帧和数据量较小的多个P帧组成的视频码流时,导致传输网络中实时的码率不稳定,导致本地设备播放解码出的视频码流时存在的画面抖动。
在一些实施例中,参考帧计算模块115可以基于实时网络总带宽、P帧数据传输占用的带宽、I帧的数据量,计算上述N值。具体计算公式如下:
Figure BDA0003141499740000141
上述公式(1)中各个参数的释义如下:
BWtotal:实时网络总带宽;
BWp:发送P帧数据所占用带宽;
Isize:I帧数据量;
FPS为远端设备100-1采集视频的帧率;
C:是一个常量,例如可以取值为0.5,1,1.5等;
例如,当前的实时网络总带宽为10Mbit/s,发送P帧数据所占用带宽为2Mbit/s,I帧的数据量为65.10Kbyte,FPS为30,C为1,则
Figure BDA0003141499740000142
可以理解的是,上述公式(1)中的Isize可以是首个I帧的数据量;也可以是基于首个I帧的数据量预估出的数据量,例如,将首个I帧的数据量加上一定的余量,预估出一个数据量,还可以是基于经验值选取的一个数据量。本申请对此不做限定。
此外,可以理解的是,上述公式(1)中的BWtotal,BWp以及Isize的具体数值还可以根据实际情况实时进行调整。例如,在一些实施例中,当网络的实时网络总带宽BWtotal的数值变化超过设定阈值TH_bwt时,可以更新上述公式(1)中的BWtotal的数值,重新计算N值。当发送P帧数据所占用带宽BWp的数值变化超过设定阈值TH_bwp时,可以更新上述公式(1)中的BWp的数值,重新计算N值。同样地,当上述公式(1)中的I帧数据量Isize变化超过设定阈值TH_Isize时,可以更新上述公式(1)中的Isize,重新计算N值。
通过计算出上述N值之后,即可确定出除了第一视频采集周期之外的其他视频采集周期内的编码方案。即:除了第一视频采集周期之外的其他视频采集周期内的I帧之后的第N+1个P帧参考对应的I帧进行编码,相比较于首个I帧以外的其他I帧之后的第N+1个P帧参考相邻的前一个P帧进行编码的技术方案,可以进一步提升视频的画质。
此外,通过计算出上述N值之后,在远端设备100-1向本地设备100-2发送编码后的I帧和P帧的过程中,除了第一视频采集周期之外的其他视频采集周期内的I帧可以利用I帧之后相邻的前N个P帧的剩余带宽来传输,可以使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,从而减少本地设备100-2播放解码出的视频时存在的画面抖动。
此外,可以理解的是,上述公式(1)只是本申请提供的一种示例性的计算N值的方法,开发人员可以根据实际情况,确定合适的计算N值的方法,本申请对此不做限定。
步骤411:远端设备100-1的参考帧计算模块115将计算出的N值发送给远端设备100-1的编码模块113。
步骤412:远端设备100-1的编码模块113结合接收到的N值对除了第一视频采集周期以外的其他视频采集周期的视频帧进行编码,得到相应的I帧和P帧。具体地,对于除了第一视频采集周期以外的其他各个视频采集周期内的视频帧,第一帧图像被同时编码成I帧和P帧,P帧用于实时画面显示,I帧用于提升画面质量。第一帧图像对应的I帧是将该帧图像的全部信息进行独立压缩编码得到的,第一帧图像对应的P帧是将该帧图像和与该帧图像相邻的上一帧图像(即第上一个视频采集周期的最后一帧图像)的差值进行编码得到的。第二帧图像以及第二帧图像之后的各个图像均被编码成P帧。其中,第N+1帧图像对应的P帧是参考同一视频采集周期内的I帧编码得到的;第N+1帧图像之前的N个P帧分别参考相邻的前一帧图像进行编码;剩余的其他图像对应的P帧是对该图像和与该图像相邻的前一帧图像的差值进行编码得到的,即剩余的其他图像对应的P帧是参考与该P帧相邻的前一个P帧进行编码得到的。相比较于如图1(b)所示的实施例中,所有P帧都是参考相邻的前一个P帧进行编码的技术方案,可以减少I帧之后除第一个P帧之外的所有P帧全部依赖P帧编码带来的误差,可以提升画面质量。
例如,假设上述N值为3,则对于其他视频采集周期内的第四帧图像,需要将该第四帧图像和同一周期内的第一帧图像的差值进行编码得到第四个P帧。例如,在图6所示的实施例中,对于原始视频流中第二视频采集周期内的30帧图像,编码模块113将首帧图像S1’独立编码成I2和P1’,将第二帧图像S2’和首帧图像S1’的差值编码成P2’,将第三帧图像S3’和第二帧图像S2’的差值编码成P3’,将首帧图像S1’之后的第四帧图像S4’和第一帧图像S1’的差值编码成P4’,将第五帧图像S5’和第四帧图像S4’的差值编码成P4’,以此类推,将第二十九帧图像S29’和第二十八帧图像S28’的差值编码成P29’,将第三十帧图像S30’和第二十九帧图像S29’的差值编码成P30’。在一些实施例中,将采用本申请的技术方案对第二原始图像组的30帧图像进行编码得到的I2帧、P1’至P29’帧组成的图像集合记为第一目标图像组。
在一些实施例中,编码模块113可以通过H.261、H.263、H.264等标准对除了第一视频采集周期以外的其他视频采集周期内的各个图像进行编码,得到其他视频采集周期内的I帧和P帧,本申请对此不做限定。
此外,需要说明的是,由于上述H.261、H.263、H.264等标准即指示了编码方案也指示了解码方案。因此,在解码时,也可以采用上述H.261、H.263、H.264等标准进行解码。
此外,为了便于使本地设备100-2在接收到远端设备100-1发送的多个I帧和P帧时,能够快速确定出各个I帧和P帧之间编码的参考关系,远端设备100-1还可以对编码得到的多个I帧和P帧进行标记,尤其需要标记出除了第一视频采集周期以外的其他视频采集周期内的第N+1个P帧在编码时的参考关系。
例如,在一些实施例中,远端设备100-1的编码模块113可以在每一个I帧和P帧中增加两个字段,这两个字段分别用来表征该I帧或P帧是否需要依赖其他I帧才能解码,以及在需要依赖其他I帧才能解码的情况下,依赖的I帧的序号。然后将在各个I帧和P帧中增加的两个表征编码参考关系的字段和相应的I帧或P帧一起作为传输报文中的数据进行传输。
例如,在一些实施例中,编码模块113可以在编码得到的一帧图像中增加第一字段“True or False”,以及第二字段“Frame Number_I”。当第一字段的值为0时,表明该帧图像不需要依赖I帧解码,当第一字段的值为1时,表明该帧图像需要依赖I帧解码,并且可以通过第二字段的值确定依赖的I帧的序号。便于本地设备100-2在接收到远端设备100-1发送的多个I帧和P帧时,能够快速、准确地确定出各个I帧和P帧之间的参考关系。此外,可以理解的是,在一些实施例中,可以将表征各个I帧和P帧之间编码参考关系的字段作为独立于各个I帧和P帧的数据,和携带有相应I帧或P帧的传输报文一起传输。
此外,在一些实施例中,可以将表征各个I帧和P帧之间编码参考关系的字段作为携带有相应I帧或P帧的传输报文的扩展字段,和相应I帧或P帧一起传输。
步骤413:远端设备100-1的编码模块113将编码得到的I帧和P帧发送给远端设备100-1的数据传输模块114。
步骤414:远端设备100-1的数据传输模块114按照预设的传输规则将编码得到的I帧和P帧发送给本地设备100-2的数据传输模块123。
需要说明的是,在远端设备100-1的数据传输模块114向本地设备100-2发送编码得到的I帧或P帧时,通常单个I帧和单个P帧的数据量均大于单个传输报文。因此,在传输编码得到的I帧和P帧的过程中,单个I帧和单个P帧均需要进行数据拆分,即单个I帧和单个P帧的数据均对应多个传输报文。在一些实施例中,远端设备100-1的数据传输模块114在将编码模块113产生的I帧和P帧传输给本地设备100-2的过程中,优先发送第一个I帧和所有的P帧。由于I帧的数据量较大,因此将第一个I帧之后的其他I帧切分成N个子I帧,将这些子I帧分别利用N个P帧的剩余带宽进行传输。可以使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,从而减少本地设备100-2播放解码出的视频时存在的画面抖动。
例如,在图6所示的实施例中,数据传输模块114优先传输第一视频采集周期内的30个视频帧的数据,传输的顺序依次为:I1、P1至P29。再传输第二视频采集周期内的30个视频帧的数据。可以理解的是,由于第二视频采集周期内的首帧图像被同时编码成了一个I帧和一个P帧(即图6中的I2和P1’),剩余的29帧图像被编码成P帧(即图6中的P2’至P30’),则第二视频采集周期内的30帧图像经过编码模块113的编码后一共得到一个I帧和30个P帧(即图6中的I2以及P1’至P30’)。并且经过前述参考帧计算模块115的计算,确定出需要将I2拆成三个子I帧I’1、I’2、I’3,将这三个子I帧分别利用3个P帧(即P1’、P2’、P3’)的剩余带宽传输,则对于第二视频采集周期内的I2以及P1’至P30’,传输的顺序依次为:P1’、I’1、P2’、I’2、P3’、I’3、P4’至P30’。第二视频采集周期内的视频帧的数据传输完成之后,再依次传输第三视频采集周期内的视频帧的数据,直至所有视频帧全部被传输完。对于图6中未示意出来的其他视频采集周期内的视频帧的数据,传输的顺序和第二视频采集周期类似,在此不再赘述。
步骤415:本地设备100-2的数据传输模块123将接收到的I帧和P帧发送给本地设备100-2的解码模块122。
步骤416:本地设备100-2的解码模块122基于预设的解码规则对接收到的I帧和P帧进行解码。
在一些实施例中,本地设备100-2的解码模块122在接收到由远端设备100-1发送的I帧和P帧之后,基于I帧和P帧之间的参考关系,将所有I帧独立解码,将第一视频采集周期内各个P帧参考该P帧相邻的前一帧进行解码;将第二视频采集周期以及之后的其他视频采集周期内的第N+1个P帧参考相应周期内的I帧进行解码,将第二视频采集周期以及之后的其他视频采集周期内其他P帧参考相邻的前一帧进行解码。具体地,例如,在图6所示的实施例中,本地设备100-2的解码模块122对第一视频采集周期内的I1帧进行独立解码,得到图像T1;将第一视频采集周期内的P1帧参考I1帧进行解码,得到图像T2;将P2帧参考P1帧进行解码,得到图像T3;将P3帧参考P2帧进行解码,得到图像T4;以此类推,将P29帧参考P28帧进行解码,得到图像T30。
本地设备100-2的解码模块122将第二视频采集周期内的P1’帧参考第一视频采集周期内的P29帧进行解码,得到得到图像T1’,用于进行实时画面显示;将P2’帧参考P1’帧进行解码,得到得到图像T2’;将P3’帧参考P2’帧进行解码,得到得到图像T3’;将I2帧独立解码,解码出的图像数据不显示,仅用于供P4’帧解码时参考;将P4’帧参考I2帧进行解码,得到得到图像T4’;将P5’帧(未图示)以及之后的各个P帧参考相邻的前一个P帧进行解码,分别得到图像T5’至图像T30’。
可以理解的是,由于第二视频采集周期内的I2帧是被切分成I1’、I2’、I3’之后,再分别利用P1’、P2’、P3’剩余的传输带宽进行传输的。因此,本地设备100-2的解码模块122是在接收到I1’、I2’、I3’之后,才能对由I1’、I2’、I3’构成的I2帧进行解码。此外,由于第二视频采集周期内的P4’帧是参考I2帧进行解码的,因此,本地设备100-2需要完成对I2帧所有数据的接收之后,才能解码P4’帧。并且,由于I2帧携带了一帧图像的全部信息,因此参考I2帧解码P4’帧,解码出的P4’帧对应的图像T4’的画质得到了提高。同样地,由于P5’帧(未图示)以及之后的各个P帧参考相邻的前一个P帧进行解码,因此,由于P4’帧对应的图像T4’的画质得到了提高,使得P5’帧(未图示)以及之后的各个P帧解码出的图像的画质也得到了提高。
对于图6中未示意出的其他视频采集周期中的I帧和P帧的解码方法与第二视频采集周期类似,在此不再赘述。
步骤417:本地设备100-2的解码模块122将解码出的视频帧经由相机服务模块121发送给相机应用127。
步骤418:本地设备100-2的相机应用127在接收到解码出的视频帧之后进行视频播放。
其中,I帧解码出的视频帧包括了原始视频流中相应的一帧图像的全部信息,P帧解码出的视频帧包括的是原始视频流中相应的一帧图像和前一帧图像的差值信息。因此,I帧解码出的视频帧画面质量高,画面信息丰富,P帧解码出的视频帧相对于I帧来说,视频帧的画面质量较差,但是P帧的数据量小,因此,可以采用P帧解码出的视频帧来进行实时画面的显示,避免画面卡顿。
在一些实施例中,由于I帧的数据量较大,有可能出现本地设备100-2在刚开始显示接收到的视频帧时,首个I帧还未完成显示,接着又收到了多个P帧,即出现视频帧拥挤的情况。为了解决这个技术问题,本地设备100-2可以快速将接收到的多个视频帧在显示屏上进行刷新覆盖,或者直接丢弃受首个I帧影响的P帧,用户无感知。
下面将分别对上述图4的交互图中涉及的远端设备100-1的编码模块113的编码方案、远端设备100-1的数据传输模块114的传输方案以及本地设备100-2的解码模块122的解码方案进行详细介绍。
首先介绍远端设备100-1的编码模块113的编码方案,如图7所示,远端设备100-1的编码模块113的编码方案的流程图包括以下步骤:
步骤700:远端设备100-1的编码模块113接收原始视频流。
例如,远端设备100-1的编码模块113接收到如图6所示的原始视频流,包括第一视频采集周期内的30帧图像:S1-S30、第二视频采集周期内的30帧图像S1’-S30’以及图6未示出的其他视频采集周期内的多帧图像。
步骤701:远端设备100-1的编码模块113判断当前接收到的一帧图像是否属于第一视频采集周期,若是,则表明当前接收到的一帧图像属于第一视频采集周期,进入步骤702,否则进入步骤703。
例如,在一些实施例中,远端设备100-1的编码模块113可以对接收到的图像进行计数,假设相机模块112是按照每秒钟30帧的帧率采集图像,一秒钟为一个视频采集周期,则当编码模块113的计数小于或等于30时,表明当前接收到的一帧图像为相机模块112在第一个视频采集周期内采集的图像。当编码模块113的计数大于30时,表明当前接收到的一帧图像为相机模块112在第一个视频采集周期之后的其他视频采集周期内采集的图像。
步骤702:远端设备100-1的编码模块113将该帧图像编码生成I帧或P帧。若该帧图像为首帧图像,则将该帧图像编码生成I帧;若该帧图像为非首帧图像,则将该帧图像编码生成P帧。
具体地,例如,远端设备100-1的编码模块113将首帧图像的全部信息直接按照H.261、H.263、H.264等标准压缩编码成I帧;远端设备100-1的编码模块113将非首帧图像和相邻前一帧图像的差值信息按照H.261、H.263、H.264等标准压缩编码成P帧。通过周期性的编码生成I帧,可以提升画面质量,P帧可以用于实时画面显示,避免画面卡顿。
步骤703:远端设备100-1的编码模块113判断当前接收到的一帧图像是否为其他频采集周期内的首帧图像,若是,则表明该帧图像为除了第一视频采集周期以外的其他视频采集周期内的首帧图像,进入步骤704;否则进入步骤705。
例如,在一些实施例中,远端设备100-1的编码模块113可以对接收到的图像进行计数,假设相机模块112是按照每秒钟30帧的帧率采集视频帧,一秒钟为一个视频采集周期,则当编码模块113的计数为M*30+1时,表明当前接收到的一帧图像为相机模块112在第一个视频采集周期之后的其他视频采集周期内采集的首帧图像。其中,M为大于0的正整数。
步骤704:远端设备100-1的编码模块113将该帧图像同时编码生成I帧和P帧。具体地,编码模块113将该帧图像的全部信息编码生成I帧,将该帧图像和相邻前一帧图像的差值信息编码生成P帧。
例如,该帧图像为如图6所示的第二视频采集周期内的图像S1’,则将S1’的全部信息单独编码成I2帧;将S1’和第一视频采集周期内的图像S30的差值编码生成P1’帧。
步骤705:远端设备100-1的编码模块113将该帧图像编码生成P帧。
其中,需要说明的是,对于除了第一视频采集周期以外的其他视频采集周期内的非首帧图像,需要参考步骤409中的方法计算出N值,将前述非首帧图像中的第N+1帧图像和同一视频采集周期内的第一帧图像的差值编码成P帧,将前述非首帧图像中除了第N+1帧图像以外的其他图像和相邻的前一帧图像的差值编码成P帧。其中,将除了第一视频采集周期以外的其他视频采集周期内I帧之后的第N+1个P帧参考对应的I帧进行编码,可以进一步提升视频的画质。
下面将介绍远端设备100-1的数据传输模块114的传输方案,如图8所示,远端设备100-1的数据传输模块114的传输方案的流程图包括以下步骤:
步骤800:远端设备100-1的数据传输模块114接收编码得到的I帧和P帧。
步骤801:远端设备100-1的数据传输模块114判断接收到的数据是否为第一视频采集周期内的I帧或P帧。如果是,则表明当前接收到的数据为第一视频采集周期内的I帧或P帧,进入步骤802,否则进入步骤803。
在一些实施例中,远端设备100-1的编码模块113可以在编码生成I帧和P帧时,在I帧和P帧中加入相应的标签信息,以指示编码得到的一帧数据是I帧还是P帧,以及该帧数据属于哪一个视频采集周期。
在一些实施例中,编码模块113还可以在I帧和P帧中加入相应的序列号,以便确定I帧和P帧在编码模块113输出的码流中的顺序。
在一些实施例中,数据传输模块114可以根据I帧和P帧携带的上述标签信息和序列号,判断当前要发送的数据是否为第一视频采集周期内的I帧或P帧。
步骤802:远端设备100-1的数据传输模块114先发送I帧,再发送P帧。可以理解的是,由于视频数据流是实时产生的,相应地,编码、传输以及解码的操作也是随着视频数据流的产生而实时进行的。因此,对于第一视频采集周期内的I帧以及各个P帧,通常情况下,先编码得到的I帧被优先发送,随后的各个P帧按照编码的顺序依次发送。
步骤803:远端设备100-1的数据传输模块114判断接收到的数据是否为其他视频采集周期内的I帧。如果是,则表明数据传输模块114接收到的数据为除了第一视频采集周期以外的其他视频采集周期内的I帧,进入步骤804;否则进入步骤805。
在一些实施例中,数据传输模块114可以根据接收到的压缩编码后的视频数据携带的上述标签信息和序列号,判断接收到的数据是否为其他视频采集周期内的I帧。
步骤804:远端设备100-1的数据传输模块114将I帧利用该视频采集周期内前N个P帧的剩余带宽进行发送。
例如,在一些实施例中,数据传输模块114根据当前接收到的数据中携带的上述标签信息和序列号,确定当前接收到的数据为除了第一视频采集周期以外的其他视频采集周期内的I帧的情况下,由于P帧的数据量较小,I帧的数据量较大,因此,在传输I帧时,可以将I帧的数据利用同一视频采集周期内的前N个P帧的剩余带宽进行传输。具体可参考步骤414,在此不再赘述。将数据量较大的I帧利用数据量较小的N个P帧的剩余带宽来传输,使得远端设备100-1向本地设备100-2传输的视频码流中的码率比较平稳,可以减少由于相关技术方案中将各个I帧的全部数据作为一个整体单独传输时,导致由于远端设备100-1向本地设备100-2传输的视频码流中的码率不稳定,而在本地设备100-2播放解码出的视频时存在的画面抖动问题。
步骤805:远端设备100-1的数据传输模块114直接发送P帧。即在数据传输模块114判断当前要发送的数据为除了第一视频采集周期以外的其他视频采集周期内的P帧的情况下,直接发送该P帧。
在一些实施例中,数据传输模块114根据当前要发送的数据中携带的上述标签信息和序列号,判断当前要发送的数据为在第一视频采集周期之后的其他视频采集周期内的前N个P帧中的其中一个P帧的情况下,将P帧以及该P帧所在的视频采集周期内的I帧的部分数据一起发送出去。
在一些实施例中,数据传输模块114根据当前要发送的数据中携带的上述标签信息和序列号,确定当前要发送的数据为第一视频采集周期之外的其他视频采集周期内的第N+1个P帧或该第N+1个P帧之后的其他P帧的情况下,可以直接发送该P帧。由于P帧数据量较小,远端设备100-1直接发送P帧,可以使本地设备100-2及时接收到数据量较小的P帧,快速地将P帧解码、显示,避免画面卡顿。
此外,为了便于使本地设备100-2在接收到远端设备100-1发送的多个I帧和P帧时,能够快速确定出各个I帧和P帧之间的参考关系,从而对各个I帧和P帧正确解码。编码模块113还可以在编码得到的各个I帧和P帧中添加参考关系标识信息,以标记各个I帧和P帧在编码时的参考关系,尤其需要标记出除了第一视频采集周期以外的其他视频采集周期内的第N+1个P帧在编码时的参考关系。远端设备100-1的数据传输模块114在向本地设备100-2发送I帧和P帧的数据时,还需要把上述参考关系标识信息发送给本地设备100-2。具体可以参考上述步骤413,在此不再赘述。
下面将详细介绍本地设备100-2的解码模块122的解码方案,如图9所示,本地设备100-2的解码模块122的解码方案的流程图包括以下步骤:
步骤900:本地设备100-2的解码模块122接收到由远端设备100-1发来的压缩编码后的视频数据流。
在一些实施例中,该视频数据流中包括远端设备100-1编码生成的多个I帧和P帧,以及用于指示当前接收到的数据是I帧还是P帧的标签信息、用于确定当前接收到的数据在编码模块113输出的码流中的顺序的序列号、用于指示接收到的I帧和P帧在编码时的参考关系的参考关系标识信息等。
步骤901:判断当前要解码的数据是否属于第一视频采集周期。如果是,则表明当前要解码的数据属于第一视频采集周期,进入步骤902,否则进入步骤903。
在一些实施例中,由于远端设备100-1发送给本地设备100-2的视频数据流中包括远端设备100-1编码生成的多个I帧和P帧,以及用于指示当前接收到的数据属于哪一个视频采集周期的标签信息。因此,本地设备100-2的解码模块122可以基于接收到的前述标签信息来确定当前要解码的数据是否属于第一视频采集周期。
步骤902:本地设备100-2的解码模块122将I帧独立解码,将P帧参考相邻前一帧进行解码。
可以理解的是,由于I帧是对一帧图像独立压缩的,并且包括一帧图像的全部信息,因此,I帧的解码无需参考其他帧,将I帧单独进行解码,即可得到一帧图像的全部信息。而第一视频采集周期内的P帧是参考相邻前一帧进行编码的,因此在解码时,P帧需要参考相邻前一帧进行解码。
在一些实施例中,由于远端设备100-1发送给本地设备100-2的数据中包括远端设备100-1编码生成的多个I帧和P帧,以及用于指示接收到的I帧和P帧在编码时的参考关系的参考关系标识信息。因此,在本地设备100-2的解码模块122判断当前要解码的数据为I帧的情况下,可以根据上述参考关系标识信息,确定出在对该I帧进行解码时,可以对该I帧进行独立解码,将P帧参考相邻前一帧进行解码。例如,解码模块122将该I帧或P帧按照H.264标准进行独立解码。
步骤903:本地设备100-2的解码模块122判断当前要解码的数据是否为其他视频采集周期内的第N+1个P帧。如果是,则表明当前要解码的数据为除了第一视频采集周期以外的其他视频采集周期内的第N+1个P帧,进入步骤904,否则进入步骤905。
在一些实施例中,由于远端设备100-1发送给本地设备100-2的视频帧中包括远端设备100-1编码生成的多个I帧和P帧,以及用于指示当前接收到的数据是I帧还是P帧的标签信息、用于确定当前接收到的数据在编码模块113输出的码流中的顺序的序列号。因此,本地设备100-2的解码模块122可以根据上述标签信息来确定当前要解码的数据是否为P帧,并且根据上述序列号来确定当前要解码的数据所属的视频采集周期以及在该视频采集周期内的顺序。
步骤904:本地设备100-2的解码模块122参考该P帧所在的视频采集周期内的I帧对该P帧进行解码。
例如,本地设备100-2的解码模块122将图6所示的P4’帧参考I2帧进行解码,得到得到图像T4’。
在一些实施例中,由于远端设备100-1发送给本地设备100-2的数据中包括远端设备100-1编码生成的多个I帧和P帧,以及用于指示接收到的I帧和P帧在编码时的参考关系的参考关系标识信息。因此,在本地设备100-2的解码模块122判断当前要解码的数据为第一个视频采集周期之后的其他视频采集周期内的第N+1个P帧的情况下,可以根据上述参考关系标识信息,确定出在对该第N+1个P帧进行解码时,需要参考该第N+1个P帧所在的视频采集周期内的I帧对该第N+1个P帧进行解码。由于I帧携带有一帧图像的全部信息,而P帧只携带有一帧图像和上一帧图像之间的差值信息,因此,相比较于将前述第N+1个P帧参考与其相邻的前一个P帧(即第N个P帧)进行解码的方案,参考I帧对前述第N+1个P帧进行解码,可以使解码出的图像质量更高。
步骤905:本地设备100-2的解码模块122将I帧独立解码,将P帧参考相邻的前一帧进行解码。
例如,本地设备100-2的解码模块122将如图6所示的第二视频采集周期内的I2帧独立解码,解码出的图像数据不显示,仅用于供P4’帧解码时参考。并且将第二视频采集周期内的P1’帧参考第一视频采集周期内的P29帧进行解码,得到得到图像T1’,用于进行实时画面显示;将P2’帧参考P1’帧进行解码,得到得到图像T2’;将P3’帧参考P2’帧进行解码,得到得到图像T3’;将P5’帧(未图示)以及之后的各个P帧参考相邻的前一个P帧进行解码,分别得到图像T5’至图像T30’。
此外,需要说明的是,由于第二视频采集周期内的I2帧是被切分成I1’、I2’、I3’,然后分别利用P1’、P2’、P3’剩余的传输带宽进行传输的。因此,本地设备100-2的解码模块122是在接收到I1’、I2’、I3’之后,才能对I1’、I2’、I3’构成的I2帧进行解码。基于以上对本申请技术方案中对远端设备100-1的编码方案、传输方案以及本地设备100-2的解码方案等的介绍,下面将结合视频拍摄的分布式实现方式,例如图10所示的体育直播场景和图12所示的无人机拍摄场景中涉及的分布式视频拍摄方案,对本申请的技术方案进行进一步地介绍。
首先,针对图10所示的体育直播场景,体育赛场上的手机100-1为远端设备100-1。手机100-1在实时拍摄体育赛事的视频,例如,拍摄跳水运动员跳水比赛的高清特写视频,并且将实时拍摄的体育赛事视频采用本申请提供技术方案进行编码、标记等处理之后,传输给解说员使用的安装有体育直播应用的手机100-2,以供解说员使用手机100-2对手机100-1发来的体育赛事的视频进行实时直播解说。其中,手机100-2可以采用本申请提供的技术方案,对手机100-1发来的经过编码、标记等处理之后的体育赛事的视频进行解码,并将解码出的体育赛事的视频显示在手机100-2的体育直播应用上,供用户观看。
具体地,参考图11,图10中所示的手机100-2和手机100-1在执行本申请的技术方案时的交互流程包括以下步骤:
步骤1101:手机100-2响应于解说员在体育直播应用中选择连接手机100-1进行拍摄的操作,生成手机100-1的视频拍摄指令。
例如,解说员点击手机100-2桌面的体育直播应用,并在体育直播应用中选择外接手机100-1进行视频拍摄,手机100-2响应于解说员的点击操作,生成手机100-1的视频拍摄指令。
步骤1102:手机100-2向手机100-1发送视频拍摄指令。手机100-2可以参考前述图4中的步骤402至步骤403,通过手机100-2的相机服务模块121向手机100-1的相机代理模块111发送视频拍摄指令,在此不再赘述。
步骤1103:手机100-1响应于接收到的视频拍摄指令,进行视频拍摄。
例如,手机100-1在接收到手机100-2发来的视频拍摄指令后,手机100-1的相机代理模块111可以对接收到的视频拍摄指令进行解析,生成开启拍摄功能的指令,并发送给手机100-1的相机模块112,相机模块112响应于该指令,开启拍摄功能,采集体育赛事的视频。
步骤1104:手机100-1将拍摄的视频基于预设的编码规则进行编码,生成I帧、P帧,并将生成的I帧、P帧进行标记。
例如,在一些实施例中,手机100-1的编码模块113将拍摄的体育赛事视频中的首帧图像编码成I帧,并且在首帧图像之后的其他图像中周期性地选择一张图像同时编码成I帧和P帧,剩余的图像全部编码成P帧。其中,各个图像的编码方案、编码时的参考关系以及编码得到的I帧、P帧具体如何标记。具体编码规则可以参考上述图4中的步骤408至步骤412以及图7中的相关描述,在此不再赘述。
步骤1105:手机100-1按照设定的传输规则向手机100-2发送标记好的I帧、P帧。
在一些实施例中,手机100-1首先发送首个I帧,之后按照编码模块113生成的各个P帧的顺序依次传输各个P帧。特别地,手机100-1将首个I帧之后的其他I帧拆分成多个子I帧,然后将拆分得到的多个子I帧和对应的I帧相邻的后N个P帧一起传输,即利用该N个P帧的剩余带宽来传输首个I帧之后的其他I帧的数据。如此,可以避免在传输数据量较大的I帧和多个数据量较小的P帧时,网络中的码率不稳定,而使手机100-2播放的体育直播视频的画质抖动的问题。具体传输规则体请参考图4中的步骤414以及图8中的相关描述,在此不再赘述。
步骤1106:手机100-2基于预设的解码规则对接收到的I帧、P帧进行解码。在一些实施例中,手机100-2可以通过手机100-1发来的用于指示接收到的I帧和P帧在编码时的参考关系的参考关系标识信息,来进行解码,以得到解码出的体育赛事的视频。其中,P帧解码出的图像用于实时显示,I帧解码出的图像用于保证视频的画质。
可以理解的是,由于除了首个I帧以外的其他I帧是利用P帧的剩余带宽来传输的,P帧大小相近且P帧数据量比较小,使得手机100-2接收到的视频码流的数据量比较稳定。可以减少直接将除首个I帧以外的其他I帧整体传输时,由于I帧的数据量较大,导致的视频码流的码流不稳定,而产生的实时画面抖动问题。具体解码规则可以参考图4中的步骤416以及图9中的相关描述,在此不再赘述。
步骤1107:手机100-2将解码出的对端视频画面和本机画面一起在体育直播应用中进行播放。
例如,解码出的对端视频画面为手机100-1拍摄的体育赛事的视频画面,本机画面为手机100-2生成的包含解说员解说该体育赛事的视频画面,手机100-2将解码出的体育赛事的视频画面和包含解说员解说该体育赛事的视频画面,一起组成手机100-2的显示界面,在体育直播应用中进行显示。
通过上述描述可知,手机100-2通过本申请的技术方案对手机100-1发来的经过编码、标记等处理之后的体育赛事的视频进行解码之后,得到的体育赛事视频画面抖动小,且画质较高,使得用户在通过体育直播应用观看到解说员的解说视频时,看到的体育赛事的视频画质高,提升用户体验。
下面将结合图12所示的无人机拍摄场景,对本申请的技术方案进行进一步地介绍。
在图12所示的无人机拍摄场景中,无人机100-1为远端设备100-1,计算机100-2为本地设备100-2。无人机100-1将拍摄的某景区的风景的视频实时发送给计算机100-2,计算机100-2通过短视频应用播放无人机100-1拍摄的某景区的风景的视频。
具体地,参考图13,图12中所示的计算机100-2和无人机100-1在执行本申请的技术方案时的交互流程包括以下步骤:
步骤1301:计算机100-2响应于用户在短视频应用中选择连接无人机100-1进行拍摄的操作,生成无人机100-1的视频拍摄指令。
例如用户点击计算机100-2桌面的短视频应用,并在短视频应用中选择外接无人机100-1进行视频拍摄,计算机100-2响应于用户的点击操作,生成无人机100-1的视频拍摄指令。
步骤1302:计算机100-2向无人机100-1发送视频拍摄指令。计算机100-2可以参考前述图4中的步骤402至步骤403,通过计算机100-2的相机服务模块121向无人机100-1的相机代理模块111发送视频拍摄指令,在此不再赘述。
步骤1303:无人机100-1响应于接收到的视频拍摄指令,进行视频拍摄。
例如,无人机100-1在接收到计算机100-2发来的视频拍摄指令后,无人机100-1的相机代理模块111可以对接收到的视频拍摄指令进行解析,生成开启拍摄功能的指令,并发送给无人机100-1的相机模块112,相机模块112响应于该指令,开启拍摄功能,拍摄某景区的风景视频。
步骤1304:无人机100-1将拍摄的视频画面基于预设的编码规则进行编码,生成I帧、P帧,并将生成的I帧、P帧进行标记。
例如,在一些实施例中,无人机100-1的编码模块113将拍摄的某景区的风景视频画面中的首帧图像编码成I帧,并且在首帧图像之后的其他图像中周期性地选择一张图像同时编码成I帧和P帧,剩余的图像全部编码成P帧。其中,各个图像的编码方案、编码时的参考关系以及编码得到的I帧、P帧具体如何标记。具体编码规则可以参考上述图4中的步骤408至步骤412以及图7中的相关描述,在此不再赘述。
步骤1305:无人机100-1按照设定的传输规则向计算机100-2发送标记好的I帧、P帧。
在一些实施例中,无人机100-1首先发送首个I帧,之后按照编码模块113生成的各个P帧的顺序依次传输各个P帧。特别地,无人机100-1将首个I帧之后的其他I帧拆分成多个子I帧,然后将拆分得到的多个子I帧和对应的I帧相邻的后N个P帧一起传输,即利用该N个P帧的剩余带宽来传输首个I帧之后的其他I帧的数据。如此,可以避免由于I帧的数据量较大,而造成的网络中的码率不稳定,而使计算机100-2播放的某景区的风景视频的画质抖动的问题。具体传输规则体请参考图4中的步骤414以及图8中的相关描述,在此不再赘述。
步骤1306:计算机100-2基于预设的解码规则对接收到的I帧、P帧进行解码。
在一些实施例中,计算机100-2可以通过无人机100-1发来的用于指示接收到的I帧和P帧在编码时的参考关系的参考关系标识信息,来进行解码,以得到解码出的某景区的风景视频。其中,P帧解码出的图像用于实时显示,I帧解码出的图像用于保证视频的画质。
可以理解的是,由于除了首个I帧以外的其他I帧是利用P帧的剩余带宽来传输的,P帧大小相近且P帧数据量比较小,使得计算机100-2接收到的视频码流的数据量比较稳定。可以减少直接将除首个I帧以外的其他I帧整体传输时,由于I帧的数据量较大,导致的视频码流的码流不稳定,而产生的实时画面抖动问题。具体解码规则可以参考图4中的步骤416以及图9中的相关描述,在此不再赘述。
步骤1307:计算机100-2将解码出的对端视频画面在短视频应用中进行播放。其中,对端视频画面即为无人机100-1响应于计算机100-2的视频拍摄指令,拍摄的视频画面。
例如,在一些实施例中,无人机100-1响应于计算机100-2的视频拍摄指令,拍摄涉及某景区的风景视频画面。则计算机100-2将解码出的涉及某景区的风景视频画面在在短视频应用中进行播放。
通过上述描述可知,计算机100-2通过本申请的技术方案对无人机100-1发来的经过编码、标记等处理之后的某景区的风景视频进行解码之后,得到的某景区的风景视频画面抖动小,且画质较高,使得用户在通过短视频应用观看某景区的风景视频时,视频画质高,提升用户体验。
图14示出了本地设备100-2的硬件结构框图,本地设备100-2包括处理器1401、电源1404,网络单元1402、显示单元1403以及视频解码器1406。
其中,处理器1401可以包括一个或多个处理单元,处理器1401可以执行本申请提供的视频码流的处理方法。电源1404用于为处理器1401、网络单元1402、显示单元1403以及视频解码器1406供电。网络单元1402用于和远端设备100-1进行通信。视频解码器1406用于采用本申请提供的解码方案对从远端设备100-1接收到压缩编码后的I帧和P帧进行解码。显示单元1403用于显示视频解码器1406采用本申请提供的解码方案解码出的视频流。
可以理解的是,图14所示的结构图,并不构成对本地设备100-2的具体限定。在本申请另一些实施例中,本地设备100-2可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
图15示出了远端设备100-1的硬件结构框图,远端设备100-1包括处理器1501、电源1504,网络单元1502、相机单元1403以及视频编码器1506。
处理器1501可以包括一个或多个处理单元,处理器1501可以执行本申请提供的视频码流的处理方法。电源1504用于为处理器1501、网络单元1502、相机单元1403以及视频编码器1506供电。网络单元1502用于和本地设备100-2进行通信。相机单元1403用于响应本地设备100-2发来的视频拍摄指令,拍摄原始视频流。视频编码器1506用于采用本申请提供的编码方案对相机单元1403拍摄的原始视频流进行压缩编码,得到多个I帧和P帧。
可以理解的是,图15所示的结构图,并不构成对远端设备100-1的具体限定。在本申请另一些实施例中,远端设备100-1可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
图16示出了本申请提供的一例电子设备100的硬件结构框图。电子设备100能够执行本申请实施例提供的码流的处理方法。在图16中,相似的部件具有同样的附图标记。如图16所示,电子设备100可以包括处理器110、电源模块140、存储器180、摄像头170、移动通信模块130、无线通信模块120、传感器模块190、音频模块150、接口模块160、显示屏102以及视频编码器103、视频解码器104等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如,可以包括中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、微处理器(Micro-programmed Control Unit,MCU)、人工智能(Artificial Intelligence,AI)处理器或可编程逻辑器件(Field ProgrammableGate Array,FPGA)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,在本申请的一些实例中,处理器110可以基于当前远端设备100-1传输网络的实时带宽,以及预估的各个非首个I帧(除了第一视频采集周期以外的其他视频采集周期内的I帧)和P帧的数据量大小,计算出各个I帧需要拆分成N个数据块,和N个P帧一起传输(由于P帧的数据量一般比较小,传输P帧时,网络带宽有余量,利用传输P帧时的剩余带宽来传输)。
存储器180可用于存储数据、软件程序以及模块,可以是易失性存储器(VolatileMemory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(FlashMemory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,或者也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡。具体的,存储器180可以包括程序存储区1801和数据存储区1802。程序存储区1801内可存储程序代码,该程序代码用于使处理器110通过执行该程序代码,执行本申请实施例提供的视频码流的处理方法。在申请实施例中,数据存储区1802可以用于存储远端设备100-1编码生成的多个I帧和P帧,以及用于指示当前接收到的视频帧是I帧还是P帧的标签信息、用于确定当前接收到的视频帧在编码模块113输出的码流中的顺序的序列号、用于指示接收到的I帧和P帧在编码时的参考关系的参考关系标识信息等。
电源模块140可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器110。
移动通信模块130可以包括但不限于天线、功率放大器、滤波器、低噪声放大器(Low Noise Amplify,LNA)等。移动通信模块130可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块130可以由天线接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块130还可以对经调制解调处理器调制后的信号放大,经天线转为电磁波辐射出去。在一些实施例中,移动通信模块130的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块130至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块120可以包括天线,并经由天线实现对电磁波的收发。无线通信模块120可以提供应用在电子设备100上的包括无线局域网(Wireless Local Area Networks,WLAN)(如无线保真(Wireless Fidelity,Wi-Fi)网络),蓝牙(Bluetooth,BT),全球导航卫星系统(Global Navigation Satellite System,GNSS),调频(Frequency Modulation,FM),近距离无线通信技术(Near Field Communication,NFC),红外技术(Infrared,IR)等无线通信的解决方案。电子设备100可以通过无线通信技术与网络以及其他设备进行通信。
在一些实施例中,电子设备100的移动通信模块130和无线通信模块120也可以位于同一模块中。
摄像头170用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给ISP(Image Signal Processor,图像信号处理器)转换成数字图像信号。电子设备100可以通过ISP,摄像头170,视频编解码器,GPU(Graphic Processing Unit,图形处理器),显示屏102以及应用处理器等实现拍摄功能。例如,在本申请的一些实施例中,当电子设备100为远端设备时,电子设备100可以响应于本地设备发送的视频拍摄指令,控制摄像头170开启拍摄功能,拍摄原始视频流。
显示屏102包括显示面板。显示面板可以采用液晶显示屏(Liquid CrystalDisplay,LCD),有机发光二极管(Organic Light-emitting Diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(Active-matrix Organic Lght-emitting Diode的,AMOLED),柔性发光二极管(Flex Light-emitting Diode,FLED),Mini LED,Micro LED,Micro OLED,量子点发光二极管(Quantum Dot Light-emitting Diodes,QLED)等。例如,在本申请的一些实施例中,当电子设备100为本地设备时,显示屏102用于显示电子设备100接收到的由远端设备发送的视频的画面。
传感器模块190可以包括接近光传感器、压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
音频模块150可以将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。音频模块150还可以用于对音频信号编码和解码。在一些实施例中,音频模块150可以设置于处理器110中,或将音频模块150的部分功能模块设置于处理器110中。在一些实施例中,音频模块150可以包括扬声器、听筒、麦克风以及耳机接口。例如,在本申请的一些实施例中,当电子设备100为本地设备时,音频模块150用于播放由远端设备发送的视频中的数字音频信息转换成模拟音频信号输出。
接口模块160包括外部存储器接口、通用串行总线(Universal Serial Bus,USB)接口及用户标识模块(Subscriber Identification Module,SIM)卡接口等。其中外部存储器接口可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口与处理器110通信,实现数据存储功能。通用串行总线接口用于电子设备100和其他手机进行通信。用户标识模块卡接口用于与安装至电子设备100的SIM卡进行通信,例如读取SIM卡中存储的电话号码,或将电话号码写入SIM卡中。
视频编码器103用于根据本申请提供的编码方案,采用例如H.264标准对电子设备100拍摄的原始视频流进行编码,得到分别对应于原始视频流中各帧图像的多个I帧和P帧。
视频解码器104用于根据本申请提供的编码方案,采用例如H.264标准对电子设备100接收到的由外接电子设备发来的多个I帧和P帧进行编码,得到解码出的视频流中的各帧图像。
在一些实施例中,电子设备100还包括按键、马达以及指示器等。其中,按键可以包括音量键、开/关机键等。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

Claims (20)

1.一种视频码流的处理方法,其特征在于,包括:
第一电子设备采集原始视频;
所述第一电子设备将所述原始视频进行编码,得到至少一个I帧和与所述I帧存在参考关系的多个P帧;
所述第一电子设备将基于得到的至少一个I帧和与所述I帧存在参考关系的多个P帧构成的目标码流发送给第二电子设备,其中,所述目标码流中的至少部分I帧被拆分成N个子I帧,N为大于或等于1的正整数;
所述第二电子设备将从所述第一电子设备接收到的所述目标码流进行解码,得到目标视频,并播放所述目标视频。
2.根据权利要求1所述的方法,其特征在于,所述原始视频包括多个原始图像组,
所述第一电子设备将所述原始视频进行编码,得到至少一个I帧和与所述I帧存在参考关系的多个P帧,包括:
所述第一电子设备将所述原始视频的第一原始图像组中的首帧图像编码生成I帧,并且将所述第一原始图像组中除首帧图像以外的其他图像编码生成P帧,得到第一目标图像组;
所述第一电子设备将所述原始视频中除了第一原始图像组以外的其他原始图像组中的首帧图像编码生成I帧和P帧,将所述其他原始图像组中除了首帧图像以外的其他图像编码生成P帧,得到其他目标图像组。
3.根据权利要求2所述的方法,其特征在于,所述第一电子设备将所述原始视频的第一原始图像组中的首帧图像编码生成I帧,并且将所述第一原始图像组中除首帧图像以外的其他图像编码生成P帧,包括:
所述第一电子设备将所述原始视频的第一原始图像组中的首帧图像独立编码生成I帧;并且,
所述第一电子设备将所述第一原始图像组中除首帧图像以外的其他图像中的每一帧图像和相邻前一帧图像的差值编码生成P帧。
4.根据权利要求2所述的方法,其特征在于,所述第一电子设备将所述原始视频中除了第一原始图像组以外的其他原始图像组中的首帧图像编码生成I帧和P帧,将所述其他原始图像组中除了首帧图像以外的其他图像编码生成P帧,包括:
所述第一电子设备将所述原始视频中除了第一原始图像组以外的其他原始图像组中的首帧图像独立编码生成I帧,并且将所述首帧图像和相邻前一帧图像的差值编码生成P帧;
所述第一电子设备分别将所述其他原始图像组中各个原始图像组的第N+1帧图像和首帧图像的差值编码生成P帧;并且,
所述第一电子设备将所述其他原始图像组的各个原始图像组中除了首帧图像和第N+1帧图像之外的其他图像和相邻前一帧图像的差值编码生成P帧。
5.根据权利要求2所述的方法,其特征在于,所述第一电子设备将基于得到的至少一个I帧和与所述I帧存在参考关系的多个P帧构成的目标码流发送给第二电子设备,包括:
所述第一电子设备将所述其他目标图像组中的I帧拆分成N个子I帧,并且,
所述第一电子设备将所述第一目标图像组中的I帧和与所述I帧存在参考关系的P帧、所述其他目标图像组中拆分得到的子I帧、与拆分前的I帧存在参考关系的P帧构成的目标码流发送给第二电子设备。
6.根据权利要求5所述的方法,其特征在于,所述第一电子设备将所述第一目标图像组中的I帧和与所述I帧存在参考关系的P帧、所述其他目标图像组中拆分得到的子I帧、与拆分前的I帧存在参考关系的P帧构成的目标码流发送给第二电子设备,包括:
所述第一电子设备发送第一目标图像组中的I帧,在确定所述第一目标图像组中的I帧发送完成的情况下,发送第一目标图像组中的多个P帧;
在确定所述第一目标图像组中所述多个P帧发送完成的情况下,发送所述其他目标图像组中的前N个P帧和I帧拆分成的所述N个子I帧,其中,所述N个子I帧中的每一个子I帧分别位于所述前N个P帧中每一个P帧之后;
在确定其他目标图像组中的所述前N个P帧和I帧拆分成的所述N个子I帧发送完成的情况下,发送其他目标图像组中的其他P帧。
7.根据权利要求2所述的方法,其特征在于,所述第二电子设备将从第一电子设备接收到的所述目标码流进行解码,包括:
所述第二电子设备将从所述第一电子设备接收到的所述目标码流中的第一目标图像组的I帧独立解码,将第一目标图像组中的P帧参考相邻前一帧目标图像进行解码;并且,
所述第二电子设备将所述目标码流中其他目标图像组的I帧独立解码,将其他目标图像组中每一个目标图像组的第N+1个P帧参考同一目标图像组的I帧进行解码,将其他目标图像组中每一个目标图像组中除了第N+1个P帧以外的其他P帧参考相邻的前一帧目标图像进行解码。
8.根据权利要求2所述的方法,其特征在于,还包括:
所述第一电子设备确定出每个目标图像组中的I帧和P帧的参考关系,并且将表征每个所述目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给所述第二电子设备。
9.根据权利要求8所述的方法,其特征在于,每个所述目标图像组中的I帧和/或P帧包括所述参考关系标识信息,
所述将表征每个所述目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给所述第二电子设备,包括:
通过将包括所述参考关系标识信息的I帧和/或P帧发送给所述第二电子设备,实现将表征每个所述目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给所述第二电子设备。
10.根据权利要求8所述的方法,其特征在于,所述将表征每个所述目标图像组中的I帧和P帧的参考关系的参考关系标识信息发送给所述第二电子设备,包括:
将表征每个所述目标图像组中的I帧和P帧的参考关系的参考关系标识信息,通过携带有I帧和/或P帧的报文的扩展字段发送给所述第二电子设备。
11.根据权利要求8至10任一项所述的方法,其特征在于,所述每个所述目标图像组中的I帧和P帧的参考关系的参考关系标识信息包括:用于表征所述P帧编码和解码时所参考的I帧或P帧的参考关系标识信息。
12.根据权利要求8至11任一项所述的方法,其特征在于,还包括:
所述第二电子设备基于从所述第一电子设备接收到的所述参考关系标识信息,对从所述第一电子设备接收到的所述目标码流进行解码。
13.根据权利要求1至12任一项所述的方法,其特征在于,还包括:
所述第一电子设备确定出当前网络总带宽、发送P帧数据占用的带宽以及I帧的数据量;并且,
所述第一电子设备基于确定出的当前网络总带宽、发送P帧数据传输占用的带宽以及I帧的数据量的至少一个,确定出N的数值。
14.根据权利要求13所述的方法,其特征在于,所述第一电子设备通过以下公式计算出N的数值:
Figure FDA0003141499730000031
其中,BWtotal为当前网络总带宽;BWp为发送P帧数据占用的带宽;Isize为I帧数据量,FPS为第一电子设备采集视频的帧率,C为一个常量。
15.根据权利要求1至14所述的方法,其特征在于,所述第一电子设备采集原始视频,包括:
第二电子设备响应于用户在所述第二电子设备中选择连接第一电子设备进行视频拍摄的操作,产生第一电子设备的视频拍摄指令;
所述第一电子设备响应于所述视频拍摄指令,采集原始视频流。
16.根据权利要求1至15任一项所述的方法,其特征在于,所述第一电子设备将所述原始视频进行编码,得到至少一个I帧和与所述I帧存在参考关系的多个P帧,包括:
所述第一电子设备基于H.261、H.263以及H.264编码标准中的其中一种,将所述原始视频进行编码,得到至少一个I帧和与所述I帧存在参考关系的多个P帧。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,该指令在电子设备上执行时使电子设备执行权利要求1-16中任一项所述的方法。
18.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,所述指令用于实现如权利要求1-16中任一项所述的方法。
19.一种芯片装置,其特征在于,所述芯片装置包括:
通信接口,用于输入和/或输出信息;
处理器,用于执行计算机可执行程序,使得安装有所述芯片装置的设备执行如权利要求1-16中任一项所述的方法。
20.一种电子设备,其特征在于,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及
处理器,当所述指令被一个或多个处理器执行时,所述处理器用于执行权利要求1-16中任一项所述的方法。
CN202110735587.0A 2021-06-30 2021-06-30 视频码流的处理方法、介质、程序产品和电子设备 Pending CN115550688A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110735587.0A CN115550688A (zh) 2021-06-30 2021-06-30 视频码流的处理方法、介质、程序产品和电子设备
PCT/CN2022/088011 WO2023273535A1 (zh) 2021-06-30 2022-04-20 视频码流的处理方法、介质、程序产品和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110735587.0A CN115550688A (zh) 2021-06-30 2021-06-30 视频码流的处理方法、介质、程序产品和电子设备

Publications (1)

Publication Number Publication Date
CN115550688A true CN115550688A (zh) 2022-12-30

Family

ID=84692446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110735587.0A Pending CN115550688A (zh) 2021-06-30 2021-06-30 视频码流的处理方法、介质、程序产品和电子设备

Country Status (2)

Country Link
CN (1) CN115550688A (zh)
WO (1) WO2023273535A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116033170A (zh) * 2023-03-28 2023-04-28 阿里巴巴(中国)有限公司 视频解码方法、视频编解码系统以及视频解码装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060120449A1 (en) * 2004-12-06 2006-06-08 Lg Electronics Inc. Method of coding and decoding moving picture
CN106254869A (zh) * 2016-08-25 2016-12-21 腾讯科技(深圳)有限公司 一种视频数据的编解码方法、装置和系统
CN106713913A (zh) * 2015-12-09 2017-05-24 腾讯科技(深圳)有限公司 视频图像帧发送方法及装置、视频图像帧接收方法及装置
CN112040232A (zh) * 2020-11-04 2020-12-04 北京金山云网络技术有限公司 实时通信的传输方法和装置、实时通信的处理方法和装置
CN112351285A (zh) * 2020-11-04 2021-02-09 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4185086B2 (ja) * 2005-09-28 2008-11-19 株式会社日立国際電気 画像処理装置
DE102006057983A1 (de) * 2006-12-08 2008-06-12 Siemens Ag Verfahren zur Vidoecodierung einer Folge digitalisierter Bilder
CN102984548B (zh) * 2011-09-05 2014-12-31 中国移动通信集团公司 3d立体视频编码传输方法及装置
US9774869B2 (en) * 2013-03-25 2017-09-26 Blackberry Limited Resilient signal encoding
CN111064962B (zh) * 2019-12-31 2022-02-15 广州市奥威亚电子科技有限公司 一种视频传输系统和方法
CN112291566B (zh) * 2020-06-19 2024-07-09 珠海市杰理科技股份有限公司 H.264视频编码方法、装置及存储设备
CN112040233B (zh) * 2020-11-04 2021-01-29 北京金山云网络技术有限公司 视频编码、视频解码方法和装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060120449A1 (en) * 2004-12-06 2006-06-08 Lg Electronics Inc. Method of coding and decoding moving picture
CN106713913A (zh) * 2015-12-09 2017-05-24 腾讯科技(深圳)有限公司 视频图像帧发送方法及装置、视频图像帧接收方法及装置
CN106254869A (zh) * 2016-08-25 2016-12-21 腾讯科技(深圳)有限公司 一种视频数据的编解码方法、装置和系统
CN112040232A (zh) * 2020-11-04 2020-12-04 北京金山云网络技术有限公司 实时通信的传输方法和装置、实时通信的处理方法和装置
CN112351285A (zh) * 2020-11-04 2021-02-09 北京金山云网络技术有限公司 视频编码、解码方法和装置、电子设备和存储介质

Also Published As

Publication number Publication date
WO2023273535A1 (zh) 2023-01-05

Similar Documents

Publication Publication Date Title
US10192516B2 (en) Method for wirelessly transmitting content from a source device to a sink device
CN105744342B (zh) 移动终端的数据传输方法和装置
US10009628B2 (en) Tuning video compression for high frame rate and variable frame rate capture
CN110519632B (zh) 投屏方法及设备
US20090096927A1 (en) System and method for video coding using variable compression and object motion tracking
CN110996122B (zh) 视频帧传输方法、装置、计算机设备及存储介质
CN104685873B (zh) 编码控制设备以及编码控制方法
KR20230039723A (ko) 프로젝션 데이터 프로세싱 방법 및 장치
CN113726815B (zh) 一种动态调整视频的方法、电子设备、芯片系统和存储介质
US20220210469A1 (en) Method For Transmitting Video Picture, Device For Sending Video Picture, And Video Call Method And Device
WO2021057697A1 (zh) 视频编解码方法和装置、存储介质及电子装置
US20140233641A1 (en) Intra-frame decoding method and apparatus for signal component sampling point of image block
WO2023273535A1 (zh) 视频码流的处理方法、介质、程序产品和电子设备
JP6466638B2 (ja) 動き変化量に応じて撮影動画像のフレームを間引く端末、システム、プログラム及び方法
JP6319491B2 (ja) 撮像装置及び制御方法
JP6583458B2 (ja) 撮像装置及び制御方法
WO2022042281A1 (zh) 一种编解码方法、装置及系统
CN114697731B (zh) 投屏方法、电子设备及存储介质
CN115550683A (zh) 一种视频数据的传输方法及装置
JP6119447B2 (ja) 撮像システム、及び制御方法
JP6583457B2 (ja) 撮像装置及び制御方法
KR100836609B1 (ko) 프레임 레이트 제어용 이동 통신 단말기, 및 그 제어 방법
CN117278538B (zh) 调整编码器的参数的方法及电子设备
WO2020181540A1 (zh) 一种视频处理方法、装置、编码设备及解码设备
CN104702970A (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