一种在3D环境中纹理表面播放视频的实现方法技术

技术编号:32926863 阅读:14 留言:0更新日期:2022-04-07 12:18
本发明专利技术涉及视频播放技术领域,具体涉及是一种在3D环境中纹理表面播放视频的实现方法,先初始化组件;然后创建播放实例并加载视频资源;接着设置组件显示回调;然后创建初始化OpenGL纹理对象;接着获取S视频回调数据并赋值给OpenGL纹理对象;然后渲染纹理至3D模型对象;最后结束释放纹理及组件。这样不用使用大型游戏引擎便可简单实现纹理中播放视频,不用考虑引擎的功能开发限制,使用libvlc组件无需研究多媒体播放的实现方法,即可实现视频图像的采集,可完全在自己的3D框架中使用,更加开放自由的开发适用于自己应用场景的功能。放自由的开发适用于自己应用场景的功能。放自由的开发适用于自己应用场景的功能。

【技术实现步骤摘要】
一种在3D环境中纹理表面播放视频的实现方法


[0001]本专利技术涉及视频播放
,具体涉及是一种在3D环境中纹理表面播放视频的实现方法。

技术介绍

[0002]对于3D环境场景的开发时,经常会需要视频纹理直接在3D模型上显示出来,例如一个3D舞台场景中的背景LED屏幕墙,这里场景中的LED上就会播放一些背景视频;或者一个线上直播的虚拟发布会,一般会模拟个3D发布会现场,一般现场都会有个大屏展示宣传片等功能; 这些情况都将会用到在3D纹理上播放视频的方法,现有的3D开发引擎可以实现纹理的视频播放,但这样一来引擎的开放性不够,将会无法完成一些特定的功能,而不使用3D开发引擎仅使用像OpenGL这样的3D显示引擎,开发的复杂度将会大大增加,需要自行实现多媒体视频的解析转码等工作,会增加大量的繁琐工作。

技术实现思路

[0003]本专利技术针对以上问题,提供一种在3D环境中纹理表面播放视频的实现方法。
[0004]采用的技术方案是,一种在3D环境中纹理表面播放视频的实现方法包括以下步骤:S1,初始化组件;S2,创建播放实例并加载视频资源;S3,设置组件显示回调;S4,创建初始化OpenGL纹理对象;S5,获取S3中视频回调数据并赋值给OpenGL纹理对象; S6,渲染纹理至3D模型对象;S7,结束释放纹理及组件。
[0005]可选的,S1中,初始化libvlc组件,同时OpenGL及3D场景加载初始化。
[0006]进一步的,S2中,创建libvlc实例调用API libvlc_new。
[0007]可选的,S3中,先加载视频资源文件生成媒体对象调用API libvlc_media_new_path,然后使用媒体对象创建播放器调用API libvlc_media_player_new_from_media,最后设置图像数据获取回调方法调用API libvlc_video_set_callbacks。
[0008]可选的,S4中,先生成OpenGL纹理调用API glGenTextures,然后绑定纹理调用API glGenTextures,最后初始化纹理参数调用API glTexlmage2D。
[0009]可选的,S5中,回调获得原始图像数据转换更新给OpenGL纹理调用API glTexsublmage2D。
[0010]可选的,S6中,进行3D场景渲染及程序其它逻辑处理。
[0011]进一步的,S7中,程序退出释放相应对象动态纹理及libvlc对象。
[0012]本专利技术的有益效果至少包括以下之一;
1、不用使用大型游戏引擎便可简单实现纹理中播放视频,不用考虑引擎的功能开发限制。
[0013]2、使用libvlc组件无需研究多媒体播放的实现方法,即可实现视频图像的采集。
[0014]3、可完全在自己的3D框架中使用,更加开放自由的开发适用于自己应用场景的功能。
附图说明
[0015]图1为在3D环境中纹理表面播放视频的逻辑框图。
具体实施方式
[0016]为了使本专利技术的目的、技术方案及优点能够更加清晰明白,以下结合附图和实施例对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术保护内容。
[0017]在本专利技术的描述中,需要说明的是,可能使用到的术语
ꢀ“
上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利技术的限制;可能使用到的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性,此外,除非另有明确的规定和限定,可能使用到的术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本专利技术中的具体含义。
[0018]如图1所示,一种在3D环境中纹理表面播放视频的实现方法,包括以下步骤:S1,初始化组件;S2,创建播放实例并加载视频资源;S3,设置组件显示回调;S4,创建初始化OpenGL纹理对象;S5,获取S3中视频回调数据并赋值给OpenGL纹理对象; S6,渲染纹理至3D模型对象;S7,结束释放纹理及组件。
[0019]这样设计的目的在于,不用使用大型游戏引擎便可简单实现纹理中播放视频,不用考虑引擎的功能开发限制,使用libvlc组件无需研究多媒体播放的实现方法,即可实现视频图像的采集,可完全在自己的3D框架中使用,更加开放自由的开发适用于自己应用场景的功能。
[0020]本实施例中,具体实施时,一种在3D环境中纹理表面播放视频的实现方法,包括以下步骤:S1中,初始化libvlc组件,同时OpenGL及3D场景加载初始化;S2中,创建libvlc实例调用API libvlc_new;S3中,先加载视频资源文件生成媒体对象调用API libvlc_media_new_path,然后
使用媒体对象创建播放器调用API libvlc_media_player_new_from_media,最后设置图像数据获取回调方法调用API libvlc_video_set_callbacks;S4中,先生成OpenGL纹理调用API glGenTextures,然后绑定纹理调用API glGenTextures,最后初始化纹理参数调用API glTexlmage2D;S5中,回调获得原始图像数据转换更新给OpenGL纹理调用API glTexsublmage2D;S6中,进行3D场景渲染及程序其它逻辑处理;S7中,程序退出释放相应对象动态纹理及libvlc对象这样设计的目的在于,基于libvlc播放组件实现,该组件可直接在指定窗口上播放视频,但无法在3D纹理上进行视频播放。使用该播放组件的数据回调功能,在回调方法中可获得播放图像的原始数据。在OpenGl中创建动态纹理对象,当VLC播放视频时得到图像数据后,转换数据模型改为纹理可用的数据后拷贝至纹理中。将该纹理赋给3D场景对象中,并在渲染3D场景前实时更新动态纹理即可实现视频在3D场景中的播放。
[0021]最后应说明的是:以上仅为本专利技术的优选实施例而已,并不用于限制本专利技术,尽管参照前述实施例对本专利技术进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本专利技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本专利技术的保护范围之内。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在3D环境中纹理表面播放视频的实现方法,包括以下步骤:S1,初始化组件;S2,创建播放实例并加载视频资源;S3,设置组件显示回调;S4,创建初始化OpenGL纹理对象;S5,获取S3中视频回调数据并赋值给OpenGL纹理对象; S6,渲染纹理至3D模型对象;S7,结束释放纹理及组件。2.根据权利要求1所述的一种在3D环境中纹理表面播放视频的实现方法,其特征在于:S1中,初始化libvlc组件,同时OpenGL及3D场景加载初始化。3.根据权利要求2所述的一种在3D环境中纹理表面播放视频的实现方法,其特征在于:S2中,创建libvlc实例调用API libvlc_new。4.根据权利要求3所述的一种在3D环境中纹理表面播放视频的实现方法,其特征在于:S3中,先加载视频资源文件生成媒体对象调用API libvlc_media_new_path,然后使用媒体对象创建播放器调用API libvlc_media_player...

【专利技术属性】
技术研发人员:傅祯勇
申请(专利权)人:弘成科技发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1