实时广角视频通信系统的制作方法
未命名
07-23
阅读:102
评论:0
1.本发明涉及视频编码与传输领域,具体而言,本发明涉及一种实时广角视频通信系统。
背景技术:
2.一些视频录制设备使用全向摄像机或多个摄像机同时录制多个方位的视图。多个方位同时录制的视频包括360度视频、全景视频、沉浸式视频或球面视频(统称为“广角视频”)。在播放此类视频时,收看者可以控制观看的方位。也就是说,收看者可以决定观看广角视频中哪一部分的空间视频。然后按时间顺序继续(收看)该选定空间部分的视频。广角视频中收看者在播放期间当前正在观看的视频部分称为视口(可视区域)。如收看者改变观看方位,则视口也将随之改变。
技术实现要素:
3.一方面,本发明提供了一种方法,该方法包括:维护一个逐步淘汰列表,该逐步淘汰列表包括广角图像当前视口的切片,预测这些切片在距当前时间t持续时间段d之后将不再出现在该视口中;获取广角图像中预测将于当前时间t之后的某一时间所能收看到的预测切片;将这些不在接收列表中的预测切片添加至该接收列表;并根据接收列表将构成广角图像的当前可视区域的切片渲染成像。接收列表和淘汰列表中的每个切片都可与其相应的显示时间相关联。对切片进行渲染成像可包括:对接收列表中的一些切片进行解码和显示,这些切片所关联的显示时间不大于当前时间t;以及停止对淘汰列表中的一些切片的解码和显示,这些切片所关联的显示时间不大于当前时间t。
4.另一方面,本发明提供了一种设备,该设备包含处理器,该处理器被配置为:从解码设备处接收获取码流列表的请求,列表中每个码流分别与广角视频中图像的切片所对应的编码相关联;向编码设备发送获取第一码流的请求,该第一码流没有缓存在该设备中;向解码设备发送码流列表中的第二码流,该第二码流缓存在该设备中。
5.第三方面,本发明提供了一种广角视频的编码设备,该设备包含处理器,该处理器被配置为:从边缘设备接收切片的边缘列表;在确定边缘列表包含第一切片而由编码设备维护的发送列表中不包含该切片后,随即将第一切片编码为新的码流,并将新的码流传输至边缘设备;在确定发送列表中包含第二切片而边缘列表中不包含第二切片后,随即停止对第二切片相应码流的编码,并从发送列表中删除第二切片。
附图说明
6.在阅读下文详细描述时参考附图将有助于更好地理解本发明的内容。需要强调的是,根据惯例,图示中各个部分并非按实际比例绘制,而是在附图中任意扩大或缩小了各部分的尺寸,以便于表述清晰。
7.图1是根据本发明实施例所绘制的用于媒体传输的系统示例图。
8.图2a是一个广角视频流的图像中切片的示例图。
9.图2b是对广角视频流的图像中切片进行编码的示意图。
10.图3是实时视频通信的网络示意图。
11.图4是实时广角视频通信系统的示意图。
12.图5是高效实时广角视频通信中的接收端技术(以技术500表示)的示例流程图。
13.图6是高效实时广角视频通信中的服务节点技术(以技术600表示)的示例流程图。
14.图7是高效实时广角视频通信中的发送端技术(以技术700表示)的示例流程图。
具体实施方式
15.广角视频通信系统可包括发送端(即发送设备)和接收端(即接收设备)。如本领域普通技术人员所熟知,发送端可以执行视频捕获、视频变形或拼接、视频编码和视频传输等一系列操作中的其中至少一种操作。在一个实施方案中,发送端可以是捕捉广角视频并将其实时传输(如视频流传输)到一个或多个接收端的客户端设备。在另一实施方案中,发送端也可以是视频流服务器,能够接收实时广角视频或预录制的广角视频并将其以视频流的方式传输至一个或多个接收端设备。如本领域普通技术人员所熟知,接收端可以执行视频解码、视频畸变校正和视频渲染等操作。发送端和接收端可通过网络进行通信。也就是说,编码的视频数据可以通过网络从发送端传输到接收端。视频数据可以通过网络上的多个服务器从发送端传输到接收端。这样的服务器被称为边缘节点,详见下述。多个接收端可以连接到同一个边缘节点。
16.广角视频由按时间顺序排列的一系列图像组成。广角视频中的一幅图像可以是由图像各个组成部分拼接而成,这些部分也可被称为面或分面,例如可通过广角拍摄设备的多个摄像头捕获图像。举例说明,可以使用6个摄像头设备来拍摄广角视频,其中摄像头按立方体形状分布,共同组成最高为360
°
的视场角(fov)。每个摄像头可以涵盖纵向维度的fov(如120
°
)和横向维度的fov(如90
°
)。因此,任何一个摄像头的fov都可能与其他摄像头的fov重叠。重叠区域可用于拼接操作。
17.已有一些传统用于编码和解码广角视频的技术。例如,可以使用itu-t sg16 wp3和iso/iec jtc1/sc29/wg11的视频编码联合协作组(jct-vc)的hevc可扩展视频编码扩展(shvc)中描述或类似技术对广角视频进行编码或解码。当然也可以采用其他技术。对广角视频的图像进行编码可包括将图像分割成切片的操作。每个切片(即按时间序列生成的切片)可以被编码为单独的压缩码流(本文中称为“压缩切片流”或简称为“切片流”)。例如,广角视频的图像可以是8k图像(即7,680
×
4,320像素),被分割成720p切片(即每个切片为1280
×
720像素)。举例说明,使用h.264命名法可以对切片序列进行分组,其中每个组根据诸如ibbpbb的编码结构进行编码或解码,其中i表示帧内预测切片,p表示根据先前实时切片预测的切片,b表示根据前一个和后一个切片进行预测的切片。
18.如前所述,收看者在任何时候都只能观看到广角视频的一部分。也就是说,收看者在任何时候都可能只能观看整个成像场景的其中一部分。收看者可观看到或有兴趣观看的区域即“视口”。也可以说视口在目标区域(roi)范围内或包含在目标区域(roi)中。因此,在本发明中roi是指包含视口的广角视频图像区域。
19.在收看视频时,收看者可随时更改视口。举例说明,收看者可能使用接收设备(如
手持设备、头戴式设备或任何其他能够呈现广角视频的设备)观看一个跑步者从左到右穿过场景的视频流。因此,当跑步者向右移动时,收看者可以将视口向右移。在另一示例中,当收看者视线跟随跑步者时,收看者听到低空飞行的飞机的声音,这时通过将接收设备朝向上方从而改变视角,将可以让收看者看到飞机。通常,广角视频通信系统可以包括视点预测功能,该功能用于预测接收设备在接下来(例如:在1、2、3秒后或某个未来时间点)将会用到哪些切片。
20.在传统的广角视频通信系统中,发送端可以按原始捕获的图像质量对所有图像的所有切片进行编码和发送,接收端以同样的方式对其进行接收和解码,即使接收方并不能在一个时间点收看所有这些数据。以高质量传输(如广播)和接收整个广角视频会消耗大量带宽。然而这样的带宽消耗是不必要的,也就是浪费的,因为如上所述,收看方并不能观看整个广角视频。此外,对广角视频的全帧进行编码可能会在编码器(即发送端)处消耗不必要的计算资源,从而降低发送端的性能,尤其是在实时应用中更为明显。同样地,解码广角视频的全帧也可能会在接收端(即解码器)处消耗不必要的计算资源,从而降低接收端的观看(显示)性能。
21.一些传统广角视频通信系统可以使用分层编码/解码技术,将广角视频编码为基础层和一个或多个增强层。基础层可以以较低质量对广角视频的整体(即所有图像)进行编码。基础层可以包括广角视频或是广角视频的下采样版本。增强层可包括在广角视频的原始分辨率下的原始广角视频的编码数据。接收端(如接收设备的解码器)可对基础层数据持续解码,然后在增强层上对与当前视口相对应的数据(即切片的编码数据)进行解码。但这种技术也有可能浪费网络和计算资源,因为广角视频的某些部分可能永远都不会被观看。
22.一些其他传统广角视频通信系统可使用视口预测,对预测将在接收端观看的那些切片流以更高质量进行编码。例如,接收端可以向发送端发送预测切片的列表,发送端据此对它们进行编码然后传输至接收方收看。然而,由于网络延迟,至少有一些与预测切片相关联的切片可能并不能够在这些切片流的显示时间之前到达接收端。此外,如下文所述,这样的技术可能会导致(发送端)对已经编码和传输的图像流进行重复编码以及(发送端和/或网络服务节点)对其进行重复传输,这同样也造成了浪费。
23.本发明除了可改善接收端的观看体验之外,还可减少网络的带宽消耗以及接收和发送设备的处理功率消耗。可在接收端执行视口预测,预测收看者接下来可能会观看哪些广角视频的切片。接收端将该预测指示通过边缘节点(即下文所述的网络服务器)发送到发送端,该边缘节点从发送端处接收编码切片码流并将其缓存。也就是说,接收端将获取切片码流的请求发送至边缘节点。边缘节点可将已经缓存在边缘节点中的切片码流发送给接收端,同时边缘节点也会向发送端发送请求,请求获取那些未被缓存的切片码流。因此,对于之前已编码和已传输的切片码流,发送端无需进行重新编码和重新传输;并且接收端在压缩切片码流的显示时间之前,接受对其获取的请求并对其进行解码。此外,发送端可能正在对一个或多个切片码流进行编码。如果接收到的切片码流请求中不包括当前正在编码的切片码流(即如果接收到的请求发送的切片码流不在当前被编码的切片码流中),则发送端可以开始对它们进行编码。因此,本发明提供了一种利用预测来提供良好用户观看体验的有效方式。
24.为更详细地描述本发明的实施方式,首先来了解一下用于实现实时广角视频通信
系统的硬件和软件设备的示例。
25.图1是根据本发明实施例所绘制的媒体传输系统(包括实时广角视频传输)的示例图。如图1所示,系统100可包括多个设备和网络,如设备102、设备104和网络106。该设备可以是如微型计算机、大型计算机、超级计算机、通用计算机、特殊用途或专用计算机、集成计算机、数据库计算机、远程服务器计算机、个人计算机、笔记本电脑、平板电脑、手机、个人数据助理(pda)、可穿戴计算设备等一台或多台计算机的任何配置,或者也可以是通过计算服务提供商提供的计算服务(例如web主机或云服务)。在一些实施方案中,计算设备可以由多组计算机的形式来实现,各个计算机可位于不同地理位置,并通过网络等进行彼此间的通信。虽然某些操作可以由多台计算机共同完成,但在一些实施方案中,不同的计算机会被分配不同的操作。在一些实施方案中,系统100可以使用具有计算机程序的通用计算机或处理器来实现,在运行计算机程序时可执行本发明所描述的相应的方法、算法和/或指令。另外,也可以使用专用计算机或处理器,配备专用硬件设备用以执行本发明所描述的任何方法、算法或指令。
26.设备102可包括处理器108和存储器110等硬件内部配置。处理器108可以是能够操作或处理信息的任何类型的一个或多个设备。在一些实施方案中,处理器108可以包括中央处理器(如中央处理单元,即cpu)。在另一些实施方案中,处理器108可以包括图形处理器(如图形处理单元,即gpu)。尽管本发明所述示例中可以用所示的单个处理器来实现,但是如果使用多个处理器将可体现速度和效率方面的优势。例如,处理器108可分布在多个机器或设备(每个机器或设备带有一个或多个处理器)上,这些机器或设备可以直接适配相连或通过网络(如局域网)实现互联。
27.存储器110可以是能够存储代码(例如指令)和数据的任何暂时或非暂时性的一个或多个设备,这些代码和数据可由处理器(通过诸如总线)访问。本发明所述的存储器110可以是随机存取存储器设备(ram)、只读存储器设备(rom)、光盘或磁盘、硬盘驱动器、固态驱动器,闪存驱动器、安全数字(sd)卡、记忆棒、紧凑型闪存(cf)卡或任何合适类型的存储设备的任意组合。在一些实施方案中,存储器110可以分布在多个机器或设备上,如基于网络的存储器或基于云的存储器。存储器110可以包含数据(图中未示出)、操作系统(未示出)和应用程序(未示出),数据可以是用于处理的任何数据(如音频流、视频流或多媒体流)。至少一个应用程序可包括允许处理器108执行指令以生成控制信号的程序,这些控制信号可用于执行下文描述的方法中所述的各项功能。例如,当应用程序作为发送端时,其可包括用于运行图7所述的技术的相关计算机指令;当应用程序作为接收端时其可包括用于运行图5所述的技术的相关计算机指令。
28.在一些实施方案中,设备102除了可配备处理器108和存储器110之外,还可包含辅助(如外接)存储设备(未示出)。如使用上述辅助存储设备,则可在高处理需求时提供额外的存储空间。辅助存储设备可以是任何合适的非暂时性计算机可读介质形式的存储设备,如存储卡、硬盘驱动器、固态驱动器、闪存驱动器或光驱等。此外,辅助存储设备既可以是设备102的组件,也可以是通过网络访问的共享设备。在一些实施方案中,存储器110中的应用程序可以全部或部分地存储在辅助存储设备中,并根据处理需要加载到存储器110中。
29.设备102除了包括处理器108和存储器110之外,还可以包括输入/输出(i/o)设备,例如设备102可包括i/o设备112。i/o设备112可通过多种方式实现,比如其可以是适配设备
102的显示器,并显示图形数据的图像。i/o设备112可以是向用户传输视觉、听觉或触觉信号的任何设备,如显示器、触敏设备(例如触摸屏)、扬声器、耳机、发光二极管(led)指示灯或振动电机等。i/o设备112也可以是任何类型的需要或不需要用户干预的输入设备,如键盘、数字小键盘、鼠标、轨迹球、麦克风、触敏设备(如触摸屏幕)、传感器或手势感应输入设备。如果i/o设备112是显示器,则其可以是液晶显示器(lcd)、阴极射线管(crt)或能够向个人提供可见输出的任何其他输出设备。在一些情况下,输出设备也可以作为输入设备,例如接收触摸式输入的触摸屏显示器。
30.另外,i/o设备112也可以由传输信号和/或数据的通信设备组成。例如,i/o设备112可包含一个从设备102向另一个设备发送信号或数据的有线设备。又如,i/o设备112也可包含使用兼容协议的无线发射器或接收器,用于将信号从设备102发送到另一设备,或者从另一设备处接收信号至设备102。
31.设备102还可包含通信设备114,以与另一台设备进行通信。设备间的通信可通过网络106连接实现。网络106可以是任何类型的一个通信网络或多个通信网络的任何组合,包括但不限于蓝牙通信、红外通信、近场连接(nfc)、无线网络、有线网络、局域网(lan)、广域网(wan)、虚拟专用网络(vpn)、蜂窝数据网络和互联网等。通信设备114可以通过多种方式实现,如应答或收发设备、调制解调器、路由器、网关、电路、芯片、有线网络适配器、无线网络适配器、蓝牙适配器、红外适配器、nfc适配器、蜂窝网络芯片等,或与设备102适配的任何组合的任何适当类型的设备,以提供与网络106的通信功能。
32.设备104与设备102类似,配备了处理器116、存储器118、i/o设备120和通信设备122。设备104中的元件116-122的配备可与设备102中配备的元件108-114相类似。
33.在实时通信会话的不同时间段,设备102和设备104分别可以作为接收设备(即接收端)或发送设备(即发送端)。接收端可以执行解码操作,比如解码广角视频流。同样地,接收端也可以被称为解码设备或解码装置,并且可以是一台解码器或包含解码器的设备。发送端也可以被称为编码设备或编码装置,并且可以是一台编码器或包含编码器的设备。设备102可通过网络106与设备104通信。
34.图2a是广角视频流(即视频流200)的图像中切片示意图,其整体以200表示。视频流200可以是用于编码的视频源流或从视频码流解码的视频流。视频流200展示了视频流200的两幅图像(即图像202和图像204)。当然视频流200也可以包含两幅以上的图像。图像202和204被分割成多个切片。每个切片对应于图像中的一个空间位置,并且可以基于该位置进行识别。在视频流200中,图像202、204分别被分割成十个切片,包括切片206-216,排列成2
×
5网格。但本发明的技术并不限于该分割方式,可以将图像分割为更大或更小数量的切片、行和/或列。
35.在一些示例中,可以使用笛卡尔坐标来识别切片。例如,可认为切片206的坐标位置为(0,1),切片216的坐标位置为(1,3),以此类推。在另一示例中,可以根据切片在图像扫描顺序中的位置来进行识别。也就是说,可以对切片进行编号,例如,从0到图像中最大切片数减1。因此,图像202的切片可以用数字0到9进行编号,其中切片206-216被分别编号为切片1、2、3、6、7和8。
36.在视频流200中,时间顺序上,图像204可以在图像202之后。视频流200展示了包含对象220的视口218,收看者(未示出)可能正在跟踪的对象。视口218位于切片206、208、212
和214的包围中。图像204说明对象220已经移动并且现在的新视口为视口218',视口218'仅位于切片216之中。
37.为广角视频流编码可以采用可缩放视频编码技术。可缩放视频编码指一种编码结构,其中码流可以从多个不同维度表示,例如,以不同的码率、分辨率或帧率表示。接收端可以通过仅解码可缩放码流的特定部分来提取所需的信息。可缩放码流通常由提供最低质量可用视频的“基础层”和至少一个增强层组成,当该增强层与较低层一起接收和解码时,可提高时间分辨率和/或空间分辨率。增强层的运动和模式信息可以根据较低层(如基础层)进行预测。同样地,也可根据较低层的像素数据对增强层的数据进行预测。
38.因此,每幅图像(如图像202、204)都可以被编码至基础层中。首先可对图像进行下采样,然后可在基础层中对下采样的图像进行编码。最后,可以在增强层中对图像的部分切片进行编码。在一些实施方案中,编码结构可以包含一个中间层,该中间层用于对至少一部分下采样图像进行上采样操作。中间层的数据可用于对增强层中的切片进行编码。因此,可以在基础层中对图像进行下采样和编码;编码一个切片所需的一部分图像可以在中间层进行上采样;中间层的数据可以用来对切片进行编码。
39.图2b是广角视频流的图像中切片编码示意图。在图2b中有一条时间线,箭头表示时间的方向。如上所述,假设图2b中的切片被编码至增强层,虽然图中并未明示。这样,广角视频流中的至少一部分切片(即切片流)可被分别编码至增强层的相应码流中。当切片被编码至增强层中时,编码时可以仅参考切片数据,也可以同时参考切片数据和从基础层处解码的对应同位区域等数据。
40.切片流250包含沿时间线产生的一系列切片,包括切片252-258。切片流250可以是图2a中的切片216随时间推移而产生的切片流。因此,切片256可以是图像202中的切片214,切片258可以是图像204中的切片214。在增强层中编码的切片(如切片256)可以是组成视口中某一部分的切片。例如,如果使用帧间预测对切片256进行编码或解码,则其参考切片可以是一个或多个之前的切片(如切片252、254、256中的一个或多个),一个或多个之后的切片(如切片258)、一个或多个较低层(如基础层)的切片、一个或多个增强层的切片或上述切片的组合。
41.切片流250的每个切片都可以被划分为多个处理单元。在一些视频编码标准中,处理单元可以被称为“宏块”或“编码树块”(ctb)。在一些实施方案中,每个处理单元还可被进一步划分为一个或多个处理子单元,其中处理子单元根据不同的标准可被称为“预测块”或“编码单元”(cu)。处理单元和子单元的大小和形状可以是任意的,如8
×
8、8
×
16、16
×
16、32
×
32、64
×
64等,或者适于对图像区域编码的任何形状和大小。通常,一个编码区域包含的细节越多,则处理单元和子单元的大小可以划分得越小。为便于理解且不引起歧义,处理单元和子单元在下文中统称为“图块”,另有特别说明除外。例如在图2b中,切片256被分割成4
×
4图块,其中包括图块260。图块的边界以虚线表示。
42.图3是用于实时视频通信的网络300的示意图,所述实时视频包括广角视频。网络300可以在计算网络(如图1中的网络106)的应用层上实现。例如,在tcp/ip模型中,计算机通信网络可以划分为多个层。又如,按照从下到上的分层顺序,分别可包括物理层、网络层、传输层和应用层。每一层的前一层都为其上方的层提供服务,并由其下方的层提供服务。应用层是通过软件应用程序直接与最终用户交互的tcp/ip层。在图1的网络106中可采用应用
层软件模块的形式实施部署网络300。
43.在一些实施方案中,网络300可以为安装在网络106上的节点(如服务器)上的软件。在一些实施方案中,网络300不需要在节点上安装专用或特定硬件(如专用或专有网络接入点硬件等)。例如,节点可以是安装操作系统(os)的任何x86或x64计算机,并且作为网络300的接入点的节点处的网络接口可以是任何通用网络接口硬件(如rj-45以太网适配器、有线或无线路由器、wi-fi通信适配器或任何通用网络接口硬件等)。
44.此外,网络300所构成的网络,即图1中的网络106,也可以是公共网络(如互联网)。在一些实施方案中,网络300的节点可以通过网络300或公共网络进行相互通信。换言之,网络300的部分数据流量可以经由公共网络路由,而不是全部在网络300中。在一些实施方案中,网络300中的所有节点能够同时通过网络300和公共网络进行数据流量交互的通信。
45.如图3所示,网络300包含两类节点:服务节点和控制节点。服务节点(如服务节点304-318)用于从不同用户终端接收多媒体数据、缓存多媒体数据、转发多媒体数据和向不同用户终端传送多媒体数据。服务节点还可以接收和发送反馈消息,详见下文。控制节点(如控制节点302)可用于控制网络流量。服务节点和控制节点可以相互连接,虽然在图3中并未完全体现。也就是说,网络300中的任意两个节点都可以直接相连。节点之间的连接可以是双向的,也可以是单向。节点之间的连接可以部分为双向,部分为单向的。如上所述,两个节点之间也可能并没有直接连接,因此,两个节点之间也可以通过第三节点进行间接通信。
46.在图3中,网络300中服务节点和控制节点之间的连接以线段表示。双箭头实线表示服务节点之间的双向互连。双箭头虚线表示服务节点和控制节点之间的双向互连。控制节点可以从服务节点处接收关于测定传输能力的数据,并可向服务节点发送最优路径。节点的传输能力是指节点转发(如接收和重发)网络数据的现有或潜在的性能或能力。第一节点和第二节点之间的传输能力是指以下能力中至少其中之一:第一节点将网络数据从第一节点传输到第二节点的现有或潜在的能力,以及第二节点将网络数据从第二节点传输到第一节点的现有或潜在的能力。需要说明的是,网络300可以具有任意数量的任意类型的节点,且具有任意的互连配置,而不限于图3所示的示例。
47.可将服务节点细分为两种类型:边缘服务节点(简称为“边缘节点”或“边缘设备”)和路由器服务节点(简称为“路由节点”)。边缘节点直接连接到最终用户终端(简称为“终端”),如终端320-326。终端包括能够进行多媒体通信的任何终端用户设备,如智能手机、平板电脑、相机、显示器、笔记本电脑、台式电脑、工作站电脑或具有多媒体i/o的设备。如图3所示,服务节点306是终端320和322的边缘节点。服务节点310是终端324的边缘节点。服务节点318是终端326的边缘节点。终端320-326与其各自的边缘节点之间的连接以单箭头或双箭头实线表示。箭头表示多媒体数据的方向。例如,对于终端320和324而言,双箭头实线表示它们分别与服务节点306和310进行双向通信。终端322处的单箭头实线表示正在向服务节点306发送数据。终端326处的单箭头实线表示正在从服务节点318接收数据。
48.路由节点并不直接连接到任何终端。路由节点(如服务节点304、308和312-316)参与转发数据。在一些实施方案中,服务节点可以在不同时间进行边缘节点和路由节点的角色切换,或者同时充当两者。例如,在将数据从终端322经由服务节点306和服务节点310传输到终端324的第一传输路径中,服务节点306是终端320的边缘节点。在将数据从终端324
经由服务节点310、服务节点306、服务节点304和服务节点318传输到终端326的第二传输路径中,服务节点306是路由节点。当第一和第二传输路径同时运行时,服务节点306可以同时充当边缘节点和路由节点。
49.在一些实施方案中,网络300的边缘节点可以连接到由互联网服务提供商(isp)运营的自治系统(as)。网络300的拓扑结构可以基于服务节点、as和isp的地理位置划分为分层组。网络300的数据传输可分为两种类型:节点间传输(即服务节点之间的网络流量)和终端节点传输(即边缘节点和终端之间的网络流量)。可实施各种策略来优化节点间和终端节点的传输,例如2016年2月24日提交的美国专利申请15/052,810中所述。
50.图4是用于实时广角视频通信系统的系统示意图,其整体以系统400表示。系统400包含了图3中网络300的简化视图。系统400包括发送端402、网络403和一个或多个接收端404a-404c。发送端402可以通过网络403向接收端404a-404c发送(如流式传输)压缩的广角视频数据(如视频流)。因此,发送端402可包含一个编码器,用于编码广角视频并传输到接收端;接收端可各自包含解码器,用于解码接收到的广角视频的压缩码流。图4展示了接收端404a-404c的用户可能正在观看并且接收端404a-404c可能正在显示由发送端402发送的视频流的场景。
51.如图3所示,发送端发送的压缩码流可以经过网络403的多个服务节点,包括边缘节点406a-406c。发送端402通过边缘节点406a连接到网络403,接收端404a-404b通过边缘节点406b连接到网络403,接收端404c通过边缘节点406c连接到网络403。需要指出的是,系统400也可以包含更多的发送端、更多或更少的接收端,和/或,更多或更少的服务节点。
52.在每个时间步长(即在一定的间隔期间)中,发送端可捕获、编码和/或传输压缩码流到一个或多个接收端;服务节点可接收和缓存压缩码流,将一部分缓存的压缩码流传输到一个或多个其他服务节点或接收端;接收端可接收一部分压缩码流,解码接收到的压缩码流,对一部分解码压缩码流进行渲染成像,并执行视口预测。压缩码流包括广角视频的压缩数据(如图像和/或其切片)。接收端可以采用本领域已知的任何方式来执行视口预测。例如,接收端可以使用运动数据来执行视口预测,运动数据包括广角视频中检测到的对象的运动数据、当前视口中对象的运动数据、观看设备的运动数据或上述数据的组合。每个组件(如接收端、发送端或服务节点)在每个时间步长内,在系统400中独立于其他组件运行并且执行各自的异步操作。
53.发送端维护一个广角视频的切片列表{t
s,i,
t2}(即发送列表408),该广角视频正在被编码并通过网络303传输至接收端。如上所述,一个切片正在被编码意味着对应于该切片的的切片流正在被编码。因此,可将发送列表{t
s,i
,t2}视为或称为“当前编码列表”。在任一时间步长t2,发送端根据发送端接收到的反馈消息更新发送列表408。在列表{t
s,i
,t2}中,下标s表示“发送端”,下标i表示广角视频切片流。因此,t
s,i
可用于表示图2中图像202中的切片206。
54.服务节点(如连接到接收端的边缘节点)维护一个广角视频的切片列表{t
e,i
,t1}(如边缘列表410),该服务节点根据该广角视频的切片列表接收或存储(如缓存),或正准备接收和存储各自的压缩码流。在任一时间步长t1,服务节点根据接收到的压缩切片流和从接收端接收到的反馈消息来更新边缘列表410。边缘列表可被视为表示缓存在服务节点处的压缩切片码流,接收端正在或即将将对该码流进行处理。因此,也可以将边缘列表{t
e,i,
t1}视为或称为“缓存的码流列表”。服务节点可以从另一个服务节点或发送端402等上游设备处接收压缩码流,并且可以将压缩码流传输到下游服务节点或传输至直接连接到服务节点的接收设备。在列表{t
e,i
,t1}中,下标i表示广角视频的切片流,下标e表示边缘节点。但应将下标e理解为可包含任何服务节点。
55.接收端也维护一个切片列表{t
r,i
,t+d}(即接收列表412),列表中包含根据接收端的视口预测输出的切片。在任一时间步长t,接收端更新接收列表412。接收列表{t
r,i
,t+d}包括预测将在当前时间t之后的某个时间(t+d)将被观看的切片。因此,可将接收列表{t
r,i
,t+d}视为或称为“预测列表”。在列表{t
r,i
,t+d}中,下标i表示广角视频的切片流,下标r代表接收端。举例说明,在时间步长t,接收列表{t
r,i
,t+d}中可包括图2中图像202的切片206、208、212、214和216。切片216被包含在内,因为根据预测它将在时间t+d处被观看。
56.接收端还维护一个切片列表{o
r,i
,t+d}(即逐步淘汰列表414),该列表包含接收端在时间t处当前显示(即在当前视口中)并将在时间t+d离开视口的切片。举例说明,在时间t0处,视口中包含图2a中的切片206、208、212和214。在时间t1(其中t1=t0+d)处,视口移动到了图2a中的切片216。在时间t0处,逐步淘汰列表414可以包含图2a中的切片206、208、212和214,因为根据预测它们在时间t1将不再出现在视口中。
57.上述持续时间d最好能比接收端和发送端之间的往返时间(rtt)长,以便有足够的时间将接收列表{t
r,i
,t+d}(或其中的一部分,详见下述)通知给接收端,并且让发送端有足够时间进行以下操作:1)对预测在接下来(即在时间t+d)将被查看的切片进行编码,以及2)在这些压缩切片的显示时间之前将其传输到接收端。如果在时间t+d之前没有接收到与接收端所请求的切片相对应的压缩码流,则可能会降低接收端处的观看体验。这种情况下,接收端可以显示基础层的数据(其质量较低)或可以等待(如暂停)直到增强层数据被送达并被解码。在一些实施方案中,持续时间d可以是3秒或更短。当然其他持续时长也是可能的。例如,在实时通信中,持续时间d可能小于1秒。同样,其他值也是可能的。由此可知,较大的d值可能会降低视口预测的性能,也就是说持续时间越长,视口预测的准确度可能越低。
58.请注意,图4中的时间步长t,t1和t2之间并无关联。所使用的下标并不隐含任何含义。另外重申一遍,发送端、接收端和服务节点执行的是异步操作。也就是说,发送端、接收端和服务节点中的每一个都是独立确定其运行各自功能(如分别编码、解码和传输)的合适时间。此外,切片t
r,i
,t
e,i
和t
s,i
中的每一个可与其各自相应的时间标签相关联,时间标签表示该切片的显示时间。
59.接收端使用用户反馈消息(ufm)(如ufm 416)将边缘列表(如边缘列表410)发送至边缘节点。服务节点(如一个边缘节点)使用服务器反馈消息(sfm)将边缘列表(如边缘列表410)发送至另一个服务节点或发送端。举例说明,ufm和sfm可以具有各自指定的格式,包括报头和有效负载,使得有效负载中的至少一部分可以是合适的切片列表,列表中的每一条都带有时间标签。服务节点更新边缘列表以反映服务节点实际将从发送端请求获取的接收列表的内容。换言之,服务节点可以将来自多个接收端(即多个接收到的边缘列表)的信息聚合到服务器反馈消息sfm中。
60.图5是用于高效实时广角视频通信的接收端技术示例流程图,其整体以技术500表示。技术500可以通过接收端实施,如图4中的接收端404或图1中的设备104。技术500可以通过存储在图1的存储器118中的软件模块执行,软件中包含由处理器116执行的指令和/或数
据。另外,技术500也可以通过硬件中的专用芯片执行,所述硬件中存储有可由专用芯片执行的指令。技术500可以在每个时间步长中由接收端执行。举例说明,如果接收端以每秒30帧的速率显示广角视频的图像,则大约每33毫秒可执行一次技术500。
61.如图4所示,接收端维护一个广角视频的切片接收列表{t
r,i
,t+d},列表中包括预测会在预测时间之后的某个时间被观看的广角视频切片。接收列表{t
r,i
,t+d}是关于预测切片的滚动列表。也就是说,当时间t0《t时,接收列表{t
r,i
,t+d}可以包括预测将在时间t0+d时被观看的切片t
r,i
;并且当时间t1》t时,可更新接收列表{t
r,i
,t+d},使其包含在时间t1时预测的将要在时间t1+d被观看的切片。因此,接收列表{t
r,i
,t+d}中的变量t仅表示更新接收列表的“当前时间”。
62.如图4所述,接收端还可维护一个逐步淘汰列表{o
r,i
,t+d}。在步骤502处,接收端维护一个逐步淘汰列表{o
r,i
,t+d},该列表包括广角图像中当前显示(即当前视口的切片)但预测在时间t+d将不再出现在视口的切片。也就是说,接收端使用逐步淘汰列表来添加当前正显示在接收端的显示器上,但预测在时间t+d将不再出现在视口中的切片。在步骤504处,获得预测的广角视频切片。预测切片是指由接收端的预测函数预测将在当前时间t之后的某个时间被观看的切片。实现上述预测功能可以采用任何本领域常规技术。
63.在步骤506处,将那些还不在接收列表中的预测切片被添加到接收列表中。接收列表{t
r,i
,t+d}内容可参考图4中的接收列表412。所有不在接收列表中的预测切片t
r,i
都会被添加到接收列表{t
r,i
,t+d}中。也就是说,未来的切片会被添加到当前接收列表中,以便能够尽早请求、接收和解码至少一部分这些切片的压缩切片码流,具体理由详见下述。
64.如上所述,在当前时间步长t,接收端接收对应于(如关联于)接收列表中的至少一部分切片的压缩码流。在每个这样的压缩码流中,压缩码流中切片流的第一幅图像可以使用帧内预测进行编码。切片流中一些其他图像也可以使用帧内预测进行编码。对于其中至少一部分压缩码流,接收端可以对其进行解码但并不显示。也就是说,可以显示切片码流中的解码图像,也可以不显示。当解码图像在其显示时间正好在视口中时,则显示解码图像。而其他一些图像可能永远都不会被显示。但可能仍然需要(如被接收和解码)这些图像,因为其可以在对即将显示的其他图像进行解码时被用作参考图像。还需注意的是,要显示的解码图像在被解码后可能并不会被立即显示,这些解码图像要在其显示时间到达时才会显示,并且在其显示时间之前可能先暂时缓存。也就是说,对于在接收列表中的切片所关联的压缩切片码流,如果其显示时间在当前时间t之后,则接收端会将其解码但并不显示。之所以如此,是因为希望能尽早接收尽可能多的未来所需切片码流。因此在进行渲染成像之前可以先接收和解码这些切片码流,这样当它们的显示时间到达时可以立即显示。如上所述,可使用帧内预测对压缩切片码流中的第一幅图像进行压缩。第一幅图像的接收时间可能与切片流的(预测)显示时间不一致。第一幅图像可以独立于其他任何图像进行解码,并且可作为切片流中后续解码图像的参考图像。因此,最好能尽早接收并开始对这些压缩切片流进行解码。
65.在步骤508处,根据接收列表将构成广角图像当前视口中的切片进行渲染成像。接收列表和逐步淘汰列表中的每个切片都关联一个对应的显示时间。
66.在步骤508处对切片进行渲染成像这一操作包括:在508_2处解码并显示接收列表中的切片,这些切片所对应的时间不大于当前时间t。也就是说,如果一个切片t
r,i
的时间标
签t0+d不大于当前时间t,则表示该切片t
r,i
属于当前视口,因此需要将其解码(如果尚未解码)并显示。需注意的是,在当前时间t之前的某个时间t0,接收端中的视口预测函数对{t
r,i
,t}中的每个切片进行预测,使得(t0+d)大约等于当前时间t。也就是说,这些切片的显示时间就是当前时间,所以所述切片属于当前的视口。还应注意的是,所谓解码和显示可能仅需要显示,因为当前要显示的切片流中的切片可能之前已被接收和解码,详见上述。
67.在步骤508处渲染切片这一操作还包括:在508_4处停止解码和显示逐步淘汰列表中的切片,这些切片所关联的显示时间不大于当前时间t。也就是说,如果切片o
r,i
的时间标签t0+d不大于t,则切片o
r,i
(即与其关联的压缩切片码流)将不再被解码和显示,因为根据预测所述切片将不会出现在视口中(即未来视口中)。于是将显示时间不大于当前时间t的切片从逐步淘汰列表中移除。类似地,将逐步淘汰列表中显示时间不大于当前时间t的切片从接收列表中移除。如果预测一个切片不会出现在未来视口中,则可以至少基于该预测将该切片从逐步淘汰列表中移除。逐步淘汰列表中仍有可能包含那些预测不会出现在未来视口中的切片(即没有从其中移除),直到到达该切片的显示时间之后(即其关联的显示时间不大于当前时间)才将其移除。
68.然后,可将更新的接收列表传输至边缘节点,所述边缘节点连接到接收端。重申一下,接收列表包括接收端仍在使用或将要使用的所有切片。可将更新的接收列表放在ufm中传输到边缘节点。
69.图6是高效实时广角视频通信的服务节点的技术示例流程图,其整体以技术600表示。技术600可以由图3中网络300的服务节点(如边缘节点)或图4中的网络403来实现。技术600可以作为存储在网络节点的存储器中的软件模块,软件中包含由网络节点的处理器执行的指令和/或数据。另外,技术600也可以作为硬件中的专用芯片,其中存储可由专用芯片执行的指令。技术600可以在每个时间步长中由网络节点执行。
70.参照图4,服务节点在缓存中存储广角视频切片所对应(关联)的压缩码流,并维护与缓存的码流所对应的切片的边缘列表{t
e,i
,t1}.维护边缘列表意味着从边缘列表中添加和移除切片指示符,详见下述。同样如上所述,边缘列表中包含当前使用的切片和预测将由解码设备使用的切片(即切片流)。也就是说,边缘列表中包含当前正在观看的那些切片的切片指示符以及预测即将在接收端处被观看的那些切片的切片指示符。
71.在步骤602处,网络节点接收到一个获取码流列表的请求。如上所述,网络节点可以是边缘节点,并且可以请求从接收端获取码流列表。请求从接收端获取的码流列表可以是,或者可以包括接收列表412。也就是说,获取码流列表的请求可包含获取接收列表{t
r,i
,t+d}。
72.从解码设备处接收获取码流列表的请求这一操作可包括:从解码设备和/或边缘设备处接收切片解码器列表。网络节点可以接收多个解码器列表和/或边缘列表,分别来自多个边缘节点或接收端(解码器)。在边缘列表中添加那些不在边缘列表中的解码器列表的切片,从而更新边缘列表。将未包含在任何接收到的解码器列表中的切片所关联的切片码流从缓存中移除。在边缘列表中也删除那些不在解码器列表中的切片,从而更新边缘列表。如上所述,在边缘列表中添加或移除切片意味着从边缘列表添加或移除该切片的指示符(如描述符)。
73.服务节点根据接收到的接收列表集合{{t
r,ik
,t+d}k}(其中k=0...n-1,其中n表示
接收端的数量,接收端指服务节点可从其收到接收列表的接收端)对缓存的码流列表(即边缘列表{t
e,i
,t1})进行更新。技术600可检查每个接收到的接收列表{t
r,ik
,t+d}中的每个切片指示符t
r,ik
。如果t
r,ik
尚未在边缘列表{t
e,i
,t1}中,则将切片指示符t
r,ik
添加到边缘列表{t
e,i
,t1}中。此外,技术600将所有不在任何已收到的接收列表{{t
r,ik
,t+d}k}中的切片指示符t
e,i
从边缘列表{t
e,i
,t1}中移除。然后,将更新后的边缘列表{t
e,i
,t1}传输到上游服务节点并最终被发送端接收。发送端可能会收到多个边缘列表并将它们整合到发送列表{t
s,i
,t2}中,详见下述。发送端对新添加到边缘列表{t
e,i
,t1}的切片指示符所对应的切片流进行编码,并停止对已从边缘列表{t
e,i
,t1}中移除的切片指示符所对应的切片流进行编码,详见下述。因此,在步骤604处,将获取尚未在服务节点处缓存的码流的请求传输到发送端(即传输到编码设备)。如上所述,该请求可以是一条efm消息。
74.在步骤606处,将切片指示符t
r,i
所指示的且已经在服务节点处缓存的码流传输(如流式传输)到解码设备,所述解码设备为接收获取码流列表请求的解码设备。也就是说,将解码器列表中包含的切片(即切片指示符)所关联的缓存码流传输至解码设备。因此,即使一些t
r,i
中的压缩切片流是将来某个时间才会需要,边缘节点仍可以尽早在合适的时间(例如:在该时间步长中)将压缩码流传输到接收端。这样,接收端可以提前(比如在各自的显示时间之前)对接收到的压缩码流进行解码。
75.在一些实施方案中,并且如上所述,边缘节点可以为连接到边缘节点的每个接收设备维护其各自的边缘列表,并且可以分别为每个接收设备单独执行操作,详见图6所述。但是,这样的处理可能会导致发送端发出对相同切片流的冗余请求以及相同切片流被重复缓存。因此,在一些实施方案中,边缘节点为所有连接到边缘节点的接收端仅维护一个边缘列表{t
e,i
,t1}。或者,边缘节点也可为各个接收端维护其各自的边缘列表,并将各个边缘列表合并(即通过整合的方式)到一个合并边缘列表中,通过sfm发送至发送端。该合并边缘列表可用于共享同一个切片的公共数据流。这样,如果一个接收端缓存了现成的压缩切片码流,当不同的接收端对同样的切片码流发出请求时,则可以共享该缓存的切片码流。
76.图7是高效实时广角视频通信中的发送端技术的示例流程图,其整体以技术700表示。技术700可通过发送端实现,所述发送端例如图4中的发送端402或图1中的设备102。技术700可以作为存储在图1的存储器110中的软件模块,软件模块中包含由图1中处理器108执行的指令和/或数据。在另一实施方案中,技术700也可以通过硬件中的专用芯片实施,所述芯片中存储可由专用芯片执行的指令。
77.如图4所示,发送端可维护一个发送列表{t
s,i
,t2},该发送列表包含由发送端编码器进行编码和流式传输的广角视频切片。技术700可以由发送端在每个时间步长中执行。举例说明,如果发送端以每秒30帧的速率发送广角视频的图像,则技术700可以大约每33毫秒执行一次。
78.在步骤702处,发送端接收边缘列表{t
e,i
}。如上所述,从服务节点处通过sfm可接收该边缘列表。边缘列表{t
e,i
}包含要求对边缘列表{t
e,i
}中的每个切片相对应的数据流进行编码的请求。如上所述,编码一个切片所对应的数据流,可能意味着在码流的增强层中对该切片进行编码。发送端可以使用边缘列表{t
e,i
}来判断从何处开始或停止对切片流的编码。
79.在一些实施方案中,发送端可以为其连接的每个服务节点(如边缘节点)维护各自
的发送列表,该发送端从这些服务节点处接收边缘列表。但是,这样的处理可能会导致压缩流的重复编码和传输。因此,在一些实施方案中,发送端将从服务节点(如边缘节点)处接收到的所有边缘列表{{t
e,ik
}k}合并成一个边缘列表{t
e,i
},其中k=0...m-1,其中m表示发送端可以从其接收边缘列表的服务节点的数量。合并接收到的边缘列表避免了切片流的重复编码。此外,如果一个接收端已开始接收现有数据流,则其他请求获取相同数据流的接收端可共享该数据流。
80.在步骤704处,在边缘列表{t
e,i
}中迭代运行技术700,并为每个切片t
e,i
执行步骤706-712。在步骤706处,技术700确定切片t
e,i
是否在发送列表{t
s,i
,t2}中。如果切片t
e,i
在发送列表{t
s,i
,t2}中,则说明编码器已经在对切片t
e,i
所对应的流进行编码,因此,发送端将继续编码,同时返回到技术700中的步骤704。而如果发送列表{t
s,i
,t2}中没有t
e,i
,则在步骤708处,编码器将切片t
e,i
编码为新的码流,并且在步骤710处,发送端通过网络403将新的切片码流发送至接收端。编码器可以使用帧内预测或瞬时解码刷新(idr)图像技术进行切片码流的编码。因此,新码流在到达其目标接收端之前先被服务节点接收。服务节点可以将这些新接收的码流缓存下来。不需要在服务节点处更新边缘列表,因为边缘列表中已经包括了这些新接收的码流:新的码流是根据解码器或网络节点的请求而生成(如编码)的。在步骤712处,发送端将在708处已开始编码的切片添加至发送列表{t
s,i
,t2}从而更新列表,并重新返回到步骤704。
81.在步骤714处,在切片发送列表{t
s,i
,t2}中迭代运行技术700,并且对每个切片t
s,i
执行步骤716-720。在步骤716处,技术700确定切片t
s,i
是否在边缘列表{t
e,i
}中。如果切片t
s,i
在边缘列表{t
e,i
}中,则编码器继续对切片t
s,i
的编码,同时返回到技术700中的步骤714。编码器可采用任何可行的编码方式对切片t
s,i
进行编码。如本领域普通技术人员所知,编码结构和方式不尽相同。使用h.264或hevc命名法,编码结构可以包括帧内预测编码图像/切片(i帧)、预测图像/切片(p帧)或双向预测图像/切片(b帧)。例如,可以使用结构ippppp*(其中*表示重复)或重复结构ipbp或一些其他结构来编码切片流。编码器还可以周期性地包含帧内预测切片(i帧)或idr。
82.如果边缘列表{t
e,i
}中没有切片t
s,i
,则表示接收端不再观看切片t
s,i
所在的数据流,并且转到技术700中的步骤718。在步骤718处,编码器停止对切片t
s,i
所对应的码流进行编码。在步骤720处,从发送列表{t
s,i
,t2}中移除切片t
s,i
,同时返回到技术700中的步骤714。
83.虽然如技术700所示,步骤704-712和714-720可以并行执行,但并非必须如此。在一些实施方案中,可以在步骤714-720之前执行步骤704-712,反之亦然。当然也可采用其他顺序执行技术700中的各个步骤。
84.如上所述,服务节点(如边缘节点)处的缓存流应包含以i帧或idr帧开头的编码数据。为避免在服务节点处存储的码流过长,发送端(即其中的编码器)可采用能够周期性地使用i帧或idr帧的编码结构。
85.如上所述,本领域技术人员应理解,本文所述的全部或部分内容可以使用具有计算机程序的通用计算机或处理器来实现,所述计算机程序在被运行时可执行本文所述的任何相应的技术、算法和/或指令。另外,也可以使用专用计算机或处理器,其配备专用硬件设备来执行本文所述的任何方法、算法或指令。
86.本发明所述的计算设备、以及存储在其上和/或由此执行的算法、方法、指令等可以通过硬件、软件或其任何组合来实现。硬件可包括计算机、知识产权(ip)内核、专用集成电路(asic),可编程逻辑阵列、光处理器、可编程逻辑控制器、微代码、微控制器、服务器、微处理器、数字信号处理器或其他任何适用的电路。在权利要求中,“处理器”一词应理解为包含任何上述内容,可以为其中的一个或其多个组合。
87.本发明所述各项功能可通过功能组件和各种处理操作来描述。本发明所述的流程和顺序可以单独或以任意组合形式来执行。功能模块可以通过任意数量的可运行特定功能的硬件和/或软件组件来实现。例如,所述的内容可以采用各种集成电路组件,比如存储器元件、处理元件、逻辑元件、查找表等,其能够在一个或多个微处理器或其他控制设备的控制下执行各种功能。类似地,对于通过软件编程或软件程序实施的本发明的内容,可以使用任何诸如c、c++、java、汇编程序等编程或脚本语言来实现,并且可采用任何数据结构、对象、进程、例程或其他编程元素的任意组合来执行各种算法。各项功能可以在一个或多个处理器上通过执行算法来实现。此外,本发明所述各功能可以采用任意数量的常规技术来进行电子配置、信号处理和/或控制、数据处理等。本文广泛使用“机制”和“元件”这些词语,但并不意味着仅限于通过机械或物理方法实现,而是可以包括适配处理器运行的软件例程等。
88.本发明的实施方案或部分实施方案可以采取计算机程序产品的形式,该程序产品可通过计算机可用介质或计算机可读介质进行访问等。计算机可用介质或计算机可读介质可以是任何合适的设备,该设备可具体地含有、存储、传送或传输供任何处理器使用或与其连接的程序或数据结构。所述介质的形式可以为电子、磁、光学、电磁或半导体设备等等,当然也可包含其他适用的介质。上述计算机可用介质或计算机可读介质可以被称为非暂时性存储器或介质,并且可以包括ram或其他易失性存储器或存储设备,其可以随时间变化而发生改变。除非文中另有特别说明,本文所述的设备存储器并非必需物理上配备于设备中,而是可以由设备远程访问,并且不必与设备中其他物理上配备的存储器相邻。
89.本发明实施方案中执行的一项或多项功能均可通过代码形式的机器可读指令来实现,该指令用于操作上述一个或多个硬件组合。计算代码可使用一个或多个模块的形式实现,通过该模块可以将一个或多个组合的功能作为计算工具来执行,在运行本发明所述方法和系统时,输入和输出数据在每个模块与一个或多个其他模块之间进行相互传输。
[0090]“信号”和“数据”等术语在本文中可互换使用。此外,计算设备各部分功能并不必以相同的方式来实现。信息、数据和信号可以使用各种不同的技术和方法来表示。例如,本文中提到的任何数据、指令、命令、信息、信号、比特、符号和芯片可以用电压、电流、电磁波、磁场或粒子、光学场或粒子等一项或多项组合来表示。
[0091]
本发明采用“示例”一词来表示举例、实例或说明。本文所述用于“示例”的任何方面或设计不一定表示其为本发明的最佳实施方式。使用“示例”一词是为了以具体的方式呈现概念。另外,“一个方面”或“一方面”这两个短语在全文中多次用到,但并不一定意味着同一个实施方式或具有同一功能。
[0092]
本发明中所使用的“或”字旨在表示包含性的“或”而不是排他性的“或”。也就是说,“x包括/包含a或b”意在表示任何自然的包含性排列,除非另有说明,或者从上下文可明确判断则另当别论。换句话说,“x包括a或b”可以表示以下任何情况:x包括a;x包括b;x包括
a和b。以此类推,“x包括a和b中的一个”是指“x包括a或b”。本文中使用的“和/或”一词旨在表示“和”或包含性的“或”。也就是说,“x包括a、b和/或c”旨在表示x可包括a、b和c的任意组合,除非另有说明或上下文另有明确指示。换句话说,如果x包括a,x包括b,x包括c,x包括a和b,x包括b和c,x包括a和c,或者x包括a、b和c中的全部,那么上述情况中的每一种或多种都满足“x包括a、b和/或c”的描述。以此类推,“x包括a、b和c中的至少一个”等同于“x包括a、b和/或c”。
[0093]
本发明中“包括”或“具有”及其同义词旨在表示包括其后列出的项目及其等同物以及其它附加项目。根据上下文语境,本文中的“如果”一词可以被解释为“当”“当
……
时”或“假设”等意思。
[0094]
在本发明所述内容(特别是权利要求书)中,“一”、“一个”、“所述”和“该”以及类似的指示代词应理解为包含一个和多个的单数和复数形式。此外,本文中对数值范围的描述只是一种简便的描述方式,旨在表示包含在该范围之内的每一个单独数值,并且每个单独值并入所述范围中,等效于在本文中单独列举。最后,本文所述的所有方法的步骤可以以任何合适的顺序执行,除非本文另有说明或者与上下文明显矛盾。本文提供的示例或示例性语言(例如“诸如”)的使用旨在更好地说明本发明,并无意于限制本发明的范围,除非另有说明。
[0095]
说明书中使用各种标题和小标题列出列举条目。包含这些内容是为了增强可读性并简化查找和引用材料的过程。这些标题和小标题无意于、也不会用来影响对权利要求的解释或以任何方式限制权利要求的范围。本文示出和描述的具体实施方式是本发明的说明性示例,且无意于以任何方式限制本发明的范围。
[0096]
本文引用的所有参考文献(包括出版物、专利申请和专利等)均通过引用纳入本文,等效于单独且明确地指明将每个参考文献通过引用纳入本文,且涵盖参考文献的全部相关内容。
[0097]
虽然已经结合某些实施例和实施方式对本发明进行描述说明,但应理解为:本发明并不限于本文所公开的实施方式,本发明公开内容旨在覆盖权利要求范围之内所涵盖的各种变体和等同方案,该范围应被赋予最宽泛的解释以涵盖法律允许的所有上述变体和等同方案。
技术特征:
1.一种方法,包括:维护一个逐步淘汰列表,所述逐步淘汰列表包括广角图像当前视口的切片,所述切片为预测在距当前时间t持续时间段d之后将不再出现在任何一个接收端的视口中的切片;获取广角图像中的预测切片,所述预测切片为预测将于当前时间t之后的某一时间被收看到的切片;将不在接收列表中的所述预测切片添加至接收列表;以及使用接收列表将构成广角图像的当前可视区域的切片渲染成像,其中所述接收列表和逐步淘汰列表中的每个切片都关联一个与其相应的显示时间,和,所述渲染成像的操作包括:对所述接收列表中的切片进行解码和显示,所述切片所关联的显示时间不大于当前时间t;以及停止对所述逐步淘汰列表中切片的解码和显示,所述切片所关联的显示时间不大于当前时间t。2.根据权利要求1所述的方法,还包括:接收所述接收列表中至少一部分切片所关联的压缩切片码流。3.根据权利要求2所述的方法,其特征在于,使用帧内预测对所述压缩切片码流中的第一幅图像进行编码。4.根据权利要求3所述的方法,其中所述渲染成像包括:将显示时间大于当前时间t的切片所关联的至少一部分所述压缩切片码流进行解码,但并不显示。5.根据权利要求1所述的方法,其中所述渲染成像的操作还包括:从所述逐步淘汰列表中删除显示时间不大于当前时间t的切片。6.根据权利要求1所述的方法,其中所述渲染成像的操作还包括:当确定预测切片不会出现在将来的视口中时,将所述预测切片从逐步淘汰列表中删除。7.根据权利要求1所述的方法,其中所述渲染成像的操作还包括:从发送列表中删除在淘汰列表中显示时间不大于当前时间t的切片。8.根据权利要求7所述的方法,还包括:将接收列表发送至网络上的边缘节点。9.一种设备,包括:处理器,其操作为:从解码设备处接收获取码流列表的请求,所述码流列表中每个码流与广角视频图像切片的编码相关联;向编码设备发送获取第一码流的请求,所述第一码流没有缓存在所述设备中;以及向所述解码设备发送码流列表中的第二码流,所述第二码流缓存在所述设备中。10.根据权利要求9所述的设备,其中所述处理器的操作还包括:将所述广角视频图像切片所对应的码流缓存存储;以及维护所缓存的码流所对应的切片的边缘列表。11.根据权利要求10所述的设备,其中所述切片的边缘列表包含解码设备正在使用的切片和预测将要使用的切片。
12.根据权利要求10所述的设备,其中所述从解码设备处接收获取码流列表的请求的操作包括:从解码设备处接收切片的解码器列表;将不在所述边缘列表中而在解码器列表中的切片添加至边缘列表中;将未包含在所述解码器列表中的切片所关联的码流从缓存中删除;以及将未包含在所述解码器列表中的切片从所述边缘列表中删除。13.根据权利要求12所述的设备,其中所述向解码设备发送码流列表中的第二码流的操作包括:将所述解码器列表中的切片所关联的缓存码流发送至解码设备。14.根据权利要求13所述的设备,其中所述向编码设备发送获取第一码流的请求的操作包括:向所述编码设备发送所述边缘列表。15.根据权利要求14所述的设备,其中所述边缘列表中包含从多个接收端处分别接收的切片。16.一种广角视频的编码设备,包括:处理器,其操作为:从边缘设备处接收切片的边缘列表;如果确定所述边缘列表包含第一切片,而由编码设备维护的发送列表中不包含所述第一切片,则:开始将第一切片编码为新码流,并且将所述新码流传输至所述边缘设备;以及如果确定所述发送列表中包含第二切片,而所述边缘列表中不包含所述第二切片,则:停止对第二切片所对应码流的编码,并且从所述发送列表中删除第二切片。17.根据权利要求16所述的编码设备,其中将新码流传输至边缘设备的操作包括:将所述发送列表中各个切片分别关联的码流发送至边所述缘设备。18.根据权利要求16所述的设备,其中所述边缘列表中的切片分别带有时间标签。19.根据权利要求16所述的编码设备,其中所述处理器的操作还包括:从所述边缘设备处分别接收边缘列表;以及根据各个边缘列表更新发送列表。20.根据权利要求16所述的编码设备,其中所述处理器的操作还包括:如果确定所述边缘设备的边缘列表中包含第二切片,且与所述第二切片关联的压缩码流正在被传输至另一个边缘设备,则将所述压缩码流发送至所述的边缘设备。
技术总结
本发明提供了一种新的方法,该方法包括:维护一个逐步淘汰列表,该逐步淘汰列表包含广角图像当前视口的切片,所述切片被预测为在距当前时间t的持续时间d之后不再出现在视口中;获取预测在当前时间t之后某一时间会被观看的切片。将不在接收列表中的预测切片添加至接收列表中;根据接收列表对当前可视区域的切片进行渲染成像,接收列表和逐步淘汰列表的切片分别关联各自的显示时间。所述渲染成像包括:解码和显示接收列表中的切片,所述切片所关联的显示时间不大于当前时间t;以及停止解码和显示逐步淘汰列表中的切片,所述切片所关联的显示时间不大于当前时间t。示时间不大于当前时间t。示时间不大于当前时间t。
技术研发人员:钟声 郑仲侯 庄泽森
受保护的技术使用者:达音网络科技(上海)有限公司
技术研发日:2022.08.03
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种用于岛礁环境的折叠式担架 下一篇:一种关节对中复位机构及外骨骼系统的制作方法
