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

文档序号:29498471发布日期:2022-04-06 16:25阅读:126来源:国知局
一种在3D环境中纹理表面播放视频的实现方法与流程
一种在3d环境中纹理表面播放视频的实现方法
技术领域
1.本发明涉及视频播放技术领域,具体涉及是一种在3d环境中纹理表面播放视频的实现方法。


背景技术:

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


技术实现要素:

3.本发明针对以上问题,提供一种在3d环境中纹理表面播放视频的实现方法。
4.采用的技术方案是,一种在3d环境中纹理表面播放视频的实现方法包括以下步骤:s1,初始化组件;s2,创建播放实例并加载视频资源;s3,设置组件显示回调;s4,创建初始化opengl纹理对象;s5,获取s3中视频回调数据并赋值给opengl纹理对象; s6,渲染纹理至3d模型对象;s7,结束释放纹理及组件。
5.可选的,s1中,初始化libvlc组件,同时opengl及3d场景加载初始化。
6.进一步的,s2中,创建libvlc实例调用api libvlc_new。
7.可选的,s3中,先加载视频资源文件生成媒体对象调用api libvlc_media_new_path,然后使用媒体对象创建播放器调用api libvlc_media_player_new_from_media,最后设置图像数据获取回调方法调用api libvlc_video_set_callbacks。
8.可选的,s4中,先生成opengl纹理调用api glgentextures,然后绑定纹理调用api glgentextures,最后初始化纹理参数调用api gltexlmage2d。
9.可选的,s5中,回调获得原始图像数据转换更新给opengl纹理调用api gltexsublmage2d。
10.可选的,s6中,进行3d场景渲染及程序其它逻辑处理。
11.进一步的,s7中,程序退出释放相应对象动态纹理及libvlc对象。
12.本发明的有益效果至少包括以下之一;
1、不用使用大型游戏引擎便可简单实现纹理中播放视频,不用考虑引擎的功能开发限制。
13.2、使用libvlc组件无需研究多媒体播放的实现方法,即可实现视频图像的采集。
14.3、可完全在自己的3d框架中使用,更加开放自由的开发适用于自己应用场景的功能。
附图说明
15.图1为在3d环境中纹理表面播放视频的逻辑框图。
具体实施方式
16.为了使本发明的目的、技术方案及优点能够更加清晰明白,以下结合附图和实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明保护内容。
17.在本发明的描述中,需要说明的是,可能使用到的术语
ꢀ“
上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制;可能使用到的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性,此外,除非另有明确的规定和限定,可能使用到的术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
18.如图1所示,一种在3d环境中纹理表面播放视频的实现方法,包括以下步骤:s1,初始化组件;s2,创建播放实例并加载视频资源;s3,设置组件显示回调;s4,创建初始化opengl纹理对象;s5,获取s3中视频回调数据并赋值给opengl纹理对象; s6,渲染纹理至3d模型对象;s7,结束释放纹理及组件。
19.这样设计的目的在于,不用使用大型游戏引擎便可简单实现纹理中播放视频,不用考虑引擎的功能开发限制,使用libvlc组件无需研究多媒体播放的实现方法,即可实现视频图像的采集,可完全在自己的3d框架中使用,更加开放自由的开发适用于自己应用场景的功能。
20.本实施例中,具体实施时,一种在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场景中的播放。
21.最后应说明的是:以上仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:
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_new_from_media,最后设置图像数据获取回调方法调用api libvlc_video_set_callbacks。5.根据权利要求4所述的一种在3d环境中纹理表面播放视频的实现方法,其特征在于:s4中,先生成opengl纹理调用api glgentextures,然后绑定纹理调用api glgentextures,最后初始化纹理参数调用api gltexlmage2d。6.根据权利要求5所述的一种在3d环境中纹理表面播放视频的实现方法,其特征在于:s5中,回调获得原始图像数据转换更新给opengl纹理调用api gltexsublmage2d。7.根据权利要求6所述的一种在3d环境中纹理表面播放视频的实现方法,其特征在于:s6中,进行3d场景渲染及程序其它逻辑处理。8.根据权利要求7所述的一种在3d环境中纹理表面播放视频的实现方法,其特征在于:s7中,程序退出释放相应对象动态纹理及libvlc对象。

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


技术研发人员:傅祯勇
受保护的技术使用者:弘成科技发展有限公司
技术研发日:2021.12.29
技术公布日:2022/4/5
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1