2

我正在使用Angular 7with Angora.Io,我的问题是当我在本地运行我的 Angular 项目时,我成功访问了我的相机和麦克风,但是当我尝试像“192.105.2.448”一样在全球范围内运行时,我无法访问我的相机和麦克风并抛出这样的错误。请帮我!

join(): void {

    this.client.setClientRole('host');
    this.localStream = this.agoraService.createStream({ streamID: this.uid, audio: true, video: true, screen: false });
    this.localStream.setVideoProfile('720p_3');
    this.assignLocalStreamHandlers();
    this.init();
    this.client.join(null , this.channel.value, this.uid);
}

publish(): void {

    this.liveplay = true;
    this.client.publish(this.localStream, err =>   console.log('Publish local stream error: ' + err));  }

protected init(): void {

    this.localStream.init(
        () => {
            // The user has granted access to the camera and mic.
            console.log('getUserMedia successfully' , this.localStream);
            this.localStream.play('agora_local');
            this.connected = true;
        },
        err => console.log('getUserMedia failed', err)
    );
}


private assignLocalStreamHandlers(): void {

    console.log('==========>>>>>>>2 ');
    this.localStream.on(StreamEvent.MediaAccessAllowed, () => {
        console.log('accessAllowed --->>> ', this.localStream);
    });
    // The user has denied access to the camera and mic.
        this.localStream.on(StreamEvent.MediaAccessDenied, () => {
        console.log('accessDenied');
    });
}

11:35:01:76 Agora-SDK [错误]:[3] 媒体访问 NOT_SUPPORTED:只允许安全来源

[弃用] getUserMedia() 不再适用于不安全的来源。要使用此功能,您应该考虑将应用程序切换到安全源,例如 HTTPS。

4

2 回答 2

2

您遇到的不是 Agora SDK 独有的问题,而是任何 Web 浏览器的预期行为。为了访问CameraMicrophone获得权限,所有浏览器都要求您使用安全连接(阅读:)HTTPS,并且会阻止对未通过安全连接访问的任何网站的访问。

浏览器确实有一项特殊功能,它已列入白名单localhost,因此任何在本地运行的项目都localhost将被允许访问设备权限。这就是为什么您的项目在“本地”而不是“全局”工作的原因。

为了能够“全局”测试您的项目,您将需要使用带有 ssl 证书的域,以便您https在 url 中看到。虽然可以HTTPS与 IP 地址一起使用,但不常见也不推荐使用(是否可以为 IP 地址而不是域名提供 SSL 证书?

用于测试的一个选项(我喜欢使用)是 NGROK(https://ngrok.com),它们提供了一种隧道服务,可以从您的机器创建一个“隧道输出”,并提供一个httpsurl,使您能够测试项目在本地机器上运行。

免责声明:我绝不隶属于 NGROK,这是一个我觉得很有帮助并选择在测试我的代码时使用的工具,它可以解决浏览器施加的限制,而无需将我的工作部署到远程服务器。

于 2019-10-25T11:49:17.460 回答
-1

我不喜欢 Angular,但由于 agora 提供了一些关于自定义音频/视频源的 api。您可以查看https://docs.agora.io/en/Interactive%20Broadcast/custom_video_web?platform=Web

于 2019-10-23T09:35:58.720 回答