在生产服务器上运行 Agora 视频时出错,在本地运行

Posted

技术标签:

【中文标题】在生产服务器上运行 Agora 视频时出错,在本地运行【英文标题】:Error while running Agora video on production server, works locally 【发布时间】:2018-11-14 09:05:22 【问题描述】:

我正在尝试使用 Angular 6 和 Agora Web v2.50 SDK 创建视频聊天。我按照此链接上的教程进行操作, https://medium.com/@Anderson7301/building-a-video-chat-app-with-agora-and-angular-6-858d72b6fa0d 我能够在本地机器上成功实现它,但是当我尝试在服务器上运行它时,我得到“main.c71419ff14e542f66f51.js:1 ERROR TypeError: o.default.debug is not a function”。 你能帮我吗?服务器正在 SSL 上运行。

更新 - 2018 年 11 月 20 日

我发现我需要使用动态密钥才能在服务器上进行视频聊天。所以我使用了 Dynamickey Generation Java 代码并创建了令牌,在尝试加入用户时我得到“Agora-SDK [ERROR]:用户加入失败 [ERR_NO_AUTHORIZED]”。这是我的 Angular 应用程序的日志。

11:24:34:202 Agora-SDK [INFO]:创建客户端,模式:互操作 CODEC:vp8 AgoraRTCSDK.min.js:2

11:24:34:215 Agora-SDK [INFO]:初始化 AgoraRTC 客户端,appId:1d82f0b2b87d445d81dfb2caf4f5e5b9。 AgoraRTCSDK.min.js:2

11:24:34:264 Agora-SDK [INFO]:正在初始化 AgoraRTC 客户端,appId:1d82f0b2b87d445d81dfb2caf4f5e5b9。

active.component.ts:649 AgoraRTC 客户端初始化 AgoraRTCSDK.min.js:2

11:24:34:272 Agora-SDK [DEBUG]: 连接到 choose_server: https://ap-web-1.agora.io/api/v1 AgoraRTCSDK.min.js:2

11:24:34:282 Agora-SDK [DEBUG]: 连接到 choose_server: https://ap-web-2.agoraio.cn/api/v1 AgoraRTCSDK.min.js:2

11:24:34:951 Agora-SDK [DEBUG]:获取网关地址:(3) ["webrtc-159-117-159-4.agora.io:5875", "webrtc-128-1- 33-131.agora.io:5866", "webrtc-159-117-159-3.agora.io:5870"] AgoraRTCSDK.min.js:2

11:24:34:957 Agora-SDK [INFO]:加入频道:1000 AgoraRTCSDK.min.js:2 11:24:34:964 Agora-SDK [DEBUG]: 注册客户端 Channel 1000 Uid 1587154302 AgoraRTCSDK.min.js:2

11:24:34:973 Agora-SDK [DEBUG]:开始连接:webrtc-159-117-159-4.agora.io:5875 AgoraRTCSDK.min.js:2

11:24:35:131 Agora-SDK [DEBUG]:websockect 打开:webrtc-159-117-159-4.agora.io:5875 AgoraRTCSDK.min.js:2

11:24:35:235 Agora-SDK [DEBUG]:连接到网关服务器 AgoraRTCSDK.min.js:2

11:24:39:336 Agora-SDK [错误]:用户加入失败 [ERR_NO_AUTHORIZED]

生成的动态令牌是005AQAoAEY5MDBDNERFRkMxNzdDMkJGRjc5QUY5NDY2QTVEMDYzRTY4QTJCMDEQAB2C8LK4fURdgd+yyvT15bmaofNbWm6O7wAAAAAAA==

我的项目的 AppId 是 1d82f0b2b87d445d81dfb2caf4f5e5b9

提前感谢您的帮助

【问题讨论】:

欢迎来到***!请使用tour 并阅读help pages。有帮助的可能是"how to ask good questions" 和这个question checklist。如果您向minimal, complete, and verifiable example 提供一些输入和所需的输出,这里的用户会更愿意提供帮助。 请给我们一个关于这个问题的更详细的再现,就像它在没有 SSL 的情况下工作一样?它在服务器上的开发环境中工作吗? 【参考方案1】:

我也有同样的问题 TypeError: o.default.debug 在 Angular 生产版本中运行时。看起来 Agora 库不能很好地与 Angular CLI 在生产构建中使用的 JS 缩小器配合使用。 到目前为止,我提出的唯一解决方法是设置

"optimization": false

在 angular.json 中,但这肯定是一个非常糟糕的解决方法。

【讨论】:

【参考方案2】:

您遇到的问题与用户身份验证有关。如果禁用令牌,项目是否工作?

当您向令牌服务器发出请求以生成访问令牌时,您是否传递了 UserId?您在尝试加入频道时使用相同的 UserId 还是使用自动生成?

我问的原因是因为在我最近使用 Agora.io 的令牌服务器进行的测试中,我注意到您可以生成带有或不带有 UserId 的令牌。

如果您在令牌生成中指定UserId,则需要重用该UserId。如果您将UserId 作为请求的一部分传递,然后尝试使用令牌加入频道并将null 作为UserId 在加入中传递,它将失败。

如果您没有在令牌生成中指定UserId(令牌仍应生成),那么您可以在加入频道时使用传递null 作为UserId应该可以。

【讨论】:

【参考方案3】:

生成一个 10 位随机用户 ID 并将其传递给索引代码,并使用相同的用户 ID 生成令牌。你一定会加入频道

【讨论】:

【参考方案4】:

好吧,就我而言,我用 laravel 在 php 中实现了令牌服务器,并从 H Virginia Singh 那里得到了答案

$uid = (int) mt_rand(1000000000,9999999999);

而且完美。这绝对对我有用。

【讨论】:

以上是关于在生产服务器上运行 Agora 视频时出错,在本地运行的主要内容,如果未能解决你的问题,请参考以下文章

FFMPEG::将视频上传到生产时出错

本地静音视频时,Agora 远程视图发生变化

Agora iOS 视频未在网页上显示

Agora - 无法将视频 .ts 文件合并为一个视频文件

用于 android kotlin 的 agora io 1on 1 视频聊天在 firebase 中生成令牌

Agora.io 音频正常但视频不传输