在创建视频的时候,如果调用视频的play
方法,就能够看到视频:
const video = document.createElement('video');
......
video.oncanplaythrough = ()=>{
video.play(); //如果不写这句,webGL就无法显示视频纹理
}
请教这是为什么呢?如果我要给很多个视频做转场,那么同时播放多个视频就会很卡……
原因是在regl.frame
之外获取的纹理:
const texture = regl.texture(video);
regl.frame(...);
应该改为在每一帧中获取:
regl.frame(({time})=>{
const texture = regl.texture(video);
...
});
在使用WebGL(或者其封装库如REGL)来显示视频纹理时,通常需要在WebGL的上下文中正确地设置和更新视频纹理。视频纹理是通过将HTML5 <video>
元素的当前帧作为纹理数据传递给WebGL纹理对象来实现的。
关于你的问题,当你说调用 video.play()
后视频纹理才在WebGL中显示,这通常是因为WebGL纹理更新是依赖于视频帧的。在视频没有开始播放(即没有调用 play()
方法)之前,WebGL无法从视频元素中获取到帧数据来更新纹理。
为了解决在多个视频同时播放时可能出现的性能问题,你可以考虑以下几种策略:
loadeddata
或 canplay
事件来确认视频已准备好。gl.TEXTURE_MIN_FILTER
和 gl.TEXTURE_MAG_FILTER
)。以下是一个简化的例子,展示如何在REGL中设置和使用视频纹理(假设你已经有了一个REGL实例 regl
):
const video = document.createElement('video');
video.src = 'path/to/your/video.mp4';
video.onloadeddata = () => {
// 视频加载完成后,创建WebGL纹理
const texture = regl.texture(video);
// 然后在你的REGL绘制命令中使用这个纹理
// ...
};
// 当需要播放视频时
video.play();
注意,这个例子只是一个简化的示例,并没有处理所有可能的边界情况和性能优化。在实际应用中,你可能需要根据具体需求进行适当的调整和优化。
创建一个使用视频来作为贴图的纹理对象。 它和其基类Texture几乎是相同的,除了它总是将needsUpdate设置为true,以便使得贴图能够在视频播放时进行更新。自动创建mipmaps也会被禁用。 代码示例 // assuming you have created a HTML video element with id="video" const video = document.getEl
嘿,伙计们,我一直试图在exoPlayer中显示视频,因为2天,但没有任何进展,请指导我做错了什么。谢谢提前。 这是我对create函数的代码调用。 我的图书馆版本是
前因后果 问题的起因是和一个群友一起讨论,怎么让地球的背景贴上视频,而且地球展开成平面之后,可以拖动实体位置 由于之前几次示例都用了本地的图片(设置 Cesium.Viewer 的imageryProvider 属性)来作背景,这次我很自然的想到了如果使用本地mp4 作为url的值是否可行,结果实践证明这样不行,查看了一下SingleTileImageryProvider的url属性的官方文档,感
问题内容: 我正在尝试将YouTube视频源放入HTML5标签,但似乎不起作用。经过一番谷歌搜索,我发现HTML5不支持YouTube视频URL作为来源。 您可以使用HTML5嵌入YouTube视频吗?如果没有,是否有任何解决方法? 问题答案: 第1步:添加到您喜欢的YouTube网址 步骤2:在来源中寻找标签 第3步:添加到视频标签: 例: 注意那里似乎有些东西。我不知道该字符串可以工作多长时间
我曾尝试使用GStreamer管道将mp4视频转换为avi视频,但它是在没有声音的情况下转换的 gst launch-t-v filesrc location=源。mp4!qtdemux!ffdec\U h264!视频/x-raw-yuv!avimux!filesink location=结果yuv。avi公司
在本机(Java)Android应用程序中,我试图打开一个URL,它是Youtube视频。 我尝试过以不同的有效方式格式化URL,例如: http://www.youtube.com/watch?v=codehere https://www.youtube.com/watch?v=codehere https://youtu.be/codehere 但我总是在Youtube应用程序中出现“此视频不