CN106068495B - 将使用不同编码参数编码的多个编码成流 - Google Patents

将使用不同编码参数编码的多个编码成流 Download PDF

Info

Publication number
CN106068495B
CN106068495B CN201480076505.4A CN201480076505A CN106068495B CN 106068495 B CN106068495 B CN 106068495B CN 201480076505 A CN201480076505 A CN 201480076505A CN 106068495 B CN106068495 B CN 106068495B
Authority
CN
China
Prior art keywords
virtual
video
frames
stream
frame
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.)
Active
Application number
CN201480076505.4A
Other languages
English (en)
Other versions
CN106068495A (zh
Inventor
肖恩·P.·马拉特
奥伦·谢尔
彼得·W.·诺伊费尔德
万·C.·阮
西娜·艾佛鲁兹
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.)
Motorola Solutions Inc
Original Assignee
Wichiron
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 Wichiron filed Critical Wichiron
Publication of CN106068495A publication Critical patent/CN106068495A/zh
Application granted granted Critical
Publication of CN106068495B publication Critical patent/CN106068495B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • 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/16Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter for a given display mode, e.g. for interlaced or progressive display mode
    • 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/162User input
    • 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/179Methods 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 scene or a shot
    • 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
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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/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
    • H04N21/234363Processing 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 by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • 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
    • H04N21/23439Processing 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 for generating different versions
    • 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/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2353Processing of additional data, e.g. scrambling of additional data or processing content descriptors specifically adapted to content descriptors, e.g. coding, compressing or processing of metadata
    • 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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a 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/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/236Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
    • H04N21/2365Multiplexing of several video streams
    • 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/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43072Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of multiple content streams on the same device
    • 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/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/4728End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for selecting a Region Of Interest [ROI], e.g. for requesting a higher resolution version of a selected region
    • 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
    • H04N21/85406Content authoring involving a specific file format, e.g. MP4 format
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

公开一种用于将源视频流的多个编码成流的***。源视频设备***捕捉和/或接收包括多个源视频帧的源视频。所述源视频设备***将所述源视频帧编码至虚拟帧,其中每个虚拟帧是使用至少一个不同的编码参数被编码的。所述源视频设备***从所述虚拟帧形成容器帧,并通过网络对所述容器帧进行传输。在示例性实施例中,所述容器帧包括与特定源帧相关联的虚拟帧,以及适用于所述容器帧中所有的虚拟帧的容器时间戳。

Description

将使用不同编码参数编码的多个编码成流
相关申请的交叉引用
本申请要求2014年12月11日递交的申请号为14/568081的非临时性美国专利申请的按照35U.S.C.§119(e)规定的权益,该非临时性美国专利申请要求2014年1月15日递交的申请号为61/927952的临时性美国专利申请的按照35U.S.C.§119(e)规定的权益,其公开通过引用而全部并入本文。
技术领域
本发明涉及对视频数据进行编码,以及尤其涉及提供并成流多个编码。
背景技术
在典型的视频监控***中,一台或多台摄像机可通信地耦接至服务器***。随着视频数据被摄像机记录,视频数据被传送至存储其的服务器***,以用于后续的检索。客户端***通信地耦接至服务器***,且可用于请求和接收所记录的视频数据的流。
已开发各项技术用于将视频数据成流至客户端。但是现有技术仍存在缺失。例如,很多技术都无法充分解决对相关视频编码之间的同步的需求。
发明内容
根据所公开实施例的方面,公开一种用于对源视频进行编码的方法。在示例性实施例中,一旦接收到源视频的源帧,对源帧的不同虚拟帧进行编码,其中使用至少一个不同的编码参数对不同虚拟帧中的每个进行编码。从所述虚拟帧形成容器帧,并通过网络传输容器帧。在示例性实施例中,所述容器帧包括虚拟帧和适用于容器帧中所有的虚拟帧的容器时间戳。
在示例性场景中,所述虚拟帧在容器帧中被连接在一起,其中虚拟帧中的每个包括带有定界符的虚拟帧头,该定界符将虚拟帧彼此定界开。所述容器帧可包括容器帧头,该容器帧头包括容器时间戳。所述容器帧时间戳与从其中生成虚拟帧的源帧中包括的时间戳相同。
用于对虚拟帧进行编码的编码参数可以是任意适当的参数,并且可选自例如包括源帧的兴趣域、帧速率、视频质量、压缩比、量化参数、视频分辨率以及压缩技术/编码格式的组。
在示例性实施例中,视频源设备对虚拟帧进行编码并将其传输至控制服务器。视频源设备可包括,例如,用于接收源视频的源帧的处理器,以及通信地耦接至处理器的内存,该内存已将使得处理器如本文中所述地对源帧进行编码并对编码的帧进行传输的语句和指令存储其中。
根据所公开实施例的方面,控制***可将配置命令传输至视频源设备,从而配置多个编码组件,以提供多个不同且独立的分辨率编码。命令可指定,分辨率编码中的至少一个包括多个被单独编码的虚拟流。控制***可从视频源设备接收视频源设备被配置以提供的多个单独虚拟流的描述,其中分辨率编码中的每个包括单独虚拟流中的一个或多个。当控制***接收到多个单独虚拟流的数据流时,***将多个单独虚拟流中的每个与各个分辨率编码相关联。
根据所公开实施例的另一方面,控制服务器可将编码的视频成流至客户端***。在示例性实施例中,控制服务器接收包括指示多个编码中的哪些将被发送至客户端的信息的客户端成流参数。多个编码中的每个可包含使用至少一个不同的编码参数编码的视频数据。服务器确定多个编码中的哪些满足客户端成流参数,并将满足客户端成流参数的多个编码中的一个或多个传输至客户端。编码参数可以是任意适当的参数,并且可以选自例如包含源帧的兴趣域、帧速率、视频质量、压缩比、量化参数、视频分辨率以及压缩技术/编码格式的组。在示例性实施例中,多个编码可包括分别根据不同的第一和第二兴趣域(ROI)编码的第一和第二编码。ROI可以是互斥的。
根据所公开实施例的另一方面,第一和第二编码可在显示器上显示。在示例性场景中,第一和第二编码可在显示器的相邻部分上显示。在另一个示例性场景中,ROI可以至少部分地重叠。第一ROI可以是第二ROI的子集,且第一编码可以是以比第二编码更高的分辨率被编码的。
根据所公开实施例的另一方面,公开一种方法用于显示多个编码,其中每个编码包括使用至少一个不同的编码参数编码的视频数据。在示例性场景中,该方法可包括:在客户端处接收多个编码,其中多个编码包括分别根据不同的第一和第二兴趣域(ROI)编码的第一和第二编码。在示例性场景中,ROI可以是互斥的。编码可作为容器帧的部分被传输至客户端。容器帧可包括其中每个对应于编码中的一个的多个虚拟帧,以及还可包括适用于所有的虚拟帧的容器时间戳。第一和第二编码在客户端的显示器上显示。
提供此发明内容以以简单的方式介绍以下将在具体实施方式中进一步描述的概念的选中部分。本发明内容并非意在识别所要求保护的主题的关键特征或必要特征,也并非意在用于限制所要求保护的主题的范围。以下将描述其他特征。
附图说明
当结合附图阅读时,可以更好地理解前述发明内容以及以下对示例性实施例的附加描述。需要理解的是,所公开***和方法的可能实施例并不限于所绘示的这些。
图1绘示了适于生成并存储多个分辨率编码的示例性监控***。
图2绘示了适于显示多个分辨率编码的示例性显示器。
图3绘示了适于生成并接收多个分辨率编码的示例性视频源设备以及控制服务器。
图4绘示了由视频源设备和控制服务器提供的示例性功能特征。
图5A绘示了包含多路复用的虚拟帧和用于描述这些虚拟帧的描述符的示例性容器帧。
图5B绘示了包含多路复用的容器帧的示例性视频流,控制服务器对该示例性视频流进行多路分用和处理。
图6绘示了描述包含在多个分辨率编码中的单独虚拟流的示例性视频源设备响应。
图7绘示了不同分辨率下的兴趣域的示例性编码的例证。
图8绘示了用于将来自视频源设备的数据成流的示例性方法的流程图。
图9绘示了用于对源视频进行编码的示例性过程的流程图。
图10绘示了用于对源视频进行编码的示例性方法的流程图。
图11绘示了由控制服务器和客户端提供的示例性功能特征。
图12绘示了包含容器帧的示例性视频流,控制服务器对该容器帧进行多路复用并将其发送至客户端。
图13绘示了用于将客户端成流参数从客户端传输至控制服务器的示例性方法。
图14绘示了用于将包含容器帧的数据流从控制服务器传输至客户端的示例性方法。
图15绘示了用于确定多个虚拟流中的哪些将被多路复用并被从控制服务器发送至客户端的示例性方法。
图16绘示了适于通信来自视频源设备的视频的活跃会话的示例性客户端服务器***的结构框图。
图17绘示了图像合成方法的示例性应用。
具体实施方式
申请人在此公开了用于将源视频流的多个编码成流的***及方法。在示例性实施例中,源视频设备***可以捕捉和/或接收包括多个源视频帧的源视频。编码前的视频被称为“源视频”,其中视频的每一帧为“源帧”。源视频设备***将源视频帧编码至虚拟帧,其中虚拟帧中的每个是使用至少一个不同的编码参数而被编码的。编码参数可以是任意适当的参数,包括例如兴趣域、帧速率、视频质量、视频分辨率、以及压缩技术/编码格式。源视频设备***从虚拟帧形成容器帧,并通过网络传输容器帧。在示例性实施例中,容器帧包括与特定源帧相关联的虚拟帧,以及适用于容器帧中所有的虚拟帧的容器时间戳。
在将源视频的多个编码传输至客户端时,期望客户端能够对来自它所接收到的多个编码的帧进行同步。同步解决至少两个问题:
1)当客户端从一个编码切换至另一个时,编码之间的任何时间偏移将会在视频中显示为时间的间断或“跳跃”,这是不可取的。
2)当客户端同时地显示表示源视频的相邻兴趣域(后文中互换地称为“ROI”)的编码时,这些编码之间的任何时间偏移使得在这些兴趣域之间穿越的任意对象也将经历时间的间断或“跳跃”,这阻碍了对象在这些兴趣域之间平稳地变迁。这也是不可取的。
存在对视频进行同步的很多传统方法。例如,当使用JPEG2000格式形成编码时,不同的分辨率和图像片(image tile)可以被嵌入相同的比特流。这种技术的弊端包括:压缩标准受限于尚未广泛应用于消费空间的JPEG2000,以及将不同的分辨率和片(tile)彼此分离需要对比特流进行解析。
又例如,当通过实时传输协议(RTP,一种最常见的用于实时传输的媒体传输协议)传输视频时,RTP控制协议(RTCP)用于恢复协调世界时(UTC)时间,UTC时间由生成和传输流的摄像机为每个流的每个视频帧生成。当以这种方式传输多个编码时,摄像机利用不同的RTP流传输编码中的每个。可以恢复用于帧的UTC时间,并且可以使用此时间同步来自不同流的视频。但是,由于其被同步至的时间源的变化或由于此时间源中的误差,摄像机时间上的UTC可能会经历时间的间断或“跳跃”。在UTC时间中的任何跳跃将导致用于每一帧的恢复后的UTC时间的变化。但是,此时间变化将不会同时影响每个流。因此,在UTC时间在摄像机上跳跃的每个时刻,不同流的帧将暂时不同步。从用户的角度来说,这是不可取的。
为了避免在客户端上对不同流之间的帧的同步的需求,如文中所述,可以在摄像机上同步不同编码的帧,将具有相同UTC时间戳的所有帧打包至容器帧,并将单个流的容器帧传输至客户端。视频源设备,例如摄像机,生成包含源帧的源视频。摄像机将UTC时间戳施加至每个源帧(“源帧时间戳”)。视频源设备生成每个源帧的多个编码,通过使用至少一个不同的编码参数将多个编码中的每个与其他编码区分开来。由于源帧编码中的每个生成自相同的源帧,所以他们都共享相同时间戳。视频源设备从共享公用时间戳的源帧编码生成容器帧。视频源设备将与各种源帧编码的时间戳相同的时间戳(“容器时间戳”)附加至容器帧的头部(“容器帧头”)。视频源设备还通过生成其中每个都包括具有头部(“虚拟帧头”)的不同源帧编码的帧以生成在后文中所称作的“虚拟帧”,该头部包括定界符,定界符包含如以下进一步论述的虚拟流标识符或“虚拟流id”。多个编码中的任意一个的虚拟帧共同包括“虚拟流”。如本文中所使用,相比于OSI模型的数据链路层处的数据结构,容器帧和虚拟帧通常是指OSI模型的应用层处的数据结构。
示例性编码***
图1绘示了能够提供视频的多个分辨率编码的监控***100。尽管图1的示例性实施例将不同源兴趣域的多个分辨率用作可在虚拟流之间存在差异的编码参数的示例,在可选的示例中,任意一个或多个编码参数可在虚拟流之间存在差异。***100包括提供包括从多个视频源设备110、114接收视频、管理接收到的视频的存储以及将视频成流至一个或多个客户端142的各种功能的控制服务器102。控制服务器102可由一个或多个物理计算机和/或由一个或多个虚拟计算机提供。在一个可选实施例中(未示出),控制服务器102功能可通过视频源设备110、140本身中的一个或多个实施,然后其可将多个分辨率编码直接发送至客户端142。控制服务器102可与多个数字IP摄像机110a、110b、110c、110d(统称为IP摄像机110)以及多个成流编码器114a、114b(统称为编码器114)相连,其中成流编码器可耦接至一个或多个数字或模拟摄像机112a、112b、112c(统称为摄像机112)。IP摄像机110以及编码器114可统称为视频源设备。视频源设备可通过网络116将视频成流至控制服务器102。网络116可包括任何适当的技术,且可由一个或多个单独网络提供,这些单独网络包括例如有线局域网(LAN)、无线局域网(WLAN)以及广域网(WAN)。
控制服务器102可包括虚拟流管理器功能。驻存在控制服务器102上的管理控制服务器102从设备接收的虚拟流的虚拟流管理器即为后文中的“服务器-设备虚拟流管理器”或“服务器-设备VS管理器”104。服务器-设备VS管理器104提供用于配置视频源设备110、114以将独立的多个分辨率编码成流的功能。服务器-设备VS管理器104还可包括从视频源设备110、114接收流并将接收到的流多路分用至单独虚拟流的功能。多路分用的虚拟流可以以不同方式(包括,例如通过移除虚拟流中的一个或多个)组合以及再复用。来自视频源设备110、114的流的单独虚拟流可被提供至存储器管理功能108用于存储。进一步地,单独虚拟流中的一个或多个可被提供至附加的虚拟流管理器功能;特别地,驻存在控制服务器102上的管理控制服务器102发送至客户端142的虚拟流的虚拟流管理器即为后文中的“服务器-客户端虚拟流管理器”或“服务器-客户端VS管理器”106。单独虚拟流可从存储器管理功能108或从服务器-设备VS管理器104被提供至服务器-客户端VS管理器106。服务器-客户端VS管理器106通过网络144将一个或多个虚拟流成流至客户端142。
视频源设备110、114中的每一个可用于依据各个视频源设备110、114的能力、其他组件的能力(如网络116的带宽、网络144的带宽、监控***的可用存储空间以及需求)以及对于视频源设备110、114的操作的其他合适的参数材料,提供各种虚拟流编码。视频源设备110、114可提供单个分辨率编码,或多个单独分辨率编码。进一步地,每个分辨率编码可通过多个虚拟流提供。图1中绘示了流118,其通过网络116从IP摄像机110被成流至控制服务器102。
如所绘示,流118包括多个单独分辨率编码120、122、124。单独分辨率编码120、122、124被绘示为对源视频的相同部分进行编码,该相同部分可被设想为摄像机110a的传感器的大体全部兴趣域。例如,分辨率编码120可被编码至源的全分辨率,分辨率编码122可被编码至源分辨率的一半,以及分辨率编码124可被编码至源分辨率的1/4。单独分辨率编码120、122、124中的每个使用各个编码格式如H.264或JPEG对源视频进行编码。在可选实施例中,取代调整分辨率,此外地或可选地,可通过改变一个或多个不同的编码参数(如帧速率和视频质量)将流118编码至分辨率。
单独分辨率编码120、122、124中的每个可由流118中的一个或多个虚拟流126、128、130提供。每个虚拟流126、128、130包括以各个分辨率编码120、122、124的压缩水平编码的视频源的至少部分。如所绘示,全分辨率编码120由3×4片的虚拟流提供。12个虚拟流126中的每个以相同的编码格式编码,且当12个虚拟流被组合时,它们提供源视频的全分辨率。在可选的实施例中,不同的编码格式或不同的编码参数可用于对这些12个虚拟流中的任意一个或多个进行编码。分辨率编码122被绘示为由单个虚拟流提供。因此,虚拟流128可具有视频源的1/2的分辨率。同样地,虚拟流130可具有视频源的1/4的分辨率。尽管已描述为提供较大区的片,但虚拟流并不需要形成片。相反,每个虚拟流可对特定兴趣域进行编码,该特定兴趣域可包括完整的源视频或其部分。各种虚拟流可重叠相同的兴趣域,或可对源视频的不重叠部分进行编码。
服务器-设备VS管理器104可从视频源设备110、114接收流,如流118。服务器-设备VS管理器104可将来自接收到的流118的单独分辨率编码120、122、124的虚拟流多路分用,且多路分用的虚拟流可被传递至存储器管理功能108。此外,虚拟流中的一个或多个可被传递至服务器-客户端VS管理器106用于成流至客户端142。
如所绘示,存储器管理功能108在数据存储器132中存储分辨率编码的虚拟流。存储器管理功能108可将分辨率编码134中的每个传递至数据存储器。存储器管理功能108以及数据存储器132可在不同的存储区域或层中存储视频数据,从而降低所需存储器的量。如所绘示,短期存储层136可存储每个分辨率编码。在已经过一段时间之后,确定全分辨率编码不再需要被存储。全分辨率编码可从存储器中移除,剩余的分辨率编码在存储层138中存储。同样地,一段时间后,确定中等分辨率编码不再需要被存储,同样地可将其从存储器中移除,以及剩余的分辨率编码在140中存储。在示例性实施例中,虚拟流被分开存储于存储区或层136、138和140中的每个中,且每个虚拟流已被存储的时间寿命或长短被独立地维护。在这样的实施例中,在已经过一段时间后,可从仍存储于存储区136、138和140中的虚拟流重建容器帧。
数据存储器132可由与控制服务器相同的计算***提供。可选地或此外地,数据存储器可由分离的计算设备提供。更进一步地,尽管被绘示为直接连接至控制服务器,可以考虑,数据存储器可通过网络耦接至控制服务器。
如上所述,服务器-客户端VS管理器106可从服务器-设备VS管理器104或存储器管理功能108接收分辨率编码,用于通过网络144成流至监控客户端142。分辨率编码可来自不同的视频源设备。如所绘示,每个分辨率编码146a、146b、146c、146d可单独地成流,或者一个或多个分辨率编码可被一起组合为单个流。如所绘示,与来自不同的视频源设备的低分辨率编码相对应的多个虚拟流148a、148b、148c、148d可被成流至监控设备142。监控设备142可接收并解码虚拟流148a、148b、148c、148d,并显示解码的视频150。
可选地,图1中未示出,诸如监控客户端142的客户端设备或在服务器(如控制服务器102)上运行的客户端进程,可接收并解码虚拟流148a、148b、148c、148d中的一个或多个以创建类似视频150的合成视频流,但并不显示它。相反,此类客户端设备或进程可对合成视频流重新编码以显示在移动设备(如移动电话、笔记本电脑、平板电脑等)上,然后通过网络(如网络116或网络144)将重新编码的合成流传输至移动设备。移动设备然后可以以移动形式为移动设备的用户显示视频。
图2绘示了显示视频的不同分辨率编码的显示器;显示器可以是计算机显示器,但可选地也可是任何适当的显示器,例如平板电脑的显示器、智能手机显示器或拼接显示器。图2绘示了三种不同的视图200、212、218。首先,监控客户端显示视图200,其包括四个虚拟流的最低分辨率编码202、204、206、208。例如,可同时地显示来源于四个不同摄像机的虚拟流。可选中低分辨率编码中的一个202用于放大,例如通过利用鼠标或其他指示器210点击它。当全屏显示分辨率编码202时,编码的质量可能低于所期望的。相应地,可成流并显示来源于选中的摄像机视图的中等分辨率编码214,如视图212中所绘示。用户可能希望进一步放大,从而查看显示的分辨率编码214的部分216。同样,当被放大时,分辨率编码214的质量可能不足以提供期望的图像质量。相应地,全分辨率编码可用于显示放大的部分220,如视图218中所绘示。
如上所述,全分辨率编码可包括多个虚拟流。相应地,仅覆盖所选中的放大域的全分辨率编码的虚拟流需被成流至监控客户端142。例如,如果全分辨率被提供为4×3网格的虚拟流,第一行以及第三和第四列中的虚拟流可覆盖期望域。
如上所述,当将视频成流至监控位置时,提供多个虚拟流允许有效率的带宽利用,而不管是来自多个摄像机的视频被显示或是仅单个摄像机的小部分被放大用于显示。
图3绘示了能够将多个分辨率编码成流的视频源设备和功能以及控制服务器和功能。***300被绘示为包括控制服务器302以及视频源设备316。控制服务器302包括用于处理指令的中央处理单元304。指令可存储于内存306中。控制服务器302可进一步包括非易失性存储器308,用于永久存储数据和指令。控制服务器302还可进一步包括一个或多个输入/输出(I/O)接口310。I/O接口允许输入和/或输出组件与控制服务器相连。例如,网络接口卡(NIC)可与控制服务器302相连以将控制服务器302连接至通信网络。
CPU 304可执行存储于内存中的指令。如312所绘示,当指令被执行时,可配置控制服务器302以执行上述的功能,且还实施服务器-设备VS管理器314,其功能描述如下。
视频源设备316,可以是例如摄像机设备或者***,包括中央处理单元318,用于处理指令。指令可存储于内存320中。视频源设备316可进一步包括非易失性(NV)存储器322,用于永久存储数据和指令。视频源设备316还可进一步包括一个或多个输入/输出(I/O)接口324,I/O接口允许输入和/或输出组件与视频采集器相连。例如,网络接口卡(NIC)可连接至输入/输出接口324以将视频源设备316连接至通信网络。进一步地,如果视频源设备316为摄像机,不论是IP摄像机还是模拟摄像机,I/O接口可进一步将传感器连接至CPU用于捕捉图像数据。
CPU 318可执行存储于内存中的指令。如326所绘示,当指令被执行时,可配置视频源设备316以提供设备虚拟流(VS)管理器328以及编码器功能330。
控制服务器302的服务器-设备虚拟流(VS)管理器314以及视频源设备316的设备VS管理器328协作以对视频源设备316进行配置(332),其中视频源设备可按照期望或需要包括例如摄像机。可配置编码器功能330以提供多个编码组件,该多个编码组件可各自地编码视频和指定设置,其可包括多行和多列的单独编码的片。由编码组件提供的编码可被成流至控制服务器302,如数据流334所绘示。
可以理解的是,虽然本文中的附图和描述涉及分离的视频源设备316和服务器102,在一些实施例中,来自两个所述***的功能可存在于单个***中。例如,视频源设备316可以是提供关于摄像机和图像采集器的本文中所述的所有功能以及关于控制服务器102的本文中所述的功能的摄像机***。在这样的实施例中,摄像机***可以像具有控制和与其他摄像机***通信的能力的服务器那样操作。
图4绘示了能够将多个分辨率编码成流的其他视频源设备功能以及控制服务器功能。例如,可通过存储于内存中的指令将功能提供于上述的控制服务器302中。当被控制服务器302的CPU执行时,指令可提供网络层协议功能402、应用层协议功能404以及配置功能408。可以理解的是,在控制服务器302中还可提供其他功能。
同样地,通过由处理器执行指令,视频源设备功能也可被提供于视频源设备(如上所述的视频源设备316)中。视频源设备功能可包括网络层协议功能410、编码器功能412以及应用层协议功能414。视频源设备可提供图4中未示出的附加功能。
控制服务器302和视频源设备316的网络层协议功能402、410协作以按照期望的方式配置视频源设备316。网络层协议功能402、410为视频设备提供标准网络接口,并允许用于发现、配置、管理并控制兼容设备。网络层协议功能402、410在控制服务器302和视频源设备316之间提供公用接口,该公用接口允许视频源设备316及其能力的发现以及设备316的配置。如以下进一步所述,网络层协议功能402、410可用于配置编码器功能416,从而设置设备316能够将包括特定兴趣域的编码的多个独立分辨率编码成流,如上所述。一旦按照期望配置,视频源设备316可利用已配置的编码器功能对源视频进行编码,从而提供已配置的分辨率编码的数据流。使用应用层协议功能404、414,可将来源于编码器的数据流从视频源设备316传输至控制服务器302,其中应用层协议功能404、414提供实时控制以及数据流418的传输。
一旦在控制服务器302处接收到数据流418,可处理该数据流以将属于相同分辨率编码的虚拟流分组在一起。如上所述,单个分辨率编码可由一个或多个被独立编码的兴趣域组成。随后可按照期望进一步处理分辨率编码,例如用于存储或成流至监控客户端。
控制服务器302还可包括配置功能408。配置功能408可允许用户设置、查看和/或修改监控***的组件的配置参数。例如,配置功能可允许用于视频源设备的期望编码器配置。
图5A绘示了包含多路复用的虚拟帧和用于描述这些虚拟帧的描述符的容器帧506。在图5A中,示出与单个会话相关联的两个帧:存储视频数据的容器帧506,以及存储对应的音频数据的音频帧507。容器帧506和音频帧507被绘示为用于分别保存视频和音频数据的数据结构的内存中表示。帧506和507中的每个都包含描述符、时间戳和有效载荷。容器帧506的有效载荷包括指向每个虚拟流有效载荷的间接表。可以理解的是,虽然在图5A的示例性实施例中音频帧与视频帧相关联,但音频帧是可选的。此外,音频帧仅仅是示例性的,其他信息例如元数据可以以本文中关于音频帧所述的方式类似地与虚拟帧成流。
如关于图6详细地论述,以下,在将容器帧506和音频帧507从视频源设备传输至控制服务器302之前,首先通过可靠传输机制(例如TCP、HTTP或RTSP)描述会话描述。来自容器帧506和音频帧507的描述符检索自这些帧506和507并被序列化至会话描述信息509,在一个实施例中,会话描述信息509可作为文件存在于计算内存中。描述信息/文件509列出包含容器帧506和音频帧507的音频和视频的特性以及统一资源标识符(URI),从中可建立传输以通过网络将这些媒体文件成流。虚拟流包括附加特性,如用于包级传输多路复用及多路分用的虚拟流id以及编码参数如源ROI和图像分辨率。
在一个实施例中,帧506和507中的每个都被封包并通过不可靠传输机制如UDP从视频源设备被发送至控制服务器。在可选的实施例中,不同的传输机制可用于传输帧506、507。
图5B中所示的视频流118的部分包括第一和第二容器帧506a-c(统称为“容器帧506”),容器帧506a-c在它们通过网络116被传输至控制服务器之前由视频源设备准备。容器帧506a-c中的每一帧分别包括该容器帧506a-c的所有虚拟帧508公用的时间戳510a-c。每个虚拟帧头包括帧定界符,帧定界符为虚拟帧508中的每一帧彼此定界。在这个示例性实施例中,帧定界符包括虚拟流id。图5B中的容器帧506各自包括用于H.264编码的视频的一个虚拟帧508a、508c、508e以及用于JPEG编码的视频的另一个虚拟帧508b、508d、508f。与通过各自具有其自身时间戳的分离的流将H.264和JPEG视频发送至控制服务器相反,在所绘示的实施例中,将H.264以及JPEG视频放入容器帧506且然后传输容器帧506实质上是将H.264和JPEG视频时分复用至控制服务器。
将成组的虚拟帧508与单个源帧时间戳相关联有利于虚拟帧508之间的同步且因此有利于使得来自不同虚拟流的视频显示在客户端142上以及有利于延迟的减少。当服务器-设备VS管理器314接收流118时,它能够基于每个帧506的时间戳510对容器帧506的每一帧进行多路分用,且随后能够将容器帧506彼此多路分用,并将容器帧506中的虚拟帧508中的每个与任意其他虚拟帧508多路分用,如图5B所绘示。控制服务器302随后可按照期望处理容器帧506以及虚拟帧508中的任意一个或多个,例如通过将容器帧506存储于数据存储器132中。
图6绘示了来自视频源设备316的描述提供多个分辨率编码的单独虚拟流的响应,且其为会话描述信息/文件509的特定示例。响应600可描述将提供自视频源设备316的流。响应600描述视频流中的每个虚拟流。视频流可具有多个单独虚拟流610a、610b、610c、612以及614。提供每个虚拟流的编码参数。例如,每个虚拟流可包含虚拟流的唯一标识符602、由虚拟流编码的视频源的兴趣区或域604、编码的虚拟流的结果分辨率606以及编码的虚拟流608的质量的指示。如图所示,虚拟流可以以相同的编码器设置对不同兴趣域进行编码。例如,虚拟流610a、610b、610c以相同的编码器设置对源视频的不同兴趣域进行编码。进一步地,虚拟流可以以不同的参数设置对相同兴趣域进行编码。例如,虚拟流612和614对相同兴趣域进行编码,但导致不同的分辨率。流的描述600可以以各种格式被提供,并提供足够信息以允许组件(例如控制服务器)接收流,从而适当地多路分用并识别组件虚拟流。
图7绘示了不同分辨率下的片的编码。虚拟流可将视频源的特定区编码至特定尺寸。例如,源视频可具有4944×3280的区702,第一虚拟流可对整个区的位于x=0,y=0(即源视频的左上方)的具有尺寸为1232×1080的部分704进行编码。第一虚拟流可提供区704的全分辨率编码,这将导致第一虚拟流编码706具有尺寸为1232×1080。第二虚拟流也可对相同的区704进行编码。但是为了提供源分辨率的1/4,编码可降低样本分辨率。同理,对相同的源视频区704进行编码的第二虚拟流708将具有尺寸为308×270。
图8绘示了将数据从视频源设备316成流至控制服务器302的方法800。在块802,配置视频源设备的编码组件。配置操作可包括将一个或多个配置命令从例如控制服务器302传输至可包含编码器114的一个或多个视频源设备316。视频源设备316的编码组件被配置,以在从视频源设备316发出的流内提供多个虚拟流。编码组件可被配置,从而提供源视频的至少部分的独立分辨率编码。独立分辨率编码中的至少一个由多个虚拟流提供,其中每个虚拟流包括分辨率编码的马赛克(mosaic)的片。视频源设备316中包括的编码组件可用于提供每个虚拟流。
一旦用于流的编码组件被配置,在块804,将如上关于图5A(附图标记509)和图6(附图标记600)所述的流的描述从视频源设备316通信至控制服务器302。在示例性实施例中,响应于控制服务器302发出的描述请求,流描述509可由视频源设备316提供至控制服务器302。接收到的描述509对视频源设备316被配置以提供的多个单独流进行描述。每个期望的分辨率编码可由描述509中描述的一个或多个虚拟流提供。每个虚拟流的描述509可包含虚拟流的标识符以及虚拟流的编码信息和由虚拟流编码的源视频的区的指示。
在块806,数据流本身被从视频源设备316通信并在控制服务器302处被接收。在块808,控制服务器302将每个虚拟流与各个分辨率编码相关联。可使用流描述509中的信息完成识别虚拟流中的哪些与各个分辨率编码相关联。此外,如果多个虚拟流对源视频的相同区进行编码,则可能需要利用在虚拟流中编码的附加信息以确定虚拟流与哪个分辨率编码相关联。一旦每个虚拟流与各个分辨率编码相关联,可进一步处理相同分辨率编码的虚拟流。例如,在块810,可提供每个分辨率编码的虚拟流用于存储。虚拟流和流描述509可被彼此相关地存储。可选地或此外地,在块812,分辨率编码的一个或多个虚拟流可被成流至一个或多个监控客户端。可以理解的是,虽然以上描述中隐含着在单独虚拟流被存储和/或传输至客户端之前处理多个虚拟流,但每个虚拟流是独立可解码的,并且可被立即存储和/或发送至客户端。
以上已经描述对源视频的不同兴趣域进行编码。不同的编码的兴趣域可对整个源视频进行编码,或可只对源视频的部分进行编码。当在被显示的编码的兴趣域之间切换时,或当同时显示多个兴趣域时,不管是彼此相邻以提供源视频的马赛克还是彼此叠加,所显示的编码的同步之间的任何差异对查看者是显而易见的。这种同步的不足提供不可取的用户体验。如以下参考图9和图10进一步所述,对兴趣域一起进行编码和多路复用以维持多个虚拟流之间的同步是可能的。
图9示例性绘示了用于对多个兴趣域进行编码的过程。过程900对源视频902的流进行编码,其中源视频902包括多个源帧904a-d(统称为源帧904)。源帧904的数量可依据视频源的帧速率而改变。例如,视频源流每秒可包含30帧,视频源流的帧速率可高于或低于30帧/秒。源帧的每一帧包含源帧时间戳(未显示),该源帧时间戳识别例如当源帧被生成时的UTC。
可配置一个或多个编码器906以将视频源帧904中的每个编码至多个编码的虚拟帧908。如图9中所绘示,第一视频源帧904a被编码至高分辨率编码910a、中等分辨率编码910b以及低分辨率编码910c。尽管被绘示为每个对整个视频源帧904a进行编码,但不同的编码的虚拟帧中的每个可对视频源帧的不同兴趣域进行编码。进一步地,尽管编码的虚拟帧908被描述为是以不同于源视频帧904a的分辨率而被编码的,可以考虑的是,编码的虚拟帧可以是以相同的分辨率被编码的但可在其他编码参数(如编码格式、帧速率以及视频质量)方面有所不同。编码器906可以以循环的方式对虚拟帧908的每一帧进行编码。可选地或此外地,一个或多个编码器可用于对不同的虚拟帧进行编码。如果使用多个编码器,则可需要提供一个机制,用于追踪哪些编码的虚拟帧与相同的视频源帧相对应。这可以通过利用公用标识符对每个编码的虚拟帧帖标签来完成。可选地或此外地,每个编码器的输入和输出可被追踪,从而确定输出的编码的虚拟帧与哪个视频源帧相对应。在过程900中的这个阶段,每个虚拟帧包括虚拟帧头,该虚拟帧头包括从源帧时间戳得到的虚拟帧时间戳。
一旦视频源帧已被编码至多个虚拟帧,虚拟流多路复用器912对与相同的视频源帧相对应的编码的虚拟帧中的每个一起进行多路复用。虚拟流多路复用器912将多个编码的虚拟帧910a、910b、910c多路复用至单个容器帧914,然后该单个容器帧可通过网络被传输至例如控制服务器302。多路复用通过将虚拟帧连接在一起来完成,其中每个虚拟帧具有定界虚拟帧的虚拟帧头且容器帧具有为容器帧彼此定界的容器帧头。尽管只有视频流被绘示为被多路复用至帧容器914,可以考虑的是,可包含其他数据例如音频数据、分析数据以及元数据信息。容器帧914包括容器帧头,该容器帧头包括从虚拟帧时间戳得到的容器帧时间戳。每个虚拟帧头包括识别特定虚拟帧的虚拟流id,如上关于图5A、5B所详细论述。
通过将与相同的视频源帧相对应的所有编码的虚拟帧多路复用至公用容器帧,可以维持单独虚拟流的完全同步。相应地,可以同时而没有任何同步差异地显示多个编码的兴趣域,这样可以提供改进的用户体验。
图10绘示了用于对源视频进行编码的方法1000。在块1002,视频源设备110从正被编码的视频源流接收源帧。在块1004,一个或多个编码器对源帧的多个虚拟帧进行编码。可使用不同的参数对每个虚拟帧进行编码,该不同的参数包括被编码的源帧的域、编码的帧速率、编码的质量、编码的虚拟帧的分辨率、所使用的压缩技术/编码格式以及其他编码参数。在块1006,视频源设备110和/或编码器114将多个编码的虚拟帧多路复用至容器帧。容器帧对从相同源帧编码的所有虚拟帧一起进行多路复用。如果两个或更多个虚拟流是以不同的帧速率被编码,则容器流的每个容器帧可不包括每个虚拟帧。例如,如果一个虚拟流以30虚拟帧/秒(fps)被编码而另一个虚拟流以15虚拟帧/秒被编码,那么,每个容器帧将包括30fps编码的虚拟帧,而仅每隔一个容器帧将既包括30fps编码又包括15fps编码。可选地,15fps编码的帧可被复制以包含于每个容器帧中。进一步地,并非彼此的倍数的两个或更多个不同的帧速率被编码,容器流的帧速率可被提高至所有编码的帧速率的最小公分母。例如,如果一个虚拟流以20fps被编码,第二虚拟流以30fps被编码,那么容器流帧速率可为60fps。一旦虚拟帧被一起多路复用至容器帧,在块1008,容器帧可被传输至期望目的地,如上述的控制服务器。
服务器与客户端交互
图11绘示了用于将多个编码成流至客户端142的***1100。***1100包括控制服务器102和客户端142。控制服务器102包括用于处理指令的中央处理单元1104。指令可被存储于内存1106中。控制服务器102可进一步包括非易失性存储器1108,用于永久存储数据和指令。控制服务器102还可进一步包括一个或多个输入/输出(I/O)接口1110。I/O接口允许输入和/或输出组件与控制服务器102相连。例如,网络接口卡(NIC)可与控制服务器102相连以将控制服务器102连接至通信网络。
CPU 1104可执行存储于内存中的指令。如1107所绘示,当指令被执行时,可配置控制服务器102以提供服务器-客户端VS管理器106,连同上述的其他功能。如以下详细论述,服务器-客户端VS管理器106使得控制服务器102将多个分辨率编码成流至客户端142。
客户端142包括用于处理指令的中央处理单元1118。指令可被存储于内存1120中。客户端142可进一步包括非易失性存储器1122,用于永久存储数据和指令。客户端142还可进一步包括一个或多个输入/输出(I/O)接口1124。I/O接口允许输入和/或输出组件与CPU1118相连,从而许可对客户端142从服务器102接收到的流进行显示;在绘示的实施例中,显示器1127为此与一个I/O接口1124相连。
CPU 1118可执行存储于内存1120中的指令。如1126所绘示,当指令被执行时,可配置客户端142以提供客户端VS管理器1128以及解码器功能1130。
控制服务器102的客户端管理功能106与客户端142的客户端VS管理器1128协作,以通过交换初始化数据1132以及通过客户端142向控制服务器102发送客户端成流参数1133,按照期望或需求配置从控制服务器102至客户端142的成流。解码器功能1130可被配置以提供多个解码组件,该多个解码组件可各自地解码视频和指定设置,其包括多行和多列的单独编码的片。通过控制服务器102使用或被转发的所存储的编码的流可被成流至客户端142,如被绘示为数据流1134。
现在,参考图12,示出视频流118,该视频流由服务器-客户端VS管理器106通过多路复用多个容器帧506生成,并随后由服务器-客户端VS管理器106发送至客户端VS管理器1128。如上关于图5B所论述,包含于容器帧506的任意一个中的虚拟帧508的每个都包括带有定界符的虚拟帧头,该定界符在虚拟帧之间定界。容器帧506还各自包括适用于该容器帧中所有的虚拟帧508的时间戳508。图12中,服务器-客户端VS管理器106存取的容器帧506可从数据存储器132和视频源设备二者或其中之一获得。在图12所示的示例性场景中,服务器-客户端VS管理器106已确定只有H.264虚拟流将被传输至客户端142;因此,发送至客户端VS管理器1128的容器帧506的每个包括H.264虚拟流,并且不包括JPEG流。一旦客户端VS管理器1128接收到视频流118,其将视频流多路分用,并以类似于如上关于图5B所述的服务器-设备VS管理器执行的方式显示或存储虚拟流。例如,客户端142可将各种虚拟流整合在一起以形成更大的图像或许可虚拟流彼此重叠,如下详细地论述。
但是,在接收视频流118之前,客户端142从控制服务器102请求视频流118。以下将关于图13和图15描述客户端142请求视频流118的方式以及控制服务器102选择虚拟流以发送至客户端的方式。
现在,参考图13,示出用于将客户端成流参数1133从客户端142传输至控制服务器102的方法1300。客户端成流参数1133是控制服务器102在确定将哪些虚拟流发送至客户端142用于显示在显示器1127上时所考虑的参数。用于执行方法1130的指令可被编码为程序代码并存储于内存1120中用于由CPU 1118执行。
CPU 1118在块1302开始执行方法1130,并进行至块1304,在块1304,它以类似于如上关于图1-10中所述的控制服务器102和视频源设备如何建立会话的方式建立与控制服务器102的会话。作为建立会话的部分,从控制服务器102发送至客户端142的初始化数据1132包括描述编码参数、分辨率和像素数二者或其中之一以及虚拟流126、128、130中的每个的位置的会话信息。如以下详细地论述,在一个示例性实施例中,客户端142可将关于虚拟流126、128、130的此信息呈现给用户,以许可用户指定显示虚拟流126、128、130中的哪些。
初始化之后,CPU 1118显式或隐式地接收描述显示虚拟流126、128、130中的哪些的用户输入,此用户输入可包括:
(a)视图区。视图区是用户用于查看视频的显示器1127、150上的窗口中的多个像素,并通常以像素的数量表示。例如,在图1中,客户端142使用整个显示器150显示来自四个虚拟流的视频。用于每个流的视图区相应地是用于整个显示器的像素的总数除以2的质量偏置参数次方,如下所述。
(b)图像域。图像域/兴趣域表示用户想在显示器1127、150上显示的图像的部分。可通过提供图像域的左上坐标和右下坐标指定图像域。例如,当试图放大图像的部分时,用户可以使用鼠标或其他指向设备在显示于显示器上的图像的部分上划矩形。该矩形将表示图像域。
(c)显示质量偏置参数。显示质量偏置参数表示用户是否将更喜欢以低帧速率(以帧/秒衡量)代价的高质量(代表高像素数)。该参数可被直观地设定为“高”、“中”或“低”质量,其中“高质量”表示用户希望通过牺牲帧速率而获得高像素数,“低”质量表示用户希望获得高帧速率,但像素数/分辨率低。
(d)色彩规格参数。色彩规格参数表示用户是否想以全色或单色查看视频。
(e)带宽限制参数。带宽限制参数表示用户是否希望在特定速率下限定总带宽利用,如以比特/秒衡量。用户可以决定不对带宽做任何严格的限制。
(f)视频的性质与使用。用户可指定是将从存储器检索(即从数据存储器132成流)还是直播查看待被查看的视频,并且指定视频是否用于控制一个硬件,如变焦(PTZ)摄像机。如果视频将从数据存储器132成流,那么延时相对不重要,并且具有相对高像素数或帧速率的视频可以以相对高延时的代价传输。相反,如果视频是直播或用于控制硬件,则低延时就很重要,从而实时获得图像。在这种情况下,低延时优于高质量视频。
(g)显示虚拟流126、128、130中的哪些。在用户知道哪些虚拟流是可用的实施例中,与通过调整以上列出的标准而间接选择虚拟流相反,用户可手动且直接地指定特定虚拟流来查看。
用户还可以间接选择显示哪些虚拟流。例如,用户可选择源视频的一个或多个ROI和/或一个或多个分辨率,且每个ROI和分辨率可与特定虚拟流相对应。例如,图2中通过将虚线中示出的图2的部分216选作兴趣域,用户隐含地选择虚拟流A1,3和A1,4用于传输。再比如,用户可仅查看虚拟流A1,3和A1,4且然后快速缩小,以便ROI变为源视频的整个分辨率。这可被隐含地解释为用户请求整个源视频的低分辨率虚拟流130用于临时显示,直到高分辨率虚拟流126可被从服务器发送至客户端。
在接收到用户输入后,在块1306,CPU 1118确定客户端成流参数1133。客户端成流参数1133包括以上列出的用户输入的全部类型,且进一步包括CPU 1118自身生成的参数。CPU 1118自身生成的数据包括指示网络堵塞的包丢失统计、指示可用于对具有高帧速率或高像素数或二者皆备的视频进行解码的资源的CPU 1118和内存1120的当前利用统计以及建议的虚拟流列表。然而CPU 1118可不将可用虚拟流的列表直接呈现给用户,CPU 1118能够访问该列表以及由虚拟流表示的片的位置和大小,因为它具有响应600。因此,CPU1118可以确定客户端142最适于显示哪些虚拟流。
例如,再次参考图2,用户可查看中等分辨率编码214且然后放大至特定图像域,该特定图像域为虚线中示出的图2中的部分216。CPU 1118将部分216映射至虚拟流A1,3和A1,4,其可比中等分辨率编码214更详细地(即使用更多像素)显示部分216,以及在图2中,客户端142然后显示虚拟流A1,3和A1,4。然而,在另一个实施例中,CPU 1118将图像域视为待被考虑的多个因素中的仅一个,且还可考虑例如当前CPU 1118利用以及视频的性质和使用。如果CPU 1118利用过高而不能支持相对高分辨率虚拟流A1,3和A1,4的实时解码,且视频为其中低延时很重要的直播流,CPU 1118可建议继续使用中等分辨率编码214,或甚至使用低分辨率流130从而确保视频可被足够快地解码以许可低延时。如上所述,虽然当前示例基于分辨率区分虚拟流,在可选的实施例中,虚拟流可通过不同的方式区分;例如,可基于兴趣域、帧速率、分辨率、量化质量、比特率以及编码格式中的任意一个或多个区分虚拟流。由于容器帧506是可扩展格式,将来可使用其他区分特性,比如是否检测到动作或人脸。可在不损害向后兼容性的情况下改变容器帧506的格式,因为容器帧506的虚拟流管理器或其他解析器可被设计为忽略未知属性或数据字段。
在CPU 1118在块1308确定客户端成流参数1133后,进行至块1310并将这些参数1133发送至控制服务器102。然后CPU 1118进行至块1312,在块1312,方法1300结束,且相应地,CPU 1118等待控制服务器102发送数据流1134。
现在,参考图14,示出用于将包含视频数据的数据流从控制服务器102传输至客户端142的方法1400。用于执行方法1400的指令可被编码为程序代码并存储于内存1106中用于由CPU 1104执行。在图14的方法1400中,控制服务器102能够访问三个不同的虚拟流:被编码为具有高帧速率和低分辨率(中等质量)的第一流、被编码为具有低帧速率以及低分辨率(低质量)的第二流以及被编码为具有高帧速率和高分辨率(高质量)的第三流。例如,高质量流是以30图像/秒(ips)的2MP(百万像素),中等质量流是以30ips的0.08MP,低质量流是以5ips的0.08MP。当不需要不同兴趣域的高分辨率视图时,可使用此示例,因此容器帧506的灵活性用于提供可选的帧速率视频流。
CPU 1104在块1404开始执行方法1400,并进行至块1406,在块1406,它从客户端142接收客户端成流参数1133,客户端成流参数1133由客户端142生成并发送,如关于图6所述。CPU 1104进行至块1408,并从客户端参数1133确定客户端142正请求的视频数据是否包括直播视频。如果请求的数据包含直播视频数据,那么CPU 1104进行至块1410,在块1410,它从客户端参数1133确定数据是否正被用于延时敏感应用中,例如控制PTZ摄像机的移动。如果是,则客户端142被视为处于“优先模式”中,在该模式中帧速率优于分辨率,且CPU1104进行至块1416,在块1416,它向客户端142发送一个或多个高帧速率低分辨率虚拟流。在发送一个或多个流之后,CPU 1104进行至块1422,在块1422,方法1400结束。
如果客户端142未请求直播视频,则CPU 1104从块1408进行至块1412而非块1410。在块1408,CPU 1104确定数据存储器132是否过于忙碌而无法发送高帧速率高分辨率流。如果数据存储器132过于忙碌而无法这样做,那么CPU 1104进行至块1418,在块1418,它向客户端142发送一个或多个低帧速率低分辨率虚拟流。以下将关于图15更详细地描述CPU1104借以选择特定流的方法。在发送一个或多个流之后,CPU 1104进行至块1422,且方法1400结束。
如果客户端142已请求直播视频但其未被视为处于优先模式,或者如果客户端142已请求存储于数据存储器132中的视频且数据存储器132有能力发送高帧速率高分辨率流,则CPU 1104进行至块1414,在块1414,它通过例如分别确定CPU 1104利用率以及确定网络144是否堵塞从而确定控制服务器142和网络144的二者或其中之一是否过于忙碌而无法发送高帧速率高分辨率流。如果控制服务器102和网络144的二者或其中之一过于忙碌而无法发送高帧速率高分辨率流,则CPU 1104进行至块1418,在块1418,它向客户端142发送低帧速率低分辨率流。否则CPU 1104进行至块1420,在块1420,它向客户端142发送高帧速率高分辨率流。以下将关于图15更详细地描述CPU 1104借以选择特定流的方法。在发送一个或多个流之后,CPU 1104进行至块1422且方法1400结束。
现在,参考图15,示出用于确定将多个虚拟流中的哪些从控制服务器102发送客户端142的方法1500。用于执行方法1500的指令可被编码为程序代码并存储于内存1106中用于由CPU 1104执行。为了向图15的方法1500提供上下文,将结合方法1500考虑图1中的14个虚拟流:全分辨率编码120,包含12个虚拟流,每个表示不同的图像域并以130万像素编码,其中所有12个域共同包括兴趣域并以30fps编码;中分辨率编码122,包括表示以2百万像素和30fps编码的整个兴趣域的单个虚拟流;低分辨率编码124,包含以7.7万像素(QVGA)和15fps编码的单个虚拟流。
CPU 1104在块1502开始执行方法1500,并进行至块1504,在块1504,它基于客户端成流参数1133以及服务器资源可用性确定许可像素数和帧速率,在当前的示例性实施例中,服务器资源可用性包括CPU 1104、数据存储器132以及网络144的可用性。
在块1504确定许可像素数(在此上下文中代表视频分辨率)和帧速率后,CPU 1104进行至块1506,在块1506,它开始确定哪些虚拟流最适于发送到客户端142。在块1506,CPU1104确定它是否已分析所有14个虚拟流以确定它们的发送至客户端142的适当性。如果没有,则CPU 1104进行至块1507,在块1507,它识别剩余的未被考虑的虚拟流中的一个,其在块1508到1512中被称为“当前虚拟流”。然后CPU 1104进行至块1508,在块1508,它确定当前虚拟流是否包含所需要的图像域。以图2为例,如果客户端成流参数1133指示用户已选中图2中示出的虚线矩形,CPU 1104为之将返回“是”的仅有虚拟流为流A1,3、A1,4、B1和Cl。由于流A1,3和A1,4都需要被发送至客户端142以显示选中的图像域并满足客户端成流参数1133,CPU1104出于块1506到1514的目的而将流A1,3和A1,4视为单个虚拟流。
然后,CPU 1104进行至块1510,在块1510,它确定当前虚拟流是否有相比于之前考虑的任意虚拟流最高的许可像素数。在以上具有14个虚拟流的示例中,许可像素数为15.6百万像素/42=0.975百万像素;相应地,满足块1510的标准的仅有虚拟流为流C1。在块1512,CPU 1104将流C1设置为“客户端流”,且然后返回至块1506,该“客户端流”是在方法1500的执行中的这一点上已满足块1508到1510的标准且被标记为被传输至客户端142的所考虑的流中的一个。
一旦CPU 1104已考虑所有的虚拟流,则它从块1506进行至块1514,并根据图9将客户端流发送至客户端142,随后进行至块1516,在块1516,方法1500结束。
可以理解的是,关于图15所述的过程为由控制服务器102执行的确定用于传输至客户端***142的编码的示例性过程。虽然关于图15所述的示例涉及识别具有最高像素数的流,客户端参数可指定用于待被传输至客户端***142的编码的其他特性。例如,客户端参数可指定接收具有一系列特性的多个不同的编码。在示例性场景中,客户端参数可指定接收关于多个兴趣域的编码。参数可指定记录的帧的第一兴趣域以及记录的帧内的第二兴趣域,其中第一兴趣域和第二兴趣域中的每个表示整个可视区的子集。参数可指定第一和第二兴趣域可重叠、不重叠或具有其他任何相关关系。在示例性场景中,参数可进一步指定第三兴趣域,该第三兴趣域包括包含第一兴趣域和第二兴趣域的区的整个可视区。
可组合多个参数指定编码。例如,除指定兴趣域之外,参数可指定编码具有特定编码分辨率。在示例性场景中,参数可指定且服务器102可选择用于传输,具有编码分辨率的与第一兴趣域相关联的编码,该编码分辨率具有特定值或处于特定范围内。同样地,参数可指定且服务器102可选择用于传输,具有编码分辨率的与第二兴趣域相关联的编码,该编码分辨率具有特定值或处于特定范围内。还有,参数可指定且服务器102可选择用于传输,具有编码分辨率的与第三兴趣域相关联的编码,该编码分辨率具有特定值或处于特定范围内。在示例性场景中,参数可指定仅对应于显示区的部分的与第一和第二兴趣域相关联的编码具有高分辨率值,而对应于第三兴趣域的编码具有相对于用于第一和第二域的编码的较低分辨率。在示例性场景中,客户端参数可指定且服务器102可在过程中识别,贯穿于视图区的多个(第一和第二)高分辨率不重叠兴趣域以及覆盖整个源区的另外的低分辨率域(即第三域)。
可以理解的是,***102可在处理过程中使用多个客户端参数集。例如,服务器102可使用第一客户端参数集以识别满足主标准集的多个编码。在示例性场景中,第一客户端参数集可指定如上所述的与第一和第二兴趣域相关联且具有高分辨率的编码。服务器102也可使用指定的次标准的不同或次集合的客户端参数的附加或次集合。在示例性场景中,次客户端参数可指定如上所述的与第三兴趣域相关联且具有较低分辨率的编码。当可通过提供可被解码的数据而快速地改变兴趣域直到服务器可发送更高的分辨率编码时,这种具有高编码的低分辨率全源兴趣域可提供丢掉或隐藏延时的弹性(resiliency)。在服务器102识别并传输多个编码(例如如上所述的与第一、第二和第三兴趣域相关联的编码)的情况下,编码可以以重叠或合成的方式显示,如以下关于图17所述。例如,在其中与两个兴趣域相关联的两个编码被识别并传输至客户端***142以及与包含第一和第二兴趣域的第三兴趣域相关联的第三编码被识别并传输至客户端***142的场景中,第一和第二编码可在第三编码上呈现,如关于图17所示。
服务器-客户端通信综述
图16的结构框图绘示用于来自单个视频源设备的视频的活跃会话的视频和音频路径、反馈模型以及服务器-客户端通信。虚拟流形式的视频被前馈通过一系列剔除区块1610,其中剔除块1610移除将对用户屏幕并非可视的信息,或移除信息以便可为传输给定储备信道能力。音频或其他信息(如,与视频相关联且具有相对于视频的低数据率的元数据)通常可在不改变的情况下传递通过至网络API区块1612。恰恰在呈现区块1614中呈现之前,它将与视频同步。
存在独立的反馈路径,除了关于用户当前正查看的兴趣域(ROI)的信息以及用于该会话的分辨率之外,该反馈路径还将关于解码和网络能力的度量标准反馈至剔除区块。正如可在多个窗口上显示单个虚拟流,图16显示反馈路径中的多个兴趣域。
图16利用单个视频和音频源显示用于单个会话的反馈路径。一般地,多个这样的会话可在同一时间是活跃的。当通过图16的公用时钟源(T)1618耦合它们时,它们被视为同步在一起。
剔除区块
剔除区块1610取得ROI、宽度和高度元组以及其他度量标准(如解码储备能力和网络储备能力)的列表,并执行导纳算法从而确定剔除或移除视频数据中的哪部分。
期望剔除算法将不被显示或超出网络能力或解码器能力的信息移除。考虑上述度量标准的一个可行策略如下。
首先,我们考虑列表中的单个目标ROI和分辨率,并以此查找具有仅大于或等于目标分辨率的最低分辨率同时覆盖目标ROI的虚拟流的集合。第二,覆盖任何剩余间隙的ROI被计算并用于从剩余虚拟流的集合中选择覆盖间隙ROI的最高分辨率虚拟流的集合。
利用来自被组合成最终列表的每次传递的每个ROI、分辨率对以及选中的虚拟流重复该过程。最后的传递用于移除列表中由较高分辨率的虚拟流的集合覆盖的任何冗余虚拟流。
一旦完成分辨率剔除,则对输出进行评估以确定它是否超出网络预留比特率或者解码储备能力(使用与解码能力相关的度量标准,如最大解码FPS(每秒帧数)、总比特率、或百万像素/秒(MP/s))。如果网络或解码能力都没有被超出,则可通过降低整体帧使用时序抽取执行额外的剔除。可选地或此外地,为了将总比特率降低至预留阈值以下,虚拟流分辨率剔除步骤可偏向于更喜欢选择低分辨率虚拟流。
客户端侧的剔除区块1610是类似的,但具有一个区别,即对下游网络带宽未使用优化。由于客户端中的反馈回路延时较短,客户端侧剔除区块1610相比服务器侧区块1610适用于更高频率。
网络API区块
网络API区块1612提供以下服务:带宽预留、监控及反馈;协议具体分组;会话描述;会话传输协商和建立;以及连接管理。
在图16的***图中,服务器侧网络API区块评估并提供关于信道能力的实时反馈,该实时反馈用作剔除区块的输入。
例如,在一个示例性实施例中,响应600包括对视频流以及相关音频流的描述。客户端可建立单个视频流和单个音频流。一旦建成,客户端到服务器的调用可用于发送关于客户端状态(例如当前正被查看的多个ROI和分辨率,以及解码能力)的反馈。该反馈被发送至服务器侧的剔除区块1610,并用于控制虚拟流的移除和容器帧的时序抽取。
反馈区块
反馈区块1624从解码器1622和呈现区块1614获取反馈,并将该信息转发至剔除区块1610。
反馈区块1624还接受质量偏置因子,该质量偏置因子修改用户视图窗口的上报的分辨率,从而强制剔除区块偏向于较低分辨率。
例如,“最大质量”偏置可能不修改反馈至剔除区块1610的目标分辨率,但将质量等级降低至“高质量”导致反馈区块1624将目标分辨率降低为原来的一半。一般地,对于降低质量的每一步,来自反馈区块的ROI的上报的目标分辨率都被降低为原来的一半。在一个示例性实施例中,存在四种质量偏置设置:最大、高、一般和低。
在可选实施例中,反馈区块1624可将除分辨率、ROI以及能力之外的输出发送至剔除区块1610。例如,反馈区块1624可指定剔除区块1610将包含或排除哪些特定虚拟流。接受用于虚拟流的直接剔除指令的控制服务器不需要为了理解来自新客户端的改进策略而升级,因为用于剔除的逻辑可被完全封装在客户端。这也降低了向剔除区块1610反馈的复杂度,因为它们只需要考虑虚拟流列表并将包含或排除哪些虚拟流的复杂度移至反馈区块。在这个示例性实施例中,响应600包括用于反馈区块1624的足够信息,从而做出关于在接收虚拟流本身之前包含或排除哪些虚拟流的决策。
解码区块
解码区块1622提供编码格式特定的解码功能,包括能够对支持的编码如H.264,JPEG以及JPEG 2000进行解码的解码器上下文。解码区块提供基于每个会话的FIFO有序解码,以及在所有其他现有的解码会话之间的负载均衡。解码区块1622的输出为未加工的位图或在虚拟流的情况下为位图及其相关联的ROI的列表。输出像素格式取决于编码。典型格式有YUV 4:2:0或4:2:2。
对于音频,存在类似的解码区块1622。
呈现区块
图16显示呈现区块1614,该区块管理来自单个源设备的虚拟流的合成和显示。呈现区块1614还提供音频/视频同步功能以及通过公用时钟源(图16的T)与其他会话的同步。应注意,由于单个视频源可利用不同ROI和分辨率在多个窗口上显示,呈现区块提供用于视频源的显示多路复用形式。如图16所示,一旦源视频帧被解码,然后其运行通过提供具体窗口状态及合成的单独呈现区块子单元中的每个。
在每个呈现区块1614中都有合成器区块,该合成器区块负责从解码的容器帧中获取未加工的输出位图的列表,并使用后台缓冲区的当前ROI和分辨率将它们合成到显示窗口的后台缓冲区中。用于将视频图像合成到后台缓冲区的方法的示例性伪码如下:
Figure BDA0001094164570000221
伪码示例
拷贝和定标操作将从输入数据拷贝inputRoi,并将其扩展并写入输出数据中的outputRoi。
图17绘示了所应用的合成方法的示例。该示例使用三个ROI。第一ROI(ROI A)覆盖整个源图像域,但其分辨率低。第二和第三ROI(B和C)覆盖源图像域的部分,但相对于从源采样的多个像素有较高分辨率。在示例性合成方法中,ROI A,作为最低分辨率ROI,被首先拷贝。拷贝包括找到当前查看的ROI的交叉点、拷贝ROI A的交叉域以及将其扩展以填充后台缓冲区。在示例性场景中,接下来拷贝有较高分辨率的ROI B。找到查看域与ROI B的交叉点,该交叉点被投影到后台缓冲区并被拷贝到后台缓冲区中的现有的ROI A数据上,因为ROI B数据是更高的分辨率数据。对ROI C执行类似的过程,其中ROI C被拷贝到后台缓冲区中的现有的ROI A数据上。
在示例性实施例中,将ROI从最低分辨率合成至最高分辨率导致最高分辨率图像数据被最后写入。生成从最高分辨率至最低分辨率的合成的方法将会导致ROI A覆盖ROI B和ROI C,此将导致较低质量的视频图像。
因此,申请人已公开用于将使用不同编码参数编码的多个编码成流的***和方法。在公开的实施例中,视频源被编码以形成多个虚拟流,其中可以使用不同的参数对每个虚拟流进行编码。从公用源视频帧编码的虚拟流被一起多路复用至容器帧,容器帧被传输至服务器用于存储和/或呈现。
尽管上述公开了方法和设备包括在硬件上执行的其他组件、软件,应该注意的是,上述方法和设备仅是示例性的,且不应视为限制。例如,应考虑的是,任何或所有的这些硬件和软件组件可仅被嵌入硬件、仅被嵌入软件、仅被嵌入固件或被嵌入硬件、软件和/或固件的任意组合。因此,虽然以上描述了方法和装置,但本技术领域相关技术人员应理解所提供的示例并非实施此方法和装置的唯一方式。例如,方法可被实施于包含处理器和微处理器、专用集成电路(ASIC)和/或其他硬件组件的一个或多个计算机硬件中。
应考虑的是,本发明论述的任何方面或实施例的任意部分可被实施,或可与本发明论述的任何其他方面或实施例的任意部分相结合。
关于包括例如关于图8-10和图13-15所述内容的本文中所述的方法,应理解的是,在一些情况下,所述方法的组件部分可以以并非在本文中所述的顺序执行。并且,需要注意的是,并非流程图中所述的所有块都需要被执行,可以加入附加块,也可将图中所示的部分块用其他块代替。
本发明已关于一个或多个实施例描述了各种***和方法。但是,对本领域相关技术人员显而易见的是,可在不脱离本发明的教示下做出多种变化和修改。例如,本发明的附图和描述涉及分离的摄像机118/视频源设备316和控制服务器102/302,在某些实施例中,来自两个所述***的功能可存在于单个***中。例如,视频源设备316可以是提供关于摄像机和图像采集器的本文中所述的所有功能以及关于控制服务器102的本文中所述的功能的摄像机***。在这样的实施例中,摄像机***可以作为具有控制和与其他摄像机***通信的能力的服务器进行操作。
尽管已针对结构特征和/或方法性动作用语言描述本发明的主题,应当理解的是,所附权利要求中定义的主题未必受限于上述具体特征或动作。相反,上述具体特征和动作被公开作为实施权利要求的示例性形式。

Claims (9)

1.一种用于对源视频进行编码的方法,包括:
计算***,接收源视频的源帧;
所述计算***对所述源帧进行编码以形成与源帧时间戳相关联的多个虚拟帧,所述多个虚拟帧的每个是使用不同的编码参数被编码的;以及
所述计算***通过网络传输容器帧,所述容器帧包括一起进行多路复用的所述多个虚拟帧和适用于所述多个虚拟帧中的每个的容器时间戳。
2.根据权利要求1所述的方法,其中,所述多个虚拟帧中的每个包括虚拟帧头,所述虚拟帧头包括对虚拟帧中的每个进行定界的定界符。
3.根据权利要求1所述的方法,其中,所述多个虚拟帧在所述容器帧中被连接在一起。
4.根据权利要求1所述的方法,其中,所述容器帧包括容器帧头,所述容器帧头包括所述容器时间戳。
5.根据权利要求1所述的方法,其中,所述容器帧时间戳实质上与所述源帧时间戳相同。
6.根据权利要求1所述的方法,
其中所述计算***对所述源帧进行编码包括:视频源设备对所述源帧进行编码,以及
其中所述计算***通过网络传输容器帧包括:所述视频源设备传输容器帧。
7.根据权利要求6所述的方法,其中,所述计算***通过网络传输容器帧包括:通过网络向控制服务器传输容器帧。
8.根据权利要求1所述的方法,其中,所述计算***通过网络传输容器帧包括:所述计算***传输包含所述多个虚拟帧、描述所述多个虚拟帧的至少一个描述符以及适用于所述多个虚拟帧中的每个的容器时间戳的容器帧。
9.根据权利要求1所述的方法,其中,所述计算***对所述源帧进行编码以形成多个虚拟帧包括:所述计算***对与第一分辨率相对应的多个第一虚拟帧进行编码,以及对与第二分辨率相对应的多个第二虚拟帧进行编码。
CN201480076505.4A 2014-01-15 2014-12-19 将使用不同编码参数编码的多个编码成流 Active CN106068495B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461927952P 2014-01-15 2014-01-15
US61/927,952 2014-01-15
US14/568,081 US11228764B2 (en) 2014-01-15 2014-12-11 Streaming multiple encodings encoded using different encoding parameters
US14/568,081 2014-12-11
PCT/US2014/071735 WO2015108672A1 (en) 2014-01-15 2014-12-19 Streaming multiple encodings encoded using different encoding parameters

Publications (2)

Publication Number Publication Date
CN106068495A CN106068495A (zh) 2016-11-02
CN106068495B true CN106068495B (zh) 2021-02-26

Family

ID=53522480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480076505.4A Active CN106068495B (zh) 2014-01-15 2014-12-19 将使用不同编码参数编码的多个编码成流

Country Status (7)

Country Link
US (2) US10567765B2 (zh)
EP (1) EP3095030B1 (zh)
JP (2) JP6867162B2 (zh)
KR (1) KR102324326B1 (zh)
CN (1) CN106068495B (zh)
CA (1) CA2936176C (zh)
WO (2) WO2015108673A1 (zh)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10567765B2 (en) 2014-01-15 2020-02-18 Avigilon Corporation Streaming multiple encodings with virtual stream identifiers
US9571199B1 (en) * 2014-05-12 2017-02-14 Google Inc. In-band control of network elements
US9082018B1 (en) 2014-09-30 2015-07-14 Google Inc. Method and system for retroactively changing a display characteristic of event indicators on an event timeline
US10140827B2 (en) 2014-07-07 2018-11-27 Google Llc Method and system for processing motion event notifications
EP3206408B1 (en) * 2014-10-10 2020-12-30 Sony Corporation Encoding device and method, playback device and method, and program
KR101897959B1 (ko) * 2015-02-27 2018-09-12 쏘닉 아이피, 아이엔씨. 라이브 비디오 인코딩 및 스트리밍에서의 프레임 복제 및 프레임 확장을 위한 시스템 및 방법
US9860535B2 (en) * 2015-05-20 2018-01-02 Integrated Device Technology, Inc. Method for time-dependent visual quality encoding for broadcast services
US9361011B1 (en) 2015-06-14 2016-06-07 Google Inc. Methods and systems for presenting multiple live video feeds in a user interface
US10021438B2 (en) 2015-12-09 2018-07-10 Comcast Cable Communications, Llc Synchronizing playback of segmented video content across multiple video playback devices
US10764473B2 (en) * 2016-01-14 2020-09-01 Disney Enterprises, Inc. Automatically synchronizing multiple real-time video sources
US20170230612A1 (en) * 2016-02-04 2017-08-10 Shane Ray Thielen Adaptive resolution encoding for streaming data
US10506237B1 (en) * 2016-05-27 2019-12-10 Google Llc Methods and devices for dynamic adaptation of encoding bitrate for video streaming
CN109792544A (zh) * 2016-06-02 2019-05-21 彗星科技有限责任公司 用于流传输全景视频的方法和装置
WO2018222974A1 (en) * 2017-06-01 2018-12-06 Comet Technologies, Llc Method and apparatus for morphing multiple video streams into single video stream
US11388455B2 (en) * 2016-06-02 2022-07-12 Multimo, Llc Method and apparatus for morphing multiple video streams into single video stream
US10957171B2 (en) 2016-07-11 2021-03-23 Google Llc Methods and systems for providing event alerts
US10095933B2 (en) * 2016-12-05 2018-10-09 Google Llc Systems and methods for locating image data for selected regions of interest
US20180278947A1 (en) * 2017-03-24 2018-09-27 Seiko Epson Corporation Display device, communication device, method of controlling display device, and method of controlling communication device
GB2563439B (en) * 2017-06-16 2022-02-16 Canon Kk Methods, devices, and computer programs for improving streaming of portions of media data
WO2019054360A1 (ja) * 2017-09-12 2019-03-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 画像表示方法、画像配信方法、画像表示装置及び画像配信装置
US11729442B2 (en) * 2017-12-29 2023-08-15 Sling Media L.L.C. Multiplexed place shifting device
GB2570498A (en) * 2018-01-29 2019-07-31 Canon Kk A method and user device for displaying video data, a method and apparatus for streaming video data and a video surveillance system
US11012694B2 (en) 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
US10713756B2 (en) 2018-05-01 2020-07-14 Nvidia Corporation HW-assisted upscaling and multi-sampling using a high resolution depth buffer
US20200014740A1 (en) * 2018-07-06 2020-01-09 Avigilon Corporation Tile stream selection for mobile bandwith optimization
US10643667B2 (en) 2018-09-11 2020-05-05 Avigilon Corporation Bounding box doubling as redaction boundary
US11048930B2 (en) 2018-11-09 2021-06-29 Avigilon Corporation Alias capture to support searching for an object-of-interest
CN111343401B (zh) * 2018-12-18 2021-06-01 华为技术有限公司 帧同步方法及其装置
WO2020185879A1 (en) 2019-03-11 2020-09-17 Dolby Laboratories Licensing Corporation Video coding using reference picture resampling supporting region of interest
PT3850847T (pt) 2019-03-11 2022-07-01 Dolby Laboratories Licensing Corp Sinalização de informações relacionadas com o ângulo de obturador
EP3742739B1 (en) * 2019-05-22 2021-04-14 Axis AB Method and devices for encoding and streaming a video sequence over a plurality of network connections
JP2022543627A (ja) 2019-08-06 2022-10-13 ドルビー ラボラトリーズ ライセンシング コーポレイション 描画面サイズ拡張可能ビデオコーディング
CN110636294B (zh) * 2019-09-27 2024-04-09 腾讯科技(深圳)有限公司 视频解码方法及装置,视频编码方法及装置
KR102222543B1 (ko) * 2019-11-11 2021-03-03 주식회사 엘지유플러스 영상 데이터의 동기 재생을 위한 영상 데이터 인코딩 방법 및 장치
CN111182220A (zh) * 2020-01-09 2020-05-19 西安万像电子科技有限公司 图像处理装置、远端设备及通信***
WO2021181681A1 (ja) * 2020-03-13 2021-09-16 日本電信電話株式会社 数理モデル導出装置、数理モデル導出方法及びプログラム
CN112511768B (zh) * 2020-11-27 2024-01-02 上海网达软件股份有限公司 多画面合成方法、装置、设备及存储介质
JP2022184517A (ja) * 2021-06-01 2022-12-13 キヤノン株式会社 情報処理装置、情報処理方法、プログラム、記憶媒体、および撮像システム
CN113905256B (zh) * 2021-12-10 2022-04-12 北京拙河科技有限公司 支持交互式观看的视频数据处理方法、设备及***
WO2023119488A1 (ja) * 2021-12-22 2023-06-29 日本電信電話株式会社 映像合成システム、映像合成方法、及び映像合成プログラム
US11895414B1 (en) * 2022-08-04 2024-02-06 Qualcomm Incorporated Virtual channel configuration session of a camera sensor
CN115665422A (zh) * 2022-10-24 2023-01-31 昆易电子科技(上海)有限公司 视频数据传输方法、***、注入方法及电子设备
US11974012B1 (en) * 2023-11-03 2024-04-30 AVTech Select LLC Modifying audio and video content based on user input

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1145365C (zh) * 1998-08-14 2004-04-07 汤姆森多媒体公司 运动图像专家组数据流切换方法
WO2005109900A1 (en) * 2004-05-04 2005-11-17 Qualcomm Incorporated Method and apparatus to enable acquisition of media in streaming applications
WO2012168365A1 (en) * 2011-06-08 2012-12-13 Koninklijke Kpn N.V. Spatially-segmented content delivery

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001189932A (ja) 1999-12-28 2001-07-10 Toshiba Corp 画像伝送システムおよび画像伝送方法
US7343617B1 (en) 2000-02-29 2008-03-11 Goldpocket Interactive, Inc. Method and apparatus for interaction with hyperlinks in a television broadcast
US6862270B1 (en) 2000-07-14 2005-03-01 At&T Corp. Architectural reference model for QoS-driven wireless LANs
FI120125B (fi) 2000-08-21 2009-06-30 Nokia Corp Kuvankoodaus
JP2003259316A (ja) * 2002-02-28 2003-09-12 Toshiba Corp ストリーム処理システムおよびストリーム処理プログラム
CN1204757C (zh) 2003-04-22 2005-06-01 上海大学 一种立体视频流编码/解码器及其立体视频编解码***
US7034860B2 (en) 2003-06-20 2006-04-25 Tandberg Telecom As Method and apparatus for video conferencing having dynamic picture layout
JP2007522724A (ja) * 2004-01-30 2007-08-09 トムソン ライセンシング アダプティブレートコントロールによるエンコーダ
US8219702B2 (en) 2004-04-30 2012-07-10 Canon Kabushiki Kaisha Video delivery apparatus and method
JP4401861B2 (ja) 2004-04-30 2010-01-20 キヤノン株式会社 画像処理装置およびその制御方法
US8977063B2 (en) * 2005-03-09 2015-03-10 Qualcomm Incorporated Region-of-interest extraction for video telephony
CA2615925A1 (en) 2005-07-19 2007-01-25 March Networks Corporation Hierarchical data storage
US8436889B2 (en) 2005-12-22 2013-05-07 Vidyo, Inc. System and method for videoconferencing using scalable video coding and compositing scalable video conferencing servers
KR100799669B1 (ko) 2006-06-20 2008-01-30 삼성전자주식회사 영상신호 송수신효율 향상을 위한 정보통신방법 및 장치
US8270469B2 (en) * 2006-12-15 2012-09-18 Precoad Inc. Encoding video at multiple resolution levels
JP2009021728A (ja) 2007-07-11 2009-01-29 Sanyo Electric Co Ltd 送受信システム
JP5082134B2 (ja) 2007-07-18 2012-11-28 富士フイルム株式会社 画像処理装置、画像処理方法、およびプログラム
GB2451436B (en) 2007-07-27 2012-09-19 Hewlett Packard Development Co An encoder and decoder and methods of encoding and decoding sequence information
JP4849130B2 (ja) 2008-02-19 2012-01-11 ソニー株式会社 画像処理装置、および画像処理方法、並びにプログラム
JP2009296207A (ja) 2008-06-04 2009-12-17 Toa Corp 監視映像記録システムおよび監視映像再生表示方法
US20090320081A1 (en) * 2008-06-24 2009-12-24 Chui Charles K Providing and Displaying Video at Multiple Resolution and Quality Levels
US20100269147A1 (en) 2009-04-15 2010-10-21 Echostar Technologies Llc Video stream index generation at a video content transmitter
EP2360669A1 (en) 2010-01-22 2011-08-24 Advanced Digital Broadcast S.A. A digital video signal, a method for encoding of a digital video signal and a digital video signal encoder
JP5484132B2 (ja) * 2010-03-05 2014-05-07 キヤノン株式会社 映像処理装置及びその制御方法
US8755441B2 (en) * 2010-05-10 2014-06-17 Canon Kabushiki Kaisha Region of interest-based video transfer
US20110280311A1 (en) 2010-05-13 2011-11-17 Qualcomm Incorporated One-stream coding for asymmetric stereo video
US8824560B2 (en) 2010-07-07 2014-09-02 Netzyn, Inc. Virtual frame buffer system and method
IT1403450B1 (it) 2011-01-19 2013-10-17 Sisvel S P A Flusso video costituito da frame video combinati, e procedimento e dispositivi per la sua generazione, trasmissione, ricezione e riproduzione
KR20120133006A (ko) 2011-05-30 2012-12-10 (주)포스트미디어 Iptv 파노라마 영상의 스트리밍 서비스 제공 방법 및 그 서비스 제공 시스템
US9591318B2 (en) * 2011-09-16 2017-03-07 Microsoft Technology Licensing, Llc Multi-layer encoding and decoding
US20130070051A1 (en) * 2011-09-20 2013-03-21 Cheng-Tsai Ho Video encoding method and apparatus for encoding video data inputs including at least one three-dimensional anaglyph video, and related video decoding method and apparatus
US9888265B2 (en) 2012-02-02 2018-02-06 Disney Enterprises, Inc. Stream messaging for program stream automation
US9532080B2 (en) 2012-05-31 2016-12-27 Sonic Ip, Inc. Systems and methods for the reuse of encoding information in encoding alternative streams of video data
JP2013255041A (ja) 2012-06-05 2013-12-19 Canon Inc 画像配信装置、情報処理装置、それらの制御方法、およびプログラム
US9281011B2 (en) 2012-06-13 2016-03-08 Sonic Ip, Inc. System and methods for encoding live multimedia content with synchronized audio data
TW201415893A (zh) 2012-06-29 2014-04-16 Vid Scale Inc 以預測資訊為基礎之訊框優先
CN104335588B (zh) * 2012-07-04 2018-10-19 英特尔公司 用于基于感兴趣区域的3d视频译码的方法、***和设备
US9426476B2 (en) 2012-07-09 2016-08-23 Hewlett-Packard Development Company, L.P. Video stream
KR101835802B1 (ko) * 2012-09-18 2018-03-08 브이아이디 스케일, 인크. 타일 및 타일 그룹을 이용한 관심 영역 비디오 코딩
US9491457B2 (en) * 2012-09-28 2016-11-08 Qualcomm Incorporated Signaling of regions of interest and gradual decoding refresh in video coding
WO2014056150A1 (en) 2012-10-09 2014-04-17 Nokia Corporation Method and apparatus for video coding
ITTO20120901A1 (it) * 2012-10-15 2014-04-16 Rai Radiotelevisione Italiana Procedimento di codifica e decodifica di un video digitale e relativi dispositivi di codifica e decodifica
US10021431B2 (en) 2013-01-04 2018-07-10 Omnivision Technologies, Inc. Mobile computing device having video-in-video real-time broadcasting capability
GB2509953B (en) * 2013-01-18 2015-05-20 Canon Kk Method of displaying a region of interest in a video stream
US9094737B2 (en) * 2013-05-30 2015-07-28 Sonic Ip, Inc. Network video streaming with trick play based on separate trick play files
GB2516824A (en) 2013-07-23 2015-02-11 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
KR101879519B1 (ko) 2013-07-29 2018-07-17 코닌클리즈케 케이피엔 엔.브이. 타일 비디오 스트림을 클라이언트에게 제공하는 방법
US9172909B2 (en) 2013-10-29 2015-10-27 Cisco Technology, Inc. Panoramic video conference
US9489387B2 (en) 2014-01-15 2016-11-08 Avigilon Corporation Storage management of data streamed from a video source device
US10567765B2 (en) * 2014-01-15 2020-02-18 Avigilon Corporation Streaming multiple encodings with virtual stream identifiers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1145365C (zh) * 1998-08-14 2004-04-07 汤姆森多媒体公司 运动图像专家组数据流切换方法
WO2005109900A1 (en) * 2004-05-04 2005-11-17 Qualcomm Incorporated Method and apparatus to enable acquisition of media in streaming applications
WO2012168365A1 (en) * 2011-06-08 2012-12-13 Koninklijke Kpn N.V. Spatially-segmented content delivery

Also Published As

Publication number Publication date
KR102324326B1 (ko) 2021-11-10
US20150201197A1 (en) 2015-07-16
JP2017509203A (ja) 2017-03-30
JP6867162B2 (ja) 2021-04-28
EP3095030A4 (en) 2017-10-18
EP3095030A1 (en) 2016-11-23
US10567765B2 (en) 2020-02-18
CA2936176A1 (en) 2015-07-23
EP3095030B1 (en) 2020-08-26
US20150201198A1 (en) 2015-07-16
WO2015108672A1 (en) 2015-07-23
CA2936176C (en) 2021-12-14
US11228764B2 (en) 2022-01-18
KR20160110472A (ko) 2016-09-21
JP2020025280A (ja) 2020-02-13
WO2015108673A1 (en) 2015-07-23
CN106068495A (zh) 2016-11-02

Similar Documents

Publication Publication Date Title
CN106068495B (zh) 将使用不同编码参数编码的多个编码成流
US20190141373A1 (en) Spatially-Segmented Content Delivery
US20150208103A1 (en) System and Method for Enabling User Control of Live Video Stream(s)
KR20190137915A (ko) 비디오 재생 방법, 장치 및 시스템
KR20220073851A (ko) 몰입형 뷰포트 종속 다자간 비디오 통신
US20180077385A1 (en) Data, multimedia & video transmission updating system
CN114600468B (zh) 将复合视频流中的视频流与元数据组合的组合器***、接收器设备、计算机实现的方法和计算机可读介质
JP6861484B2 (ja) 情報処理装置及びその制御方法、コンピュータプログラム
US10397518B1 (en) Combining encoded video streams
KR20150029461A (ko) 파노라마 영상의 스트리밍 서비스 제공 시스템에서 타일링 영상 동기화 방법
JP2007325109A (ja) 配信サーバ、ネットワークカメラ、配信方法及びプログラム
US20140298392A1 (en) Image processing device, image processing method, and computer program
US20200014740A1 (en) Tile stream selection for mobile bandwith optimization
US11172238B1 (en) Multiple view streaming
JP2019033362A (ja) 配信装置、受信装置及びプログラム
US20220103783A1 (en) High-fidelity freeze-frame for precision video communication applications
US20190342628A1 (en) Communication device and method
US10135896B1 (en) Systems and methods providing metadata for media streaming
US20240187673A1 (en) A method, an apparatus and a computer program product for video encoding and video decoding
Blum et al. End-user viewpoint control of live video from a medical camera array

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220930

Address after: Illinois, America

Patentee after: MOTOROLA SOLUTIONS, Inc.

Address before: Vancouver, CAN

Patentee before: AVIGILON Corp.

TR01 Transfer of patent right