CN112073737A - 在直播视频流应用中重新编码预测的图像帧 - Google Patents

在直播视频流应用中重新编码预测的图像帧 Download PDF

Info

Publication number
CN112073737A
CN112073737A CN202010101676.5A CN202010101676A CN112073737A CN 112073737 A CN112073737 A CN 112073737A CN 202010101676 A CN202010101676 A CN 202010101676A CN 112073737 A CN112073737 A CN 112073737A
Authority
CN
China
Prior art keywords
frame
bitstream
inter
intra
frames
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
CN202010101676.5A
Other languages
English (en)
Inventor
O·拉毕格
S·安妮
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN112073737A publication Critical patent/CN112073737A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • 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/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • 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/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
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • 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, manipulating MPEG-4 scene graphs
    • 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, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 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/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, manipulating MPEG-4 scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234345Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment
    • 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/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
    • 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/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring

Abstract

本申请公开了在直播视频流应用中重新编码预测的图像帧,在各种示例中,媒体流可以由重新编码系统接收,重新编码系统可以利用重新编码引擎将与媒体流相关联的帧间帧转换为帧内帧。可以使用与媒体流相关的参数或与媒体流接收的其他信息来从帧间帧转换为帧内帧。转换后的帧内帧可以被合并到媒体流的更新的片段中,以替换原始帧间帧,从而可以存储更新后的片段或其中的一部分以供日后应用。

Description

在直播视频流应用中重新编码预测的图像帧
相关申请的交叉引用
本申请请求于2019年6月11日申请的、申请号为62/860,212的美国临时申请专利的优先权权益,该申请在此通过引用完全并入本文中。
背景技术
直播流是指直播媒体(例如视频)流或信号被数字化、压缩并从源传输到目的地,然后可以对其进行解压缩、解码和显示的任意数量的服务。直播流媒体具有为住宅、商业和政府应用范围开启了极大的可能性的能力。例如,近年来,随着直播流服务现在涵盖从社交媒体和专业体育到电影和云视频游戏的各种平台(例如,NVIDIA GeForce Now),直播流已发展成为在全球范围内吸引受众的工具。虽然近年来直播流的普及程度有所上升,但捕获(例如保存)直播流的部分供以后使用(例如,用于重新观看、分发、分享等)的愿望也有所增加。
在传统系统中,捕获直播媒体流的部分(例如片段)供以后使用是一项处理、存储和时间密集型的任务。例如,与其他流式处理方法(例如,流处理预记录的视频)相比,直播流需要更多的计算机处理和网络资源,但同时降低了效率(编码和流传输过程中的低延迟)。为了减少传输所需的处理开销和带宽,同时保持媒体流的感知质量(例如,减少视觉缺陷,如块状失真、模糊、边缘活动、噪声、抖动、像素化等),许多直播流系统利用数字视频编解码器(例如编码器/解码器、压缩机/解压缩器等)将视频数据(例如,帧)压缩(例如,编码)成专门排列的系列,每个系列称为一个图像组(GOP,Group of Pictures)。例如,许多传统的直播媒体系统将直播媒体流(例如视频帧序列)编码为帧间帧唯一的GOP结构(例如IPPPPPPPP),其中第一帧是内部编码(I)帧(或其他帧内帧)和其余帧是预测编码(P)帧(或其他帧间帧类型)。通常,I帧(和其他帧内帧类型)是最大的帧类型(需要最多位)以及可以在接收端解码,而无需任何其他帧的数据。例如,I帧可以包括表示帧中每个像素的像素值的数据。相比之下,P帧比I帧小,并且编码时的动作或像素值会随最近的I或P帧的变化而变化(例如,P帧仅包含与一个或多个前帧不同的信息)。
由于直播流需要额外的计算机处理和网络资源,因此帧间帧唯一的GOP结构类型由于其低编码延迟、带宽要求降低和存储消耗最小得到广泛使用帧间帧。此外,虽然GOP结构和长度可能有很大差异,但使用具有较长的唯一帧间帧序列的GOP结构也被广泛用于减少带宽和降低编码器和/或解码器上的处理器负荷。但是,由于帧间帧(P)始终参考前面或将来的帧(例如,I帧、P帧、B帧等),因此在直播媒体流中捕获帧间帧唯一的GOP结构的选定的部分或片段需要首先接收整个流并保存整个流,然后从至少一个帧内帧开始捕获所选部分或片段。例如,用户(例如,玩家、流媒体人等)可能正在通过云游戏架构中的直播播放视频游戏的游戏实例,并可能决定记录特定动作序列(例如,制作亮点)。如果动作序列从直播媒体流中的点(例如帧)开始,并且直播媒体流是P帧唯一的GOP结构,则由于缺少P帧用作参考的帧内帧,在不首先接收、保存和分析整个流的情况下,直播媒体流系统将无法在所需位置开始记录。
为了弥补这些缺陷,一些直播媒体流捕获系统定位到最近的I帧开始记录。但是,此技术需要系统浪费存储内存以重新编码直播媒体流中额外的部分,以及重新编码用户不感兴趣的流的部分。此外,如上所述,由于在P帧唯一的GOP结构可能只有一个I帧,因此最近的I帧往往是第一个I帧,这意味着如上所述的方法需要存储流的很大一部分(如果不是全部)。相比之下,其他传统的直播媒体流捕获系统将整个直播媒体流转换(如解码、重新编码)为不同的GOP结构格式,以保存直播媒体流的选定部分。然而,这种技术不仅浪费了时间资源,还增加了系统上的处理器负荷。
发明内容
本公开的实施例涉及重新编码图像帧,以捕获直播视频流应用中的片段。本公开系统和方法利用重新编码引擎将现有唯一的帧间帧GOP结构化媒体流的帧间帧转换(例如,定期地或基于指示)为一个或更多个帧内帧,以便有选择性地捕获媒体流的片段,同时最大限度地减少处理器负荷(例如,降低CPU和/或GPU使用的负担),以及在生成片段之前减少对整个流进行转码和存储的需求。
与传统的系统(如上述系统)相比,本系统识别并将视频流的帧间帧(如媒体流)转换为帧内帧,以实现对视频流的片段的选择性录制。例如,用户(例如,游戏玩家)在玩视频游戏的实例(例如,一个直播媒体流)时,希望记录和/或保存特定的动作序列(例如,制作亮点),并指出用户希望开始记录的特定点。当接收到保存特定部分的直播媒体流的请求时,重新编码引擎将与开始点相关联的帧间帧(例如,P帧和B帧)转换为与原始直播媒体流(使用编解码器,如H.263、H.264、MPEG4、HEVC、3GP、MPEG2等)对应的帧内帧(I帧、瞬时解码器刷新(IDR)帧等)。
在另一个示例中,重新编码引擎可以分析传入的直播媒体流,并基于输出流的GOP长度和/或硬编码的周期性确定何时需要将帧内帧加入到流中,而不是基于接收开始录制的指示将帧间帧(例如P帧或B帧)转换为帧内帧(例如I帧、IDR帧等)。例如,重新编码引擎可以硬编码以每30帧为周期将帧间帧(例如P帧、B帧等)转换为帧内帧(例如I帧、IDR帧等)。
转换后,重新编码引擎可将帧内帧合并到原始直播媒体流中,并更新直播媒体流后续帧间帧的报头,以参考新转换和合并的帧内帧。然后,可以记录并保存带有合并(例如,插入、替换)后的帧内帧(或包含其的片段)的直播媒体流,以供以后使用(例如查看、分享等)。因此,系统可以受益于唯一的帧间帧流(例如,唯一的P帧流(如直播流))的效率和降低的计算要求,同时能够捕获和存储流的片段,而无需首先转码整个流。
附图说明
下面将参照附图详细描述用于重新编码图像帧以捕获视频流应用中的片段的系统和方法,其中:
图1为根据本公开的一些实施例中用于重新编码图像帧以捕获视频流应用中的片段的示例系统;
图2A为根据本公开的一些实施例中示出的基于接收开始记录的指示将在帧间帧唯一的GOP结构的帧间帧重新编码为帧内帧的数据流程图;
图2B为根据本公开的一些实施例中示出的周期性地将帧间帧重新编码为帧内帧的数据流程图;
图2C为根据本公开的一些实施例中示出的基于接收开始记录的指示将IP帧GOP结构的帧间帧重新编码为帧内帧的数据流程图;
图3为根据本公开的一些实施例中显示用于对图像帧进行重新编码以捕获视频流应用中的片段的方法流程图;
图4为根据本公开的一些实施例中显示用于周期性地将帧间帧重新编码为帧内帧的方法流程图;
图5为根据本公开的一些实施例中游戏流系统的示例系统图;和
图6为适用于实现本公开的一些实施例的计算设备示例的框图。
具体实施方式
本公开涉及重新编码图像帧以捕获视频流应用中的片段的系统和方法。例如,当用户播放视频游戏的实例(例如,在云游戏环境中,如图的环境)或流式直播或预记录事件时,用户可能希望记录和/或保存流的特定部分或片段,并可能指示记录应开始的特定点。在某些实施例中,当收到保存直播或预记录媒体流特定部分的请求时,重新编码引擎可能会从直播媒体流中接收与指示开始位置相关联的未压缩帧间帧。重新编码引擎可以将帧间帧(例如P帧或B帧)转换为符合原始直播媒体流(例如,使用编解码器,如H.263、H.264、MPEG4、HEVC、3GP、MPEG2等)的帧内帧(例如I帧、IDR帧等)。为了确保新编码或重新编码的帧内帧符合原始媒体流,重新编码引擎可以至少根据从原始直播媒体流(如比特流)的序列参数集(SPS,Sequence Parameter Set)和图像参数集(PPS,Picture Parameter Set)直接导出的参数,将帧间帧转换为帧内帧。在一些实施例中,重新编码引擎可以分析传入的直播媒体流,并基于输出流的GOP长度确定何时需要将帧内帧加入到流中,而不是基于接收开始记录的指示将帧间帧转换为帧内帧。例如,重新编码引擎可以硬编码,以周期性地将帧间帧转换为帧内帧,例如,非限制性地,每20帧、每30帧、每秒、每三秒等等。
转换后,重新编码引擎可将帧内帧合并到原始直播媒体流中,并更新直播媒体流后续帧间帧的报头,以参考新转换和合并的帧内帧。然后,带有合并的(例如插入的)帧内帧的直播媒体流发送到流记录器,该记录器使用插入的帧内帧作为起始(或参考)点以提取直播媒体流的特定部分(例如,捕获片段),并且可以生成捕获片段并将其输出到文件接收器。文件接收器(例如,MP4文件接收器、3GP文件接收器、WMV文件接收器、FLV文件接收器等)可将捕获片段存储在容器文件(例如,MPEG4容器文件、3GP容器文件、MPEG-2容器文件等)格式中,供以后使用(例如,观看、分享、流式传输、分发等)。
这样,通过使用重新编码引擎周期性地将帧间帧唯一的GOP结构(直播)媒体流的现有帧间帧转换为帧内帧,当前公开的系统和方法能够有选择地捕获直播媒体流的片段,同时最大限度地减少处理器负荷(例如,减少CPU的负担和GPU的使用),以及在生成片段之前减少对整个流进行转码和存储的需求。此外,由于不需要首先保存和/或转码整个流,通过允许在媒体流中的任意点插入帧内帧的灵活性(例如使用P帧唯一的GOP结构的直播媒体流),片段捕获可能比传统的基于转码的文件捕获系统更快发生。
参照图1,图1为根据本公开的一些实施例中用于重新编码图像帧以捕获视频流应用(例如,云游戏环境)中的片段的示例系统100。应该理解的是,本文描述的这一布置和其他布置仅作为示例列出。除了已展示的这些布置和元素之外,还可用于其他安排和元素(例如,机器、接口、功能、订单、功能分组等),某些元素可能完全省略。此外,本文中描述的许多元素都是功能实体,可以作为离散或分布式组件实现,也可以与其他组件结合使用,并在任何合适的组合和位置中实现。此处描述由实体执行的各种功能可由硬件、固件和/或软件执行。例如,执行存储在内存中的指令的处理器可以执行各种功能。
重新编码系统100可包括在其他组件和/或设备中的比特流102、比特流解析器104、比特流提供器106、视频解码器108、视频渲染器110、用户设备112、重新编码引擎114、比特流记录器124、文件接收器126和文件128。在一些非限制实施例中,重新编码系统100(和/或组件和/或其特性)可以使用游戏流系统实现,如本文将详细介绍图5中的游戏流系统500。在其他非限制实施例中,重新编码系统100(和/或组件和/或其特性)可以使用任意媒体流系统实现,例如用于直播流和/或预记录媒体流的系统。此外,重新编码系统100(和/或组件和/或其特性)可以使用一个或更多个计算设备实现,例如本文将进行详细描述的图6的计算设备600。
重新编码系统100的每个设备和/或组件都可以通过网络(未显示)进行通信。网络可以包括广域网(WAN)(例如,互联网、公共交换电话网络(PSTN)等)、局域网(LAN)(例如Wi-Fi、ZigBee、Z波、蓝牙、蓝牙低功耗(BLE)、以太网等)和/或其他类型的网络。在任意示例中,重新编码系统100的每个设备和/或组件都可以通过一个或更多个网络与一个或更多个其他设备和/或组件进行通信。
比特流解析器104通常可以配置为将传入比特流(例如视频流、媒体流等),如比特流102,解析为GOP结构等效项。如本文所述,比特流102可以是任意数量的比特流之一,例如直播媒体视频比特流或预记录媒体视频比特流。比特流102可由重新编码系统100从远程设备(如远程服务器,远程用户设备和/或流环境、云游戏环境(如图5)和/或另一个流媒体环境中的另一个设备类型)以压缩格式接收。此外,比特流102可以采用任意数量的格式之一,例如,非限制性地,图像专家组(MPEG,Motion Pictures Expert Group)视频格式(例如MP4)、Apple QuickTime电影(MOV)视频格式、Windows媒体视频(WMV)视频格式、闪存视频格式(FLV,Flash Video Format)、音频视频交错(AVI,Audio Video Interleave)视频格式和/或其他视频格式。与比特流等效的GOP结构(如比特流102)可以采用任意数量的GOP结构类型之一,例如P帧唯一GOP结构(或其他帧间帧唯一结构)(例如,IPPPPPP...P)以及IP帧GOP结构(例如IPPPIPPP...IPPP)。例如,比特流解析器104可能会将与媒体流实例(例如,云游戏环境中的视频游戏流)相关联的传入的比特流102解析为其GOP结构等效项,例如帧间帧唯一GOP结构(例如,IPPPPPP)。
比特流102可能与各种参数集相关联,例如序列参数集(SPS)和图片参数集(PPS)。参数集通常可能包含在GOP结构中不会随帧到帧改变的信息(如像素值等)。尤其是,SPS通常可能适用于GOP结构内的一系列连续帧(例如,图片序列),而PPS通常适用于解码(例如解压缩)GOP结构中一个或更多个单个帧。比特流102可以进一步与量化参数(QP)相关联,QP用于确定GOP结构中帧的量化器值。QP通常可以调节视频编码(例如压缩)期间每帧保留(例如保存)了多少空间细节,以及在视频编码期间引入到每个帧中的视觉损伤的程度(例如,块状失真、模糊、边缘繁忙、蚊子噪音、振铃、量化噪声、抖动、消融等)。
比特流提供器106通常可以配置为将解析的比特流102拆分为两个单独的(例如,相同的)输出流。在操作中,可以解码(例如,通过视频解码器108)第一个解析的比特流以向用户显示(例如,通过用户设备112),也可以解码第二个解析(例如,通过视频解码器108)的比特流,并用于记录比特流102的一部分(例如,使用重新编码引擎114)供以后使用。
如上所述,视频解码器108通常可以配置为解码(例如解压缩)包含在解析比特流102的GOP结构中的帧。视频解码器108可以包括但不限于任意数量类型的视频解码器(例如MPEG-4Part 2、MPEG-4等)。视频渲染器110通常可以配置为处理解析的和解码的比特流102,以便在用户设备112的显示屏上生成和显示比特流102的可视表示形式。
用户设备112包括但不限于智能手机、笔记本电脑、平板电脑、台式计算机、可穿戴设备、游戏机、虚拟现实系统(例如,耳机、计算机、游戏机、遥控器、控制器和/或其他组件)、NVIDIA SHIELD、可包括智能个人助理的智能家居设备和/或能够支持至少显示视频流(例如,直播视频流、预记录视频流等)的其他类型的设备。用户设备112可以是一个或更多个组件(例如,通信组件、网络接口等)和用于跨一个或更多个网络通信的功能。作为非限制示例,要在重新编码系统100内进行通信,用户设备112可以使用有线以太网连接和/或Wi-Fi连接通过路由器访问互联网。在某些示例中,用户设备112可能包含图6中示例计算设备600的部分或全部组件。
重新编码引擎114通常可以配置为重新编码被解码(例如,解压缩)的比特流的帧,以便捕获与视频流应用相关联的比特流的片段。尤其是,重新编码引擎114通常可以配置为将比特流的帧间帧重新编码为帧内帧,以便捕获比特流的各个片段。在一些实施例中,重新编码引擎114可以基于接收开始记录的指示,重新编码解析过的和解压缩过的比特流的帧。在其他实施例中,如文中所述,重新编码引擎114可以周期性地重新编码解析过的和解压缩过的比特流的帧。重新编码引擎114可以包括重新编码帧选择器120、帧内帧编码器116和帧合并器118。重新编码帧选择器120通常可配置为从比特流的一部分中选择帧间帧,以便重新编码为帧内帧。帧内帧编码器116通常可配置为将帧间帧重新编码为帧内帧。帧合并器118通常可以配置为将重新编码的帧内帧合并到比特流中,以替换选定的帧间帧。
如上所述,重新编码帧选择器120通常可以配置为从比特流的一部分中选择帧间帧以便重新编码为帧内帧。在一些实施例中,重新编码系统100可能会收到开始记录比特流102中一部分的指示。该指示可包括比特流中的哪个帧要用作记录起始点的指示信息。例如,可以生成(例如,响应用户输入)信号,指示应该生成记录的点。在某些示例中,信号与精确的帧相对应,并且该精确的帧是可以选定的。在其他示例中,信号可能对应于一个帧或多个帧,但重新编码帧选择器120可以选择信号对应的帧以外的前一帧或后一帧(例如,在信号是在实际所需的记录起始点之后生成的情况下,构建一个缓冲区)。在此类实施例中,基于接收开始记录比特流一部分的开始帧的指示,重新编码帧选择器120可以从比特流102中选择与起始点关联的帧以重新编码。在其他实施例中,重新编码帧选择器可以配置为周期性地确定选择比特流102中的哪个帧用于重新编码帧间帧为帧内帧。例如,重新编码帧选择器120可配置为选择每一个第x个帧间帧(如每一个第5个帧间帧、每一个第30个帧间帧等)用于重新编码为帧内帧,也可以配置为每x秒选择一帧(如每一秒、每两秒等)。在此类实施例中,重新编码帧选择器120可由重新编码系统100的用户配置。一旦选定的帧间帧由帧内帧编码器116转换为帧内帧,可以发信号通知帧合并器118将重新编码的帧内帧合并到比特流中,以替换所选帧间帧。
为了选择用于重新编码的帧间帧,重新编码帧选择器120可将请求(例如,代表请求的信号)发送到视频解码器108,该请求需要未压缩(例如,解压,解码)的待重编码的帧间帧版本。基于从重新编码引擎114接收请求,视频解码器108可将被选择用于重新编码的未压缩帧间帧传输到帧内帧编码器116以进行重新编码。
如这里所描述的,帧内帧编码器116通常可以配置为将帧间帧重新编码为帧内帧。在一些实施例中,帧内帧编码器116可以基于与从中选定帧间帧的比特流102相关联的编码参数,将帧间帧重新编码为帧内帧。通过至少基于与从中选定帧间帧的比特流102相关联的编码参数,将帧间帧重新编码为帧内帧,新编码的帧内帧与比特流更加兼容(例如,能够合并回比特流以替换编码的帧间帧)。在非限制实施例中,帧内帧编码器116可以使用参数、特征或与比特流102相关的其他信息(如SPS、PPS、QP和/或其他与比特流102相关的参数、特征或信息)将帧间帧重新编码为帧内帧。在至少一个实施例中,可以将用于重新编码的帧内帧量化值设置或确定为比用于重新编码的帧间帧的量化值低至少一级。这样,更有可能实现对比特流102的兼容性(例如,确保帧内帧可以合并到比特流以替换帧间帧)。
此外,虽然重新编码的帧内帧可能与它要替换的帧间帧略有不同,但是通过将帧间帧重新编码为帧内帧并将其合并到比特流102中,比特流102的刷新频率可以增加。增加刷新率可以防止或减少误差(例如,由于块失真、模糊、边缘活动、噪声、振铃、抖动、像素化等原因导致的比特流的感知质量的降低)。将重新编码的帧内帧量化值设置为比在比特流102中要替换的帧间帧的量化值低至少一级,从而进一步有助于防止累积误差。
如本文所述,帧合并器118通常可以配置为将重新编码的帧内帧合并到比特流中以替换选定的帧间帧。在实施例中,在帧内帧编码器116将帧间帧重新编码为帧内帧之后,帧内帧编码器116可向帧合并器118传达(例如,向其发送信号)帧间帧已被重新编码为帧内帧。基于收到帧间帧已转换为帧内帧的指示,帧合并器118可将重新编码的帧内帧合并到比特流中(例如,在与原始帧间帧相同的位置处)以替换帧间帧。在一些实施例中,为了将帧内帧合并到比特流中,帧合并器118可以更新帧间帧的报头和/或其他信息,该更新的帧间帧在重新编码的帧内帧(如P帧)之后和/或在重新编码的帧内帧(如B帧)之前。如本文中所描述,帧间帧(例如P帧或B帧)通常可以参考其最接近的前帧(帧内帧和/或帧间帧)。因此,帧间帧中包含的每个报头可以指定帧间帧应引用哪个帧内帧和/或帧间帧。为了确保之前和/或随后的帧间帧参考新编码的帧内帧,因此可以配置帧合并器118以更新比特流中帧间帧的报头和/或其他信息,以确保捕获片段或比特流的部分(包括重新编码的帧内帧)正确地回放。
比特流记录器124通常可以配置为提取包括重新编码的帧内帧的比特流的片段,并将比特流的片段输出到文件接收器126以进行存储或保存为文件以供以后使用(例如,查看、分享、流式传输、传输等)。在一个或更多个实施例中,可以将文件接收器实现为接收媒体数据作为一个或更多个媒体流目标的管道对象。在实施例中,比特流记录器124可以根据接收用户想要记录的比特流的哪个片段的指示来选择片段。在其他实施例中,比特流记录器124可基于在开始记录的指示中注明的起始点选择片段的起始点以开始记录。
文件接收器126可以配置为存储比特流的片段,例如以容器文件128的形式。文件接收器126可以是任意数量的媒体接收器之一,例如MP4文件接收器、3GP文件接收器、WMV文件接收器、FLV文件接收器和/或类似接收器。容器文件(如容器文件128)可以是任意数量的容器文件(如MPEG4容器文件、3GP容器文件、MPEG-2容器文件等)之一。
例如,正在云游戏环境中观看玩家B正在玩的游戏的直播流实例的观看者A可以决定他们想要在与高强度的战斗场景开始相关联的特定时间开始记录。如果与玩家B正在玩且由观看者A观看的游戏的直播流相关联的比特流是帧间帧唯一比特流(例如IPPPPPP GOP结构),则在这样的示例中,重新编码系统100(使用重新编码帧选择器120)可以选择与起始位置或记录相关联的帧间帧,并从视频解码器108接收帧的未压缩版本,使用帧内帧编码器116将该帧间帧转换为帧内帧,然后使用框架合并器118将帧内帧合并到比特流。此后,系统100可以使用比特流记录器124记录,并使用文件接收器126保存观看者A指示的比特流的片段以供以后使用(例如查看、分享等)。
现在参考图2A-2C,图2A-2C阐述了将帧间帧转换为帧内帧以捕获具有各种GOP流格式的流的片段的各种非限制示例。可以参照图1的重新编码系统100进行描述图2A-2C。然而,在不偏离本公开的范围下可以使用不同或替代的系统来生成与图2A-2C相关的部分。
例如,参照图2A,图2A为根据本公开的一些实施例中示出的基于接收开始记录的指示将在帧间帧唯一的GOP结构的帧间帧重新编码为帧内帧的数据流程图。在图2A中,可以接收比特流202,其中比特流202可以包括帧间帧唯一的GOP结构比特流。,基于接收到捕获比特流202的片段的请求,其中请求指示开始记录的起始点(例如帧间帧230),与起始点相关联的帧间帧230可以在比特流202的片段204中如图所示的那样识别。为了转换在片段204中所识别的帧间帧230,帧间帧230可以由重新编码引擎114处理。如本文详细所述,至少基于SPS、PPS、QP和/或与比特流202相关联的其他信息,重新编码引擎114可将选定的帧间帧230转换为帧内帧232。一旦帧间帧230被重新编码为帧内帧232,如比特流202的更新片段206所示,重新编码的帧内帧232可以合并(例如,替换帧间帧230)到片段204中选定的(例如,已识别的)帧间帧230的位置处。在实施例中,当合并重新编码的帧内帧232时,可以更新后续帧间帧的报头以参考重新编码的帧内帧232。然后可以记录和存储(例如,使用图1中的比特流记录器124和/或文件接收器126)与捕获比特流202的片段的请求相关联的捕获的片段208(例如,可包括更新的片段206和/或其一部分)。因此,使用此过程,捕获的片段208可以从重新编码的帧内帧232开始。
在另一实施例中,参考图2B,图2B为根据本公开的一些实施例中示出的周期性地将帧间帧重新编码为帧内帧的数据流程图。在图2B中,可以接收比特流210,其中比特流210包括帧间帧唯一的GOP结构比特流。在实施例中,重新编码系统100可将比特流212中由斜线标识的且与比特流210关联的帧间帧240(例如帧间帧240A、240B和240C)周期性地转换为帧内帧242(例如,帧内帧242A、242B和242C)。例如,重新编码引擎114可以标识每一个第x帧或每x时间间隔后的帧,以根据比特流212的指示从帧间帧240转换为帧内帧242。如通篇所述,重新编码引擎114可以被配置(例如,手动或其他方式)为基于周期性从比特流210中选择帧间帧240。例如,重新编码引擎114可以选择每一个第5个帧间帧240或选择每一个第30个帧间帧240以转换为帧内帧242。如本文详细所述,重新编码引擎114可至少基于SPS、PPS、QP和/或与比特流210相关联的其他信息,将选定的帧间帧240转换为帧内帧242。如转换后的片段214所示,一旦帧间帧240被重新编码为帧内帧242,则重新编码的帧内帧242可在片段210中选定的(例如,识别的)帧间帧240的位置合并(例如,替换帧间帧240)。在实施例中,当合并重新编码的帧内帧242时,可以更新后续帧和/或先前帧的报头以参考重新编码的帧内帧242。由于更新的片段214可能基于周期性生成,因此当收到流的捕获片段216的请求时,可以使用更新的片段214生成捕获的片段216。
作为进一步的示例,并参照图2C,图2C为根据本公开的一些实施例中示出的基于接收开始记录的指示将IP帧GOP结构的帧间帧重新编码为帧内帧的数据流程图。在图2C中,可以接收比特流218,其中比特流218可以包括IP帧GOP结构比特流。基于接收捕获比特流218的片段的请求,其中请求可指示开始记录的起始点(例如帧间帧250),可以识别与该起始点相关联的帧间帧250。为了转换片段220中识别的帧间帧250,帧间帧250可以由重新编码引擎114处理。如本文详细所述,重新编码引擎114可至少基于SPS、PPS、QP和/或与比特流218相关联的其他信息将选定的帧间帧250转换为帧内帧252。如更新的片段222所示,一旦帧间帧250重新编码为帧内帧252,则重新编码的帧内帧252可在捕获的片段224中选定的(例如,识别的)帧间帧250的位置处合并(例如,替换帧间帧250)。在实施例中,当合并重新编码的帧内帧252时,可以更新后续帧间帧的报头以参考重新编码的帧内帧252。然后可以从更新的片段222处捕获所捕获的片段224并存储(例如,使用图1中的比特流记录器124和/或文件接收器126)。因此,使用此处理,捕获的片段224可以从重新编码的帧内帧252开始,而不是从原始帧内帧254开始,从而导致在捕获的224片段中具有更精确或更期望的(例如,基于用户请求)帧分组。
现在参考图3和图4,本文描述的方法300和400每个块都包含可以使用硬件、固件和/或软件的任意组合执行的计算进程。例如,执行存储在内存中的指令的处理器可以执行各种功能。方法300和400也可以体现为存储在计算机存储介质上的计算机可用指令。方法300和400可能由独立应用程序、服务或托管服务(独立或与其他托管服务组合)或另一个产品的插件(仅举几例)提供。此外,例如,对图1系统的方法300和400作了描述。但是,这些方法300和400可以另外或由任何一个系统或任何系统组合执行,包括但不限于此处描述的方法。
参考图3,图3为根据本公开的一些实施例中显示用于对图像帧进行重新编码以捕获视频流应用中的片段的方法流程图。在块B302处,方法300包括接收表示流的第一数据。例如,图1中的比特流解析器104可接收比特流102。比特流102可以包括表示SPS、PPS、QP和/或与比特流102帧关联的其他信息的相关信息或数据。比特流102可以是直播视频流、预记录视频流,和/或其他流类型。解析时(如由比特流解析器104解析)时,比特流102可以与任意数量的GOP结构类型中的一个相关联,如帧内帧唯一的GOP结构类型)。
在块B304处,方法300包括确定流的片段的部分包含唯一的帧间帧。例如,重新编码系统100可以接收开始记录比特流的部分的指示。该指示可以包括指示比特流中的哪个帧要用作记录起始点的信息。在此类实施例中,基于接收到的指示,在该指示所指示的帧上开始记录比特流的部分,重新编码帧选择器120可以确定要记录的片段的开始点(例如部分)是帧间帧和/或帧内帧不在帧间帧的阈值帧数内。
在块B306处,方法300包括基于与流相关的编码参数,将流的片段的部分的第一帧转换为帧内帧。如本文所述,编码参数可以包括SPS、PPS和/或QP中的至少一个。例如,至少基于与来自帧间帧的比特流相关联的编码参数将帧间帧重新编码为帧内帧,从而确保在重新编码时,新编码的帧内帧兼容原始比特流(例如,能够合并回原始比特流以替换帧间帧)。
在块B308处,方法300包括将帧内帧合并到流的片段中,以替换第一帧间帧。例如,要将帧内帧合并到比特流中,帧合并器118可以更新在重新编码的帧内帧之后和/或之前的帧间帧的报头。
在块B310处,方法300包括存储流的片段。例如,存储比特流102的片段以供以后使用(例如,查看、分享等)。在这里,比特流记录器124可以提取要记录的比特流的片段,其中该片段包括重新编码的帧内帧。比特流记录器124可以将比特流的片段输出到文件接收器126以保存到文件供以后使用(例如,查看、分享、传输等)。在实施例中,比特流记录器124可以根据接收到的用户要记录的比特流的哪个片段的指示选择片段。在其他实施例中,比特流记录器124可根据开始记录的指示中注明的起始点选择要记录和存储的片段的开始点。
现在参考图4,图4为根据本公开的一些实施例中显示用于周期性地将帧间帧重新编码为帧内帧的方法流程图。在块B402处,方法包括接收表示包含帧间帧序列的流的第一数据。例如,比特流102可以由比特流解析器104接收。比特流102可以包括各种相关信息,如SPS、PPS、QP和/或其他信息。比特流102可以是直播视频流、预记录视频流,和/或其他视频流类型。当由比特流解析器104解析时,比特流102可以与任意数量的GOP结构类型(如帧间帧唯一的GOP结构类型)中的一个相关联。
在B404块处,方法400包括按间隔从帧间帧序列中选择帧间帧。例如,在一些实施例中,重新编码系统100可以分析传入的比特流,并确定何时需要将帧内帧添加到比特流,而不是基于接收到开始记录的指示将帧间帧转换为帧内帧。重新编码系统100可以基于传入比特流102的GOP长度确定何时应将帧内帧转换为帧内帧。在其他实施例中,重新编码系统100可以基于硬编码周期(例如,每5帧、每30帧等)确定何时应将帧内帧转换为帧内帧。
在B406块处,方法400包括基于与比特流关联的编码参数将选定帧间帧转换为帧内帧。例如,如本文所述,编码参数可以包括SPS、PPS、QP和/或其他由比特流102表示并包含在比特流中的帧相关联的其他信息中的至少一个。使用与从中选定帧间帧的比特流102相关联的编码参数将帧间帧重新编码为帧内帧,确保在重新编码时新编码的帧内帧与原始比特流兼容(例如,能够合并回原始比特流以替换帧间帧)。
在B408块处,方法400包括将帧内帧合并到流中,以替换选定的帧间帧。例如,要将帧内帧合并到比特流中,帧合并器118可以更新在重新编码的帧内帧之后和/或之前帧间帧报头。
现在参考图5,图5为根据本公开的一些实施例中游戏流系统的示例系统图。图5包括游戏服务器502(可包括与图6中的计算设备600类似的组件、特性和/或功能)、客户端设备504(可包括图6中的计算设备600的类似组件、特性和/或功能)、以及网络506。在一些实施例中,系统500可以被实现为重新编码系统100的至少一部分。例如,重新编码系统100可以利用系统500的云计算环境,在此类实施例中,重新编码系统的组件和/或功能可与客户端设备504类似。
在系统500中,对于游戏会话,客户端设备504只能接收输入数据以响应输入设备526的输入数据,将输入数据传输到游戏服务器502,从游戏服务器502接收编码显示数据,并在显示屏524上显示该显示数据。因此,计算强度越强的计算和处理被卸载到游戏服务器502(例如,游戏会话的渲染由游戏服务器502的GPU执行),并且游戏会话从游戏服务器502流式传输到客户端设备504,从而减少了客户端设备504对图形处理和渲染的要求。
例如,对于游戏会话的实例化,基于从一个或更多个游戏服务器502接收到的显示数据,客户端设备504可以在显示器524上显示游戏会话的帧。客户端设备504可以接收到一个或更多个输入设备之一的输入,并响应地生成输入数据。客户端设备504可以经由通信接口520并通过网络506(如Internet)将输入数据传输给一个或更多个游戏服务器502,一个或更多个游戏服务器502可以经由通信接口518接收输入数据。一个或更多个CPU可以接收输入数据、处理该输入数据并将数据传输到一个或更多个GPU,从而使一个或更多个GPU生成游戏会话的渲染。例如,输入数据可能代表用户在游戏中角色的移动、发射武器、重新加载、传球、转动车辆等。渲染组件512可以渲染游戏会话(例如,表示输入数据的结果),渲染捕获组件514可以捕获游戏会话的渲染作为显示数据(例如,捕获游戏会话渲染帧的图像数据)。然后编码器516可以对显示数据进行编码,以产生编码后的显示数据,编码后的显示数据可以经由通信接口518通过一个或更多个网络506传输到客户端设备504。客户端设备504可通过通信接口520接收编码的显示数据,解码器522可以解码该编码的显示数据以生成显示数据。然后,客户端设备504可通过显示屏524显示该显示数据。
在一些实施例中,编码的显示数据可以表示图1的比特流102,以便重新编码系统100可以捕获编码显示数据的片段,以生成游戏实例的捕获片段。因此,相比传统的游戏系统在捕获片段之前需要游戏实例接收、存储、和处理其整个流,重新编码系统100可允许在直播游戏流期间的任意点生成游戏实例的片段(例如,制作亮点)。
图6为适用于实现本公开的重新编码系统100的一些实施例中的计算设备600示例的框图。计算设备600可包括直接或间接耦合以下设备的总线602:存储器604、一个或更多个中央处理单元606(CPU)、一个或更多个图形处理单元608(GPU(s),graphics processingunits)、通信接口610、输入/输出(I/O)端口612、输入/输出组件614、电源616和一个或更多个表示组件618(例如显示器)。
尽管图6的各个块被示为通过总线602与线路连接,但这不是为了进行限制并且只是为了清晰起见。例如,在某些实施例中,表示组件618(如显示设备)可被视为I/O组件614(例如,如果显示器是触摸屏)。另一个示例是,CPU 606和/或GPU 608可包括存储器,(例如,存储器604可表示除了GPU 608、CPU 606和/或其他组件的内存外存储设备)。换句话说,图6的计算设备只是说明性的。没有区分诸如“工作站”、“服务器”、“笔记本电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持设备”、“游戏机”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型等类别,因为所有类别都在图6的计算设备范围内考虑。
总线602可以表示一个或更多个总线,例如地址总线、数据总线、控制总线或其组合。总线602可以包括一个或更多个总线类型,例如行业标准体系结构(ISA,industrystandard architecture)总线、扩展行业标准体系结构(EISA,extended industrystandard architecture)总线、视频电子标准协会(VESA,video electronics standardsassociation)总线、外围组件互连(PCI,peripheral component interconnect)总线、外围组件互连快速(PCIe,peripheral component interconnect express)总线和/或其他类型的总线。
存储器604可以包括各种计算机可读介质中的任何一种。计算机可读介质可以是计算设备600可以访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移动和不可移动介质。例如,非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或以任何方法或技术实现的用于存储如计算机可读指令、数据结构、程序模块和/或其他数据类型的可移动和不可移动介质。例如,存储器604可以存储计算机可读指令(例如,表示程序和/或程序元素的指令,如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能磁盘(DVD)或其他光盘存储、盒式磁带、磁性录音带、磁盘存储或其他磁盘存储设备,或任何其他可用于存储所需信息且可通过计算设备600访问的介质。如本文所用,计算机存储介质本身并不包含信号。
通信介质可以在调制数据信号(如载波或其他传输机制)中体现计算机可读指令、数据结构、程序模块和/或其他数据类型,并包括任何信息传递介质。术语“调制数据信号”可以指具有一个或更多个特征的设置或改变以在信号中编码信息的信号,以便在信号中编码信息。举例来说,非限制性地,所述的通信介质可以包括有线网络或直接有线连接等有线媒体,以及声学、射频、红外和其他无线媒体。上述任何一种组合也应包括在计算机可读介质范围内。
CPU 606可配置为执行计算机可读指令,以控制计算设备600的一个或更多个组件,以执行本文所述的一个或更多个重新编码方法和/或过程。每个CPU 606可以包括一个或更多个能够同时处理多个软件线程的内核(例如,一个、二个、四个、八个、二十八个、七十二个等)。CPU 606可以包括任何类型的处理器,以及可以根据计算设备600的实现类型(例如,用于移动设备的内核较少的处理器和用于服务器内核较多的处理器)包括不同类型的处理器。例如,根据计算设备600的类型,处理器可使用缩减指令集计算(RISC,ReducedInstruction Set Computing)实现的ARM处理器,也可以是使用复杂指令集计算(CISC,Complex Instruction Set Computing)实现的x86处理器。计算设备600可以包括一个或更多个CPU 606,以及一个或更多个微处理器或辅助协处理器,如数学协处理器。
计算设备600可以使用GPU 608来渲染图形(例如3D图形)。GPU 608可能包括数百或数千个内核,这些内核能够同时处理数百或数千个软件线程。GPU 608可能会生成输出图像的像素数据以响应渲染命令(例如,通过主机接口接收CPU 606的渲染命令)。GPU 608可包括用于存储像素数据的图形存储器,如显示存储器。显示存储器可以作为存储器604的部分。GPU 708可以包括两个或更多个并行运行的GPU(例如,通过链接)。当组合在一起时,每个GPU 608可能会为输出图像的不同部分或不同的输出图像生成像素数据(例如,第一个图像的第一个GPU和第二个图像的第二个GPU)。每个GPU可以包括其私有存储器,也可以与其他GPU共享存储器。
在计算设备600不包括GPU 608的示例中,CPU 606可以用来渲染图形。
通信接口610可以包括一个或更多个接收器、发射器和/或收发器,使计算设备600能够通过包括有线和/或无线通信的电子通信网络与其他计算设备通信。通信接口610可以包括组件和功能,以使得能够在诸如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如通过以太网通信)、低功耗广域网(例如LoRaWAN、SigFox等)和/或Internet不同的网络中的任何一个上进行通信。
I/O端口612可使计算设备600逻辑上地耦合到其他设备,包括I/O组件614、表示组件618和/或其他组件,其中一些组件可内置于(例如,集成在)计算设备600中。说明性的I/O组件614包括麦克风、鼠标、键盘、操纵杆、游戏键盘、游戏控制器、卫星盘、扫描仪、打印机、无线设备等。I/O组件614可提供自然用户界面(NUI),用于处理用户生成的空气手势、语音或其他生理输入。在某些情况下,输入可能会传输到适当的网络元素进行进一步处理。NUI可以实现与计算设备600显示屏相关联的语音识别、手写笔识别、面部识别、生物识别、屏幕上和屏幕附近的手势识别、空气手势、头部和眼睛跟踪以及触摸识别(如下文更详细的描述)的任意组合。计算设备600可包括深度相机,如立体相机系统、红外摄像机系统、RGB摄像系统、触摸屏技术以及这些组合,以用于手势检测和识别。此外,计算设备600可包括加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分),以用于检测运动。在一些示例中,加速度计或陀螺仪的输出可以被计算设备600用于呈现沉浸式增强现实或虚拟现实。
电源616可包括硬接线电源、电池电源或其组合。电源616可为计算设备600供电,使计算设备600的组件能够运行。
表示组件618可以包括显示器(如监视器、触摸屏、电视屏幕、抬头显示(HUD)、其他显示类型或其组合)、扬声器和/或其他表示组件。表示组件618可以从其他组件(如GPU608、CPU 606等)接收数据,并输出数据(如作为图像、视频、声音等)。
本公开可在计算机代码或机器可用指令的一般上下文中进行描述,包括由计算机或其他计算机(例如个人数据助理或其他手持设备)执行的计算机可执行指令(如程序模块)。通常,程序模块(包括例程、程序、对象、组件、数据结构等)是指执行特定任务或实现特定抽象数据类型的代码。本公开可以在各种系统配置中实施,包括手持设备、消费类电子产品、通用计算机、更特种计算设备等。本公开也可以在分布式计算环境中通过通信网络链接的远程处理设备执行任务。
如本文所用,对两个或更多个元素的“和/或”详述应解释为仅指一个元素或元素的组合。例如,“元素A、元素B和/或元素C”仅包括元素A,仅包括元素B,仅包括元素C,元素A和元素B,元素A和元素C,元素B和元素C,或元素A、B和C。此外,“元素A或元素B中至少有一个”可以包括至少一个元素A、至少一个元素B或元素A的至少一个和元素B的至少一个。此外,“元素A和元素B中至少有一个”可以包括至少一个元素A、至少一个元素B或至少一个元素A和元素B的至少一个。
本公开的主题在本文中具体描述以满足法定要求。但是,说明本身并不旨在限制本公开的范围。相反,发明者已经考虑到,所声称的主题也可能以其他方式体现,包括与本文件中描述的步骤类似的不同步骤或步骤组合,并结合其他现有或未来的技术。此外,尽管此处可能使用术语“步骤”和/或“块”来表示所采用方法的不同元素,除非明确地描述各个步骤的顺序,否则不应将术语解释为暗示本文所公开的各个步骤之间或之间任何特定顺序。

Claims (20)

1.一种方法,包括:
接收表示比特流的第一数据,所述比特流包括待记录的比特流片段;
确定所述比特流片段的至少初始部分包括唯一帧间帧;
将来自所述初始部分的至少初始帧间帧转换为帧内帧,所述转换至少部分地基于与所述第一数据相关联的编码参数;
将所述帧内帧合并到所述比特流片段以替换所述初始帧间帧;以及
存储所述比特流片段。
2.根据权利要求1所述的方法,其中所述编码参数由与所述比特流相关联的序列参数集(SPS)或图片参数集(PPS)中的至少一个确定。
3.根据权利要求1所述的方法,其中所述编码参数包括用于为所述帧内帧建立第一量化值的量化参数(QP),所述QP比与所述初始帧间帧相关联的第二量化值低至少一级。
4.根据权利要求1所述的方法,其中所述初始帧间帧是预测(P)图像帧或双向(B)图像帧中的一个,以及所述帧内帧是内部编码(I)图像帧或瞬时解码器刷新(IDR)帧中的一个。
5.根据权利要求1所述的方法,还包括,对位于所述帧内帧后续的所述比特流片段中的至少一个帧间帧,更新报头信息,以使至少一个帧间帧参考所述帧内帧。
6.根据权利要求1所述的方法,其中所述确定待记录的所述比特流片段的至少所述初始部分包括唯一帧间帧,至少部分地基于接收表示捕获所述比特流片段的请求的第二数据。
7.根据权利要求1所述的方法,其中所述比特流以压缩格式从远程设备接收,以及所述方法还包括:
以未压缩格式为所述初始帧内帧生成表示请求的第二数据;以及
以未压缩格式接收表示所述初始帧间帧的第三数据,生成的所述第三数据至少部分地基于对来自所述比特流中所述初始帧间帧的压缩版本进行解码的解码器。
8.根据权利要求1所述的方法,其中所述比特流以第一动态图像专家组(MPEG)格式接收,以及所述比特流片段以与所述第一MPEG格式不同的第二MPEG格式存储。
9.一种方法,包括:
接收表示比特流帧间帧序列的第一数据;
按间隔从所述帧间帧序列中选择帧间帧;
至少部分基于与所述第一数据相关联的编码参数将所述帧间帧转换为帧内帧;以及
将表示所述帧内帧的第二数据合并到所述第一数据以替换所述帧间帧。
10.根据权利要求9所述的方法,还包括捕获所述比特流片段,所述片段从所述帧内帧开始。
11.根据权利要求9所述的方法,其中所述编码参数由与所述比特流相关联的序列参数集(SPS)或图像参数集(PPS)中的至少一个确定。
12.根据权利要求9所述的方法,其中所述比特流是直播流。
13.根据权利要求9所述的方法,其中比特流是在云游戏环境中由用户设备接收的游戏实例的直播流,表示游戏实例的所述比特流由所述用户设备的一个或更多个服务器远程渲染。
14.根据权利要求9所述的方法,其中所述比特流以压缩格式从远程设备接收,以及所述方法还包括:
为所述帧间帧生成表示请求的第三数据;以及
以未压缩格式接收表示所述帧间帧的第四数据,生成的所述第四数据至少部分地基于对所述帧间帧的压缩版本进行解码的解码器。
15.一种系统,包括:
计算设备,包括一个或更多个处理设备和一个或更多个存储器设备,所述存储器设备可通信地耦合到存储着已编程指令的一个或更多个处理设备,当由所述处理器执行所述计算设备时,会导致以下操作:
比特流提供器,用于接收表示比特流的第一数据;
帧选择器,用于确定待记录的所述比特流片段的至少初始部分包括唯一帧间帧;
帧内帧编码器,用于将来自所述初始部分的至少初始帧间帧转换为帧内帧,所述转换至少部分基于与所述第一数据相关联的编码参数;
帧合并器,用于将所述帧内帧合并到所述比特流片段以替换所述初始帧间帧;
文件接收器,用于存储所述比特流片段。
16.根据权利要求15所述的系统,其中所述编码参数由与所述比特流相关联的序列参数集(SPS)或图像参数集(PPS)中的至少一个确定。
17.根据权利要求15所述的系统,其中所述编码参数包括用于为所述帧内帧建立第一量化值的量化参数(QP),所述QP比与所述初始帧间帧相关联的第二量化值低至少一级。
18.根据权利要求15所述的系统,其中所述帧合并器配置为对位于所述帧内帧后续的所述比特流片段中的至少一个帧间帧更新报头信息,以使至少一个帧间帧参考所述帧内帧。
19.根据权利要求15所述的系统,还包括:
比特流媒体解析器,用于接收比特流,所述比特流以压缩格式从远程设备接收;
其中所述帧选择器还为所述初始帧间帧以未压缩格式生成表示请求的第二数据;以及
所述帧内帧编码器还以未压缩格式接收表示所述初始帧间帧的第三数据,生成的所述第三数据至少部分地基于对来自所述比特流中所述初始帧间帧的压缩版本进行解码的视频解码器。
20.根据权利要求15所述的系统,其中所述比特流在所述比特流媒体解析器处以第一动态图像专家组(MPEG)格式接收,以及所述比特流片段通过所述文件接收器以与所述第一MPEG格式不同的第二MPEG格式存储。
CN202010101676.5A 2019-06-11 2020-02-19 在直播视频流应用中重新编码预测的图像帧 Pending CN112073737A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962860212P 2019-06-11 2019-06-11
US62/860,212 2019-06-11
US16/690,669 2019-11-21
US16/690,669 US11265599B2 (en) 2019-06-11 2019-11-21 Re-encoding predicted picture frames in live video stream applications

Publications (1)

Publication Number Publication Date
CN112073737A true CN112073737A (zh) 2020-12-11

Family

ID=73547318

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010101676.5A Pending CN112073737A (zh) 2019-06-11 2020-02-19 在直播视频流应用中重新编码预测的图像帧

Country Status (3)

Country Link
US (3) US11265599B2 (zh)
CN (1) CN112073737A (zh)
DE (1) DE102020108357A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210136378A1 (en) * 2020-12-14 2021-05-06 Intel Corporation Adaptive quality boosting for low latency video coding
US11949909B2 (en) * 2020-12-29 2024-04-02 Qualcomm Incorporated Global motion estimation using road and ground object labels for geometry-based point cloud compression
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
CN112929667B (zh) * 2021-03-26 2023-04-28 咪咕文化科技有限公司 一种编解码方法、装置、设备及可读存储介质
KR20230081402A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 서버와 전자 장치 사이의 영상 콘텐트를 스트리밍하는 방법, 영상 콘텐트를 스트리밍하는 서버 및 전자 장치
US11425423B1 (en) * 2022-03-10 2022-08-23 Yendo Hu Memory storage for motion estimation and visual artifact redcution
US11388445B1 (en) * 2022-03-10 2022-07-12 Yendo Hu Mosquito noise smoothing between different video subsections encoded with different compression methods within a video frame

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060203920A1 (en) * 2005-03-14 2006-09-14 Nokia Corporation Method and device for splicing video data in compressed domain
CN1925596A (zh) * 2005-09-02 2007-03-07 上海乐金广电电子有限公司 个人用视频存储装置及其图像播放方法
US20090196344A1 (en) * 2002-07-17 2009-08-06 Dilithium Networks, Incorporated Method and apparatus for transcoding between hybrid video codec bitstreams
US20140380376A1 (en) * 2013-03-15 2014-12-25 General Instrument Corporation Method and apparatus for streaming video
CN107948646A (zh) * 2017-09-26 2018-04-20 北京字节跳动网络技术有限公司 一种视频摘要生成方法与视频再编码方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3976942B2 (ja) * 1998-12-18 2007-09-19 キヤノン株式会社 画像処理装置及び方法、画像処理プログラムが記録されたコンピュータ可読記録媒体
US8661496B2 (en) * 2002-12-10 2014-02-25 Ol2, Inc. System for combining a plurality of views of real-time streaming interactive video
KR100492567B1 (ko) * 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
JP3753726B1 (ja) * 2004-10-13 2006-03-08 シャープ株式会社 動画像再符号化装置、動画像編集装置、プログラム、及び記録媒体
JP5365805B2 (ja) * 2007-05-29 2013-12-11 日本電気株式会社 動画像変換装置、動画像変換方法、および動画像変換プログラム
US9369723B2 (en) * 2011-07-14 2016-06-14 Comcast Cable Communications, Llc Preserving image quality in temporally compressed video streams
CN104641638B (zh) * 2012-06-28 2018-08-03 阿克西斯股份公司 使用虚拟帧内帧对视频内容进行编码的系统和方法
US9787986B2 (en) * 2014-06-30 2017-10-10 Intel Corporation Techniques for parallel video transcoding
US9560366B2 (en) * 2014-10-22 2017-01-31 Broadcom Corporation Video encoding for social media
US10218981B2 (en) * 2015-02-11 2019-02-26 Wowza Media Systems, LLC Clip generation based on multiple encodings of a media stream
US10951914B2 (en) * 2015-08-27 2021-03-16 Intel Corporation Reliable large group of pictures (GOP) file streaming to wireless displays
US10819951B2 (en) * 2016-11-30 2020-10-27 Microsoft Technology Licensing, Llc Recording video from a bitstream

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090196344A1 (en) * 2002-07-17 2009-08-06 Dilithium Networks, Incorporated Method and apparatus for transcoding between hybrid video codec bitstreams
US20060203920A1 (en) * 2005-03-14 2006-09-14 Nokia Corporation Method and device for splicing video data in compressed domain
CN1925596A (zh) * 2005-09-02 2007-03-07 上海乐金广电电子有限公司 个人用视频存储装置及其图像播放方法
US20140380376A1 (en) * 2013-03-15 2014-12-25 General Instrument Corporation Method and apparatus for streaming video
CN107948646A (zh) * 2017-09-26 2018-04-20 北京字节跳动网络技术有限公司 一种视频摘要生成方法与视频再编码方法

Also Published As

Publication number Publication date
US11265599B2 (en) 2022-03-01
US20220182715A1 (en) 2022-06-09
DE102020108357A1 (de) 2020-12-17
US20230300410A1 (en) 2023-09-21
US20200396501A1 (en) 2020-12-17
US11700419B2 (en) 2023-07-11

Similar Documents

Publication Publication Date Title
US11641486B2 (en) Reducing latency in video encoding and decoding
US11265599B2 (en) Re-encoding predicted picture frames in live video stream applications
US9800883B2 (en) Parallel video transcoding
KR20090046812A (ko) 비디오 압축 방법
US9307235B2 (en) Video encoding system with adaptive hierarchical B-frames and method for use therewith
US10735773B2 (en) Video coding techniques for high quality coding of low motion content
WO2009122925A1 (ja) 動画像変換装置、動画像配信システム、動画像変換方法及びプログラム
KR20230053229A (ko) 분산형 병렬 트랜스코딩 방법 및 장치
KR20230053210A (ko) 분산형 병렬 트랜스코딩 방법 및 장치
JP2010098694A (ja) ビデオトランスコーダ
JP2011160280A (ja) 動画符号化装置および方法およびそれらを用いた動画撮像装置

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