返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Babylon使用麦克风并处理常见问题解决
  • 487
分享到

Babylon使用麦克风并处理常见问题解决

Babylon麦克风常见问题Babylon问题处理 2023-05-14 08:05:29 487人浏览 泡泡鱼
摘要

目录引言问题1:Property 'constraints' does not exist on type 'Window & typeof glob

引言

在Babylon.js中媒体设备流使用起来有很多坑,我们将在本文中逐一说明这些坑并提供相应的解决方案。

问题1:Property 'constraints' does not exist on type 'Window & typeof globalThis'.

在比较新的浏览器中,navigator对象中的getUserMedia方法已经被废弃了。取而代之的是navigator.mediaDevices.getUserMedia(),并且constraints应该作为参数传入。

const constraints = { audio: true, video: false };
navigator.mediaDevices.getUserMedia(constraints)

对于问题 Property 'constraints' does not exist on type 'Window & typeof globalThis'.ts(2339)。这是因为 typescript 没有识别到constraints变量的类型,可以尝试直接定义一个 const constraints 常量。

问题2: Property 'stream' does not exist on type 'Window & typeof globalThis'.ts(2339)

如果在使用媒体设备流时,你遇到了“Property 'stream' does not exist on type 'Window & typeof globalThis'.ts(2339)” 这个问题出现在TypeScript项目中。因为该类型Script不认识window.stream, 所以我们需要将它声明为any类型。解决方法如下:

(window as any).stream = stream;

这让编译器知道 window 对象现在具有一个名为stream的属性。

问题3: Property 'oninactive' does not exist on type 'MediaStream'.ts(2339)

在较新版本的WEB api中,MediaStream对象不再包含oninactive属性,需要更改事件监听方式。 解决方法如下:

stream.addEventListener('inactive', () => {
    console.log('Stream ended ... ...');
});

而不是

stream.oninactive = () => {
    console.log('Stream ended ... ...');
};

此更改暴露了更多事件,同时也需要更改您的代码来处理它们。

总结

在 Babylon.js 中,使用媒体设备流时出现的问题通常是由于您没有根据最新的约定执行操作,或者由于 TypeScript 编译器不知道您所做的更改而导致的。通过遵循我们提供的指南和解决方案,您应该能够轻松地解决这些问题。

示例源码(修改前):

loadingASoundFromTheMicrophone = (scene: Scene, canvas: htmlCanvasElement) => {
        let engine = scene.getEngine();
        let freeCamera = new FreeCamera("freeCamera", new Vector3(0, 5, -10), scene);
        freeCamera.setTarget(Vector3.Zero());
        freeCamera.attachControl(canvas, true);
        let hemisphericLight = new HemisphericLight("hemisphericLight", new Vector3(0, 1, 0), scene);
        hemisphericLight.intensity = 0.7;
        let sphere = MeshBuilder.CreateSphere("sphere", {segments: 16, diameter: 2}, scene);
        const constraints = window.constraints = { audio: true, video: false };
        function handleSuccess(stream: MediaStream) {
            const audioTracks = stream.getAudioTracks();
            console.log('Got stream with constraints:', constraints);
            console.log(`Using audio device: ${audioTracks[0].label}`);
            stream.oninactive = function() {
                console.log('Stream ended');
            };
            window.stream = stream; // make variable available to browser console
            var bjsSound = new Sound("mic", stream, scene);
            bjsSound.attachToMesh(sphere);
            bjsSound.play();
        }
        function handleError(error: any) {
            console.log('navigator.getUserMedia error: ', error);
        }
        navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);
        return scene;
    }

示例源码(修改后):

loadingASoundFromTheMicrophone = (scene: Scene, canvas: HTMLCanvasElement) => {
        let engine = scene.getEngine();
        let freeCamera = new FreeCamera("freeCamera", new Vector3(0, 5, -10), scene);
        freeCamera.setTarget(Vector3.Zero());
        freeCamera.attachControl(canvas, true);
        let hemisphericLight = new HemisphericLight("hemisphericLight", new Vector3(0, 1, 0), scene);
        hemisphericLight.intensity = 0.7;
        let sphere = MeshBuilder.CreateSphere("sphere", {segments: 16, diameter: 2}, scene);
        const constraints = {  audio: true, video: false };
        function handleSuccess(stream: MediaStream) {
            const audioTracks = stream.getAudioTracks();
            console.log('Got stream with constraints:', constraints);
            console.log(`Using audio device: ${audioTracks[0].label}`);
            stream.addEventListener('inactive', () => {
                console.log('Stream ended ... ...');
            });
            (window as any).stream = stream; // make variable available to browser console
            var bjsSound = new Sound("mic", stream, scene);
            bjsSound.attachToMesh(sphere);
            bjsSound.play();
        }
        function handleError(error: any) {
            console.log('navigator.getUserMedia error: ', error);
        }
        navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);
        return scene;
    }

以上就是Babylon使用麦克风并处理常见问题解决的详细内容,更多关于Babylon麦克风常见问题的资料请关注编程网其它相关文章!

--结束END--

本文标题: Babylon使用麦克风并处理常见问题解决

本文链接: https://lsjlt.com/news/202979.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Babylon使用麦克风并处理常见问题解决
    目录引言问题1:Property 'constraints' does not exist on type 'Window & typeof glob...
    99+
    2023-05-14
    Babylon麦克风常见问题 Babylon问题处理
  • Babylon使用麦克风并处理常见问题的方法是什么
    本文小编为大家详细介绍“Babylon使用麦克风并处理常见问题的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Babylon使用麦克风并处理常见问题的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-05
  • 如何解决虚拟机无法使用麦克风的问题
    要解决虚拟机无法使用麦克风的问题,可以尝试以下几种方法: 确保虚拟机软件已正确配置:在虚拟机软件中的设置中,确保已正确配置麦克风的输入设备,并启用了麦克风的权限。 确保操作系统的麦克风设置:在宿主机的操作系统中,确保麦克风已正确连接...
    99+
    2024-06-10
    virtualbox
  • 电脑麦克风没有声音怎么办?如何彻底解决Windows7麦克风没有声音问题
    电脑麦克风没有声音相信不少用户都遇到过,不过这样的问题大多都是系统设置不当造成的;用户只需简单设置即可解决问题。本文就以Windows 7系统为例进行详细介绍麦克风设置。 首先,在桌面任务栏右下角处右击“声音...
    99+
    2023-06-05
    Windows7 麦克风 彻底解决 声音 问题 电脑
  • 笔记本电脑中怎么解决麦克风有杂音问题
    这篇文章主要介绍笔记本电脑中怎么解决麦克风有杂音问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!右键声音图标,选择录音设备。如图所示:随后出现声音的控制面板,右键 麦克风 选择属性。如图所示:然后切换到高级选项卡,...
    99+
    2023-06-28
  • C++中常见的异常处理问题解决方法
    C++中常见的异常处理问题解决方法,需要具体代码示例引言:在编写C++程序时,时常会遇到程序出现异常的情况,如除数为0、数组越界、空指针访问等等。这些异常会导致程序的崩溃或者产生不可预测的结果,为了增强程序的稳定性和可靠性,我们需要使用异常...
    99+
    2023-10-22
    解决方法 异常处理 C++异常
  • Elasticsearch使用常见问题怎么解决
    这篇文章主要介绍“Elasticsearch使用常见问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Elasticsearch使用常见问题怎么解决”文章能帮助大家解决问题。一、和redis...
    99+
    2023-06-05
  • 风讯CMS使用时遇到的常见问题
    关键字描述:常见问题 遇到 使用 &rdquo &ldquo 权限 提示 是否 文件 系统在使用的时候可能出现各种情况,根据详细的提示信息,分别找到解决的办法,目前遇到的可能不全面,只是把常见的列出来,以供大家参考。 ...
    99+
    2022-06-12
    常见问题 遇到 使用 &rdquo 提示 权限 是否 文件
  • JavaScript数据处理的常见问题如何解决
    本篇内容主要讲解“JavaScript数据处理的常见问题如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript数据处理的常见问题如何解决”吧...
    99+
    2024-04-02
  • Python中异常处理的常见问题及解决方法
    Python中异常处理的常见问题及解决方法引言:在编写程序时,很难避免出现各种各样的错误和异常。异常处理是一种机制,可以在程序运行时捕获和处理这些异常,从而保证程序的稳定性和可靠性。在Python中,异常处理是一项非常重要的技能,本文将介绍...
    99+
    2023-10-22
    异常处理 (Exception Handling) 解决方法 (Solutions) 常见问题 (Common Prob
  • php使用composer常见问题怎么解决
    这篇文章主要介绍php使用composer常见问题怎么解决,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4、面向...
    99+
    2023-06-14
  • win10 gpu使用常见问题怎么解决
    这篇文章主要介绍了win10 gpu使用常见问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win10 gpu使用常见问题怎么解决文章都会有所收获,下面我们一起来看看吧。win10gpu常见问题解决方...
    99+
    2023-07-01
  • windows todesk使用常见问题怎么解决
    今天小编给大家分享一下windows todesk使用常见问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。tode...
    99+
    2023-07-01
  • php使用composer常见问题及解决办法
    目录错误问题一错误问题二错误问题三错误问题四错误问题五中文镜像使用办法使用办法composer是PHP中非常优秀的一个包管理工具,可以帮助我们来管理项目所需要依赖的所有包以及插件,也...
    99+
    2024-04-02
  • @ConfigurationProperties使用时常见问题及解决方法
    这篇文章主要介绍“@ConfigurationProperties使用时常见问题及解决方法”,在日常操作中,相信很多人在@ConfigurationProperties使用时常见问题及解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好...
    99+
    2023-06-20
  • PHP 异常处理常见问题解答:解决你心中的疑惑!
    问:什么是 PHP 异常? 答:PHP 异常是发生错误时抛出的对象。它提供有关错误的详细信息,例如错误类型、错误消息和错误发生的位置。 问:如何抛出 PHP 异常? 答:可以使用 throw 语句抛出 PHP 异常。例如: ...
    99+
    2024-02-24
    PHP 异常处理 错误处理 try...catch throw
  • java.Net.UnknownHostException异常处理问题解决
    同事新分的测试机resin启动的时候出现了Java.NET.UnknownHostException异常,问题原因是在系统的 /etc/Hostname中配置了主机名,而在...
    99+
    2023-05-14
    java.Net.UnknownHostException异常处理 java.Net.UnknownHostException
  • ASP 中常见的并发问题及解决方案
    ASP 中常见的并发问题及解决方案 在 ASP 应用程序中,当多个用户同时访问同一个资源时,会出现并发问题。这些问题会导致应用程序崩溃、数据损坏或数据不一致等严重后果。因此,ASP 开发人员需要了解并发问题的原因和解决方案。 一、并发问题的...
    99+
    2023-11-12
    并发 数据类型 编程算法
  • MySQL中事务处理的常见问题和解决方案
    MySQL中事务处理的常见问题和解决方案在数据库操作中,事务处理是非常重要的,它可以确保数据库操作的一致性和完整性。然而,在MySQL中进行事务处理时,常常会遇到一些问题。本文将介绍常见的MySQL事务处理问题,并提供相应的解决方案。问题一...
    99+
    2023-10-22
    解决方案 问题 事务处理
  • Django 中的 Go 日志处理:如何解决常见问题?
    在开发 Web 应用程序时,日志记录是至关重要的。它可以帮助开发人员快速定位并解决问题。Django 是一种流行的 Web 框架,它提供了灵活的日志记录功能。然而,当应用程序规模变大时,日志记录可能会变得更加复杂。在本文中,我们将探讨如何...
    99+
    2023-11-12
    日志 load django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作