CN110769241B - 视频帧处理方法、装置、用户端及存储介质 - Google Patents
视频帧处理方法、装置、用户端及存储介质 Download PDFInfo
- Publication number
- CN110769241B CN110769241B CN201911071434.XA CN201911071434A CN110769241B CN 110769241 B CN110769241 B CN 110769241B CN 201911071434 A CN201911071434 A CN 201911071434A CN 110769241 B CN110769241 B CN 110769241B
- Authority
- CN
- China
- Prior art keywords
- video frame
- texture
- color conversion
- current video
- rgb data
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 36
- 238000006243 chemical reaction Methods 0.000 claims description 94
- 239000011159 matrix material Substances 0.000 claims description 64
- 238000000034 method Methods 0.000 claims description 31
- 238000007781 pre-processing Methods 0.000 claims description 6
- 230000015572 biosynthetic process Effects 0.000 claims description 5
- 238000003786 synthesis reaction Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000009877 rendering Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 238000003384 imaging method Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/111—Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/122—Improving the 3D impression of stereoscopic images by modifying image signal contents, e.g. by filtering or adding monoscopic depth cues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/10—Processing, recording or transmission of stereoscopic or multi-view image signals
- H04N13/106—Processing image signals
- H04N13/161—Encoding, multiplexing or demultiplexing different image signal components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing 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/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44012—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/816—Monomedia components thereof involving special video data, e.g 3D video
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本申请提出一种视频帧处理方法、装置、用户端及存储介质,涉及互联网技术领域,通过获得当前视频帧对应的纹理对象以及颜色转换矩阵,并利用设定的着色器对该纹理对象以及颜色转换矩阵进行处理,从而生成该当前视频帧对应的RGB数据,以通过该RGB数据进行渲染,相比于现有技术,能够利用FLV格式的视频帧进行AR环境下的视频流播放,进而增加用户的可玩性,提升用户体验。
Description
技术领域
本申请涉及互联网技术领域,具体而言,涉及一种视频帧处理方法、装置、用户端及存储介质。
背景技术
AR(Augmented Reality,增强现实)技术能够将虚拟信息应用到真实世界中,并将真实世界的环境和虚拟物体实时地叠加在同一画面或空间,能够极大的提高用户的趣味性和可玩性。
在一些应用场景中,比如在视频直播领域,可以将主播的直播界面利用AR技术进行展示,以丰富主播和观众之间的互动。
然而,目前尚无法在一些场景中流畅的播放AR环境下的FLV(FlashVideo,流媒体格式)的视频流,导致用户的体验较差。
发明内容
本申请的目的在于提供一种视频帧处理方法、装置、用户端及存储介质,能够利用FLV格式的视频帧进行AR环境下的视频流播放。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种视频帧处理方法,所述方法包括:
获得当前视频帧对应的纹理对象以及颜色转换矩阵;
利用设定的着色器对所述纹理对象及所述颜色转换矩阵进行处理,生成所述当前视频帧对应的RGB数据,以通过所述RGB数据进行渲染。
第二方面,本申请实施例提供一种视频帧处理装置,所述装置包括:
预处理模块,用于获得当前视频帧对应的纹理对象以及颜色转换矩阵;
转换模块,用于利用设定的着色器对所述纹理对象及所述颜色转换矩阵进行处理,生成所述当前视频帧对应的RGB数据,以通过所述RGB数据进行渲染。
第三方面,本申请实施例提供一种用户端,所述用户端包括存储器,用于存储一个或多个程序;处理器;当所述一个或多个程序被所述处理器执行时,实现上述的视频帧处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的视频帧处理方法。
本申请实施例提供的一种视频帧处理方法、装置、用户端及存储介质,通过获得当前视频帧对应的纹理对象以及颜色转换矩阵,并利用设定的着色器对该纹理对象以及颜色转换矩阵进行处理,从而生成该当前视频帧对应的RGB数据,以通过该RGB数据进行渲染,相比于现有技术,能够利用FLV格式的视频帧进行AR环境下的视频流播放,进而增加用户的可玩性,提升用户体验。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1示出本申请实施例提供的视频帧处理方法的一种示意性应用场景图;
图2示出本申请实施例所提供的用户端的一种示意性结构框图;
图3示出本申请实施例提供的视频帧处理方法的一种示意性流程图;
图4示出本申请实施例提供的视频帧处理方法的另一种示意性流程图;
图5示出本申请实施例提供的视频帧处理方法的再一种示意性流程图;
图6示出本图3中步骤203的子步骤的一种示意性流程图;
图7示出本图6中步骤203-1的子步骤的一种示意性流程图;
图8示出本申请实施例提供的视频帧处理装置的一种示意性结构框图。
图中:100-用户端;101-存储器;102-处理器;103-存储控制器;104-外设接口;105-射频单元;106-通讯总线/信号线;107-显示单元;300-视频帧处理装置;301-处理模块;302-转换模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在例如上述的视频直播领域,可以将主播的直播界面借助AR技术进行展示,以增强主播与观众之间的互动,从而提高用户的趣味性。
但是,在例如iOS(iphoneOperation System)系统中,由于其所使用的ARKit内并没有专门用于播放视频的工具类目,目前的方案一般是通过修改SCNNode的SCNMatrial材质为系统的播放器PlayerLayer,从而实现简单的播放处理;但在该实现方案中,由于系统播放器PlayerLayer有使用视频格式的限制,对于视频直播领域常用的FLV的视频流播放并不支持,一般仅支持播放HLS(HTTP Live Streaming)格式的视频流,且在播放时存在相对较大的时延。
为此,基于上述缺陷,本申请实施例提供的一种可能的实现方式为:通过获得当前视频帧对应的纹理对象以及颜色转换矩阵,并利用设定的着色器对该纹理对象以及颜色转换矩阵进行处理,从而生成该当前视频帧对应的RGB数据,以通过该RGB数据进行渲染,利用FLV格式的视频帧进行AR环境下的视频流播放。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1示出本申请实施例提供的视频帧处理方法的一种示意性应用场景图,在本申请实施例中,服务器与用户端位于无线网络或有线网络中,通过该无线网络或有线网络,服务器与用户端进行数据交互。该用户端可采用移动终端设备,例如可以包括智能手机、平板电脑等等。
本申请实施例提供的一种视频帧处理方法,可以应用于如图1所示的用户端,该用户端中安装有应用程序,与服务器相对应,用于为用户提供服务,该视频帧处理方法可以通过该用户端中安装的应用程序实现。比如用户端中可以安装有用于观看视频直播的APP(Application,手机软件),用户端可以通过运行该APP,执行如本申请实施例提供的视频帧处理方法,从而能够观看到AR环境下的视频直播。
示例性地,请参阅图2,图2示出本申请实施例所提供的用户端100的一种示意性结构框图,该用户端100包括存储器101、一个或多个(图中仅示出一个)处理器102、存储控制器103、外设接口104、射频单元105、显示单元107等。这些组件可以通过一条或多条通讯总线/信号线106相互通讯。
存储器101可用于存储软件程序以及模组,如本申请实施例所提供的视频帧处理装置300对应的程序指令/模组,处理器102通过运行存储在存储器101内的软件程序以及模组,从而执行各种功能应用以及图像处理等,以实现本申请实施例所提供的视频帧处理方法。
其中,存储器101可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除可编程只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。上述的处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)、语音处理器以及视频处理器等;还可以是数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器102也可以是任何常规的处理器等。
外设接口104将各种输入/输入装置耦合至处理器102以及存储器101。在一些实施例中,外设接口104、处理器102以及存储控制器103可以在单个芯片中实现。在本申请其他的一些实施例中,他们还可以分别由独立的芯片实现。
射频单元105用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,比如与服务器进行通讯。
显示单元107用于为用户提供图形输出界面,显示图像信息,以供用户观看视频画面,比如在视频直播场景下的AR直播视频。
可以理解,图2所示的结构仅为示意,用户端100还可以包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。
下面以图2中的用户端100作为示意性主体,对本申请实施例提供的视频帧处理方法进行示意性说明。
请参阅图3,图3示出本申请实施例提供的视频帧处理方法的一种示意性流程图,可以包括以下步骤:
步骤201,获得当前视频帧对应的纹理对象以及颜色转换矩阵;
步骤203,利用设定的着色器对纹理对象及颜色转换矩阵进行处理,生成当前视频帧对应的RGB数据,以通过RGB数据进行渲染。
在例如上述的iOS系统环境中,用户端可以对接收服务器发送的例如格式为CVPixelBuffer的当前视频帧进行解析,从而得到该当前视频帧对应的纹理对象(texture)及颜色转换矩阵,其中,该颜色转换矩阵用于不同格式图像数据的转换,比如将YUV格式的图像数据转换至RGB格式,或者是RGB格式的图像数据转换至YUV格式。
然后,用户端可以利用设定的着色器对该纹理对象及颜色转换矩阵进行处理,比如利用该设定的着色器计算该当前视频帧渲染到显示单元上的颜色,从而生成该当前视频帧对应的RGB数据,以通过该RGB数据进行渲染成像,实现利用FLV格式的视频帧进行AR环境下的视频流播放。
可见,基于上述设计,本申请实施例提供的视频帧处理方法,通过获得当前视频帧对应的纹理对象以及颜色转换矩阵,并利用设定的着色器对该纹理对象以及颜色转换矩阵进行处理,从而生成该当前视频帧对应的RGB数据,以通过该RGB数据进行渲染,相比于现有技术,能够利用FLV格式的视频帧进行AR环境下的视频流播放,进而增加用户的可玩性,提升用户体验。
需要说明的是,在AR对象的数据处理中,纹理对象的生成需要占用大量的物理资源;因此,为了避免相关的应用程序占用过多的物理资源,纹理对象一般不能被频繁的创建。
为此,可以基于纹理缓存(Texture Cache)技术对生成纹理对象的方案进行优化。
作为一种可能的实现方式,在图3的基础上,请参阅图4,图4示出本申请实施例提供的视频帧处理方法的另一种示意性流程图,在执行步骤201以获得当前视频帧对应的纹理对应的纹理对象之前,该视频帧处理方法还可以包括以下步骤:
步骤200,生成纹理缓冲池。
示例性地,可以利用ARKit工具中的ARSCNView类,将ARSCNView中所持有的device作为参数,从而生成对应的CVMetalTextureCache作为纹理对象的纹理缓冲池,该纹理缓冲池中包括有多个纹理数据,从而使用户端在获得视频帧对应的纹理对象时,能够从纹理缓冲池中读取到所需的纹理数据,并进行纹理合成,进而得到视频帧对应的纹理对象,以节约物理资源的开销。
比如,在执行步骤201以获得当前视频帧对应的纹理对象时,结合上述示例,可以将格式为CVPixelBuffer的当前视频帧传递至上述示例的纹理缓冲池CVMetalTextureCache中,从而在CVMetalTextureCache中进行纹理数据的合成,得到对应的纹理对象。
可见,基于上述设计,本申请实施例提供的视频帧处理方法,通过生成纹理缓冲池,以使在生成纹理对象时,将当前视频帧传递至该纹理缓冲池中,从而在该纹理缓冲池中进行纹理合成,得到该当前视频帧对应的纹理对象,而无需根据当前视频帧直接生成,能够节约物理资源的开销。
另外,在执行步骤201以获得当前视频帧对应的颜色转换时,可以采用标识与转换策略相结合的方式进行实现。
比如,在对视频帧进行编码时,可以在每一视频帧设置标志位,并在该标志位写入对应的标识,该标志即表征相应视频帧所需的颜色转换矩阵。
并且,用户端还可以记录有设定的颜色转换策略,该颜设定色转换策略包括多个标识与多个颜色转换矩阵的对应关系,即记录了每一标识各自对应的颜色转换矩阵。
如此,在执行步骤201以获得当前视频帧对应的颜色转换矩阵时,可以根据该设定的颜色转换策略,获得与所述当前视频帧中第一标识对应的颜色转换矩阵。
示例性地,该设定的颜色转换策略可以如下述表1所示:
表1
标识 | 颜色转换矩阵 |
0 | 矩阵A |
1 | 矩阵B |
2 | 矩阵C |
由此,按照上述表1所示的颜色转换策略,若当前视频帧的标志位记录的第一标识为0,则可以将矩阵A作为对应的颜色转换矩阵;若当前视频帧的标志位记录的第一标识为1,则可以将矩阵B作为对应的颜色转换矩阵;若当前视频帧的标志位记录的第一标识为3,则可以将矩阵C作为对应的颜色转换矩阵。
当然,可以理解的是,上述获得颜色转换矩阵的方式仅为实现,在本申请实施例其他一些可能的应用场景中,还可以通过其他的方式获得当前视频帧对应的颜色转换矩阵;比如在对视频帧编码时,还可以将视频帧对应的颜色转换矩阵一起进行编码,从而使用户端可以至直接解码获得每一视频帧对应的颜色转换矩阵。
另外,执行步骤203时所利用的着色器可以通过多种方式实现,比如可以由用户端编写实时的着色器进行使用。
作为一种可能的实现方式,在图3的基础上,请参阅图5,图5示出本申请实施例提供的视频帧处理方法的再一种示意性流程图,在执行步骤203之前,该视频帧处理方法还可以包括以下步骤:
步骤202,调用设定的着色器。
示例性地,可以选择使用SCNShaderModifierEntryPoint作为着色器shader的载体,而不使用SCNProgram重新编写实时的着色器进行应用,从而避免光影渲染的产生。
另外,在执行步骤203时,发明人在实际的工作中发现,利用本申请实施例提供的上述方案,尽管能够将纹理对象转换为对应的RGB数据进行渲染成像,从而利用FLV格式的视频帧进行AR环境下的视频流播放,但渲染成像得到的显示结果往往会比实际图像的颜色偏浅,导致成像效果较差。
发明人在实际的工作中对该现象进行分析,认为导致渲染结果与实际图像相比颜色较浅的原因可能为以下几个方面:
1、视频帧的图像数据解码设置存在问题从而导致数据错乱;
2、着色器shader中使用的颜色转换矩阵跟实际编码前所使用的颜色转换矩阵不匹配,导致转换后的颜色与实际的颜色相比存在偏差;
3、生成纹理对象的颜色空间跟渲染引擎所使用的颜色空间不一致。
基于上述可能的原因,发明人利用MTKTextureLoader加载一张RGB格式的图像进行验证,并输出一个纹理对象;MTKTextureLoader使用的是系统解码图片,省去自定义解码图片过程,进而排除上述原因1;另外,图片格式为RGB格式,用不到颜色转换矩阵,因此也可以排除上述原因2。因此,发明人认为,利用上述方案渲染成像得到的显示结果比实际图像存在颜色偏浅的原因是,生成纹理对象的颜色空间跟渲染引擎所使用的颜色空间不一致。
因此,为了使渲染成像得到的显示结果与实际图像更为接近,在图3的基础上,请参阅图6,图6示出本图3中步骤203的子步骤的一种示意性流程图,作为一种可能的实现方式,步骤203可以包括以下子步骤:
步骤203-1,将纹理对象以及颜色转换矩阵传输至设定的着色器进行处理,得到当前视频帧对应的初始RGB数据;
步骤203-2,对初始RGB数据进行伽马变换,生成RGB数据。
在本申请实施例中,可以将纹理对象以及颜色转换矩阵传输至设定的着色器进行处理,从而得到该当前视频帧对应的处于sRGB空间的初始RGB数据。
然后,可以利用伽马变换,从而将处于sRGB空间的初始RGB数据变换至处于线性空间的RGB数据,进而利用该RGB数据进行渲染成像。
可见,基于上述设计,本申请实施例提供的视频帧处理方法,利用伽马变换将对着色器输出的处于sRGB空间的初始RGB数据变换至处于线性空间的RGB数据,从而利用处于线性空间的RGB数据进行渲染成像,能够使渲染成像的结果与实际图像更为接近,从而进一步增加用户在AR环境下的可玩性,提升用户体验。
其中,示例性地,对初始RGB数据进行伽马变换的计算公式可以满足如下:
式中,linear(x)表示RGB数据,x表示初始RGB数据。
当前,可以理解的是,上述对初始RGB数据进行伽马变换的计算公式仅为示意,在本申请实施例其他一些可能的实现方式中,还可以采用其他的一些公式对初始RGB数据进行伽马变换,本申请实施例对进行伽马变换的具体公式不进行限定。
另外,为对上述步骤203-1进行具体说明,在图6的基础上,请参阅图7,图7示出本图6中步骤203-1的子步骤的一种示意性流程图,作为一种可能的实现方式,可以包括以下步骤:
步骤203-1a,生成纹理对象对应的YUV数据;
步骤203-1b,将YUV数据及颜色转换矩阵进行封装后传输至设定的着色器,以使设定的着色器输出初始RGB数据。
示例性地,在执行上述步骤203-1之前,可以通过步骤202创建SCNMaterial对象,设置SCNMaterial中的SCNShaderModifierEntryPoint为指定的着色器shader。并将SCNMaterial对象赋值给SCNNode对象的materials属性。
于是,在执行步骤203-1时,可以将解码得到的格式为CVPixelBuffer的当前视频帧作为参数1,将MTLPixelFormatR8Unorm或者是MTLPixelFormatRG8Unorm作为参数2,一并传递至CVMetalTextureCacheCreateTextureFromImage中内,生成对应的textureY/textureUV纹理对象;并根据CVPixelBuffer中标志位的值获取到对应的颜色转换矩阵coversionMatrix。
然后,可以将textureY、textureUV、coversionMatrix通过SCNMaterialProperty进行一层封装,并通过KVC(Key Value Coding,键值编码)传递进SCNMaterial内以供shader使用。
接下来,可以在shader内编写三个参数分别接收textureY、textureUV、coversionMatrix并进行处理,从而将textureY、textureUV纹理对象转换成对应的位于sRGB空间的RGB图像数据。
最后,可以通过上述示例的伽马变换公式,将sRGB空间内的RGB图像数据进行伽马变换(比如Gamma 2.2变换)操作,从而使得图像数据从sRGB空间转换为基于线性空间的RGB数据,再用于进行渲染成像。
另外,基于与上述视频帧处理方法相同的发明构思,请参阅图8,图8示出本申请实施例提供的视频帧处理装置300的一种示意性结构框图,该视频帧处理装置300包括处理模块301及转换模块302。其中:
预处理模块301用于,获得当前视频帧对应的纹理对象以及颜色转换矩阵;
转换模块302用于,利用设定的着色器对纹理对象及颜色转换矩阵进行处理,生成当前视频帧对应的RGB数据,以通过RGB数据进行渲染。
可选地,作为一种可能的实现方式,预处理模块301在获得当前视频帧对应的纹理对象之前,还用于:
生成纹理缓冲池;
预处理模块301在获得当前视频帧对应的纹理对象时,具体用于:
将当前视频帧传递至纹理缓冲池,以使纹理缓冲池输出纹理对象。
可选地,作为一种可能的实现方式,预处理模块301在获得当前视频帧对应的颜色转换矩阵时,具体用于:
根据设定的颜色转换策略,获得与当前视频帧中第一标识对应的颜色转换矩阵;其中,颜色转换策略包括多个标识与多个颜色转换矩阵的对应关系。
可选地,作为一种可能的实现方式,转换模块302在利用设定的着色器对纹理对象及颜色转换矩阵进行处理,生成当前视频帧对应的RGB数据之前,还用于:
调用设定的着色器。
可选地,作为一种可能的实现方式,转换模块302在利用设定的着色器对纹理对象及颜色转换矩阵进行处理,生成当前视频帧对应的RGB数据时,具体用于:
将纹理对象以及颜色转换矩阵传输至设定的着色器进行处理,得到当前视频帧对应的初始RGB数据;
对初始RGB数据进行伽马变换,生成RGB数据。
可选地,作为一种可能的实现方式,对初始RGB数据进行伽马变换的计算公式满足如下:
式中,linear(x)表示RGB数据,x表示初始RGB数据。
可选地,作为一种可能的实现方式,转换模块302在将纹理对象以及颜色转换矩阵传输至设定的着色器进行处理,得到当前视频帧对应的初始RGB数据时,具体用于:
生成纹理对象对应的YUV数据;
将YUV数据及颜色转换矩阵进行封装后传输至设定的着色器,以使设定的着色器输出初始RGB数据。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本申请实施例提供的一种视频帧处理方法、装置、用户端及存储介质,通过获得当前视频帧对应的纹理对象以及颜色转换矩阵,并利用设定的着色器对该纹理对象以及颜色转换矩阵进行处理,从而生成该当前视频帧对应的RGB数据,以通过该RGB数据进行渲染,相比于现有技术,能够利用FLV格式的视频帧进行AR环境下的视频流播放,进而增加用户的可玩性,提升用户体验。
并且,还通过生成纹理缓冲池,以使在生成纹理对象时,将当前视频帧传递至该纹理缓冲池中,从而在该纹理缓冲池中进行纹理合成,得到该当前视频帧对应的纹理对象,而无需根据当前视频帧直接生成,能够节约物理资源的开销。
并且,还利用伽马变换将对着色器输出的处于sRGB空间的初始RGB数据变换至处于线性空间的RGB数据,从而利用处于线性空间的RGB数据进行渲染成像,能够使渲染成像的结果与实际图像更为接近,从而进一步增加用户在AR环境下的可玩性,提升用户体验。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (8)
1.一种视频帧处理方法,其特征在于,所述方法包括:
生成纹理缓冲池;
将当前视频帧传递至所述纹理缓冲池,以使所述纹理缓冲池输出当前视频帧对应的纹理对象;其中,所述纹理缓冲池包括多个纹理数据,所述纹理对象由多个纹理数据中部分纹理数据进行纹理合成得到;
获得当前视频帧对应的纹理对象;根据设定的颜色转换策略,获得与所述当前视频帧中第一标识对应的颜色转换矩阵;其中,所述颜色转换策略包括多个标识与多个颜色转换矩阵的对应关系;
利用设定的着色器对所述纹理对象及所述颜色转换矩阵进行处理,生成所述当前视频帧对应的RGB数据,以通过所述RGB数据进行渲染。
2.如权利要求1所述的方法,其特征在于,在利用设定的着色器对所述纹理对象及所述颜色转换矩阵进行处理,生成所述当前视频帧对应的RGB数据的步骤之前,所述方法还包括:
调用所述设定的着色器。
3.如权利要求1所述的方法,其特征在于,利用设定的着色器对所述纹理对象及所述颜色转换矩阵进行处理,生成所述当前视频帧对应的RGB数据的步骤,包括:
将所述纹理对象以及所述颜色转换矩阵传输至所述设定的着色器进行处理,得到所述当前视频帧对应的初始RGB数据;
对所述初始RGB数据进行伽马变换,生成所述RGB数据。
5.如权利要求3所述的方法,其特征在于,将所述纹理对象以及所述颜色转换矩阵传输至所述设定的着色器进行处理,得到所述当前视频帧对应的初始RGB数据的步骤,包括:
生成所述纹理对象对应的YUV数据;
将所述YUV数据及所述颜色转换矩阵进行封装后传输至所述设定的着色器,以使所述设定的着色器输出所述初始RGB数据。
6.一种视频帧处理装置,其特征在于,所述装置包括:
预处理模块,用于生成纹理缓冲池;将当前视频帧传递至所述纹理缓冲池,以使所述纹理缓冲池输出当前视频帧对应的纹理对象;其中,所述纹理缓冲池包括多个纹理数据,所述纹理对象由多个纹理数据中部分纹理数据进行纹理合成得到;获得当前视频帧对应的纹理对象;根据设定的颜色转换策略,获得与所述当前视频帧中第一标识对应的颜色转换矩阵;其中,所述颜色转换策略包括多个标识与多个颜色转换矩阵的对应关系;
转换模块,用于利用设定的着色器对所述纹理对象及所述颜色转换矩阵进行处理,生成所述当前视频帧对应的RGB数据,以通过所述RGB数据进行渲染。
7.一种用户端,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-5中任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911071434.XA CN110769241B (zh) | 2019-11-05 | 2019-11-05 | 视频帧处理方法、装置、用户端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911071434.XA CN110769241B (zh) | 2019-11-05 | 2019-11-05 | 视频帧处理方法、装置、用户端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110769241A CN110769241A (zh) | 2020-02-07 |
CN110769241B true CN110769241B (zh) | 2022-02-01 |
Family
ID=69335970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911071434.XA Active CN110769241B (zh) | 2019-11-05 | 2019-11-05 | 视频帧处理方法、装置、用户端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110769241B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111311716B (zh) * | 2020-02-27 | 2023-05-12 | Oppo广东移动通信有限公司 | 动画播放方法、装置、终端设备以及存储介质 |
WO2023245495A1 (zh) * | 2022-06-22 | 2023-12-28 | 云智联网络科技(北京)有限公司 | 将渲染数据转换为视频流的方法及装置、电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210883A (zh) * | 2016-08-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种视频渲染的方法、设备 |
CN106331850A (zh) * | 2016-09-18 | 2017-01-11 | 上海幻电信息科技有限公司 | 浏览器直播客户端、浏览器直播系统及浏览器直播方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9846960B2 (en) * | 2012-05-31 | 2017-12-19 | Microsoft Technology Licensing, Llc | Automated camera array calibration |
-
2019
- 2019-11-05 CN CN201911071434.XA patent/CN110769241B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210883A (zh) * | 2016-08-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种视频渲染的方法、设备 |
CN106331850A (zh) * | 2016-09-18 | 2017-01-11 | 上海幻电信息科技有限公司 | 浏览器直播客户端、浏览器直播系统及浏览器直播方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110769241A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10110936B2 (en) | Web-based live broadcast | |
CN109983757B (zh) | 全景视频回放期间的视图相关操作 | |
US10516903B2 (en) | Method and apparatus for transmitting video data | |
US20190325652A1 (en) | Information Processing Method and Apparatus | |
CN110868625A (zh) | 一种视频播放方法、装置、电子设备及存储介质 | |
CN111899322A (zh) | 视频处理方法、动画渲染sdk和设备及计算机存储介质 | |
CN110769241B (zh) | 视频帧处理方法、装置、用户端及存储介质 | |
WO2019142665A1 (ja) | 情報処理装置および方法 | |
CN105828182A (zh) | 一种基于OpenGL渲染实时视频的方法及系统 | |
CN110012336B (zh) | 直播界面的图片配置方法、终端及装置 | |
WO2020063924A1 (zh) | 传输媒体数据的方法、客户端和服务器 | |
WO2020030958A1 (zh) | 一种添加水印的方法、装置、设备/终端/服务器以及存储介质 | |
CN111464828A (zh) | 虚拟特效显示方法、装置、终端及存储介质 | |
WO2020258907A1 (zh) | 虚拟物品的生成方法、装置及设备 | |
CN105144726A (zh) | 指示媒体内容的样本的标称范围的定制数据 | |
CN110022481A (zh) | 视频码流的解码、生成方法及装置、存储介质、电子装置 | |
CN110582021B (zh) | 信息处理方法及装置、电子设备和存储介质 | |
US11051080B2 (en) | Method for improving video resolution and video quality, encoder, and decoder | |
US20160142723A1 (en) | Frame division into subframes | |
CN114979541A (zh) | 一种视频显示系统 | |
EP3229478B1 (en) | Cloud streaming service system, image cloud streaming service method using application code, and device therefor | |
CN114079823A (zh) | 基于Flutter的视频渲染方法、装置、设备及介质 | |
WO2020175176A1 (ja) | 情報処理装置および方法、並びに、再生装置および方法 | |
CN111669541A (zh) | 预监画面显示方法及显示系统 | |
CN113674387B (zh) | 非自然场景视频的视频处理方法、装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |