首页 > 解决方案 > 使用实时媒体流作为参与者语音而不是 getUserMedia:Twilio Video

问题描述

我想在群组视频通话中添加一个隐藏的参与者,以播放歌曲流作为参与者的语音(无视频),并进行一些控制,例如无论何时我们想要停止或开始,我们都可以。我正在尝试将来自 URL 的媒体流作为曲目传递,同时发出连接请求以加入房间。我正在为此任务使用快速入门示例:

try {
      // Fetch an AccessToken to join the Room.
      const response = await fetch(`/token?identity=${identity}`);

      // Extract the AccessToken from the Response.
      const token = await response.text();

      // Add the specified Room name to ConnectOptions.
      connectOptions.name = roomName;

      const audio = new Audio("http://mediaserv30.live-streams.nl:8086/live");
      const ctx = new (window.AudioContext || window.webkitAudioContext)();
      const stream_dest = ctx.createMediaStreamDestination();
      const source = ctx.createMediaElementSource(audio);
      source.connect(stream_dest);

      const stream = stream_dest.stream;

      console.log("==================", stream.getAudioTracks());
      
      const tracks = stream.getTracks().map(track => track.kind === 'audio' ? new LocalAudioTrack(track) : new LocalVideoTrack(track));

      connectOptions.tracks = tracks;
      
      await joinRoom(token, connectOptions);
}

这是我运行后得到的:

输出

非常感谢任何帮助。几天以来,我一直被这个问题困扰。

标签: javascripttwiliomediastreamtwilio-videovideocall

解决方案


Twilio 开发人员布道者在这里。

你的代码对我来说看起来是正确的。并且屏幕截图中的错误信息与您所写的内容没有任何关系。

屏幕截图中的建议是您可能没有在安全上下文中运行应用程序。为了使用 WebRTC,您需要从任localhost一站点或通过 HTTPS 提供服务的站点执行此操作。您是通过 HTTP 还是使用本地 IP 地址在开发域上进行测试?

如果您正在对此进行测试,localhost那么可能还有另一个问题。请分享来自开发人员工具的任何可能相关的错误日志。


推荐阅读