我已经使用无服务器指南创建了一个Twilio视频通话应用程序,现在一切都很好,我想在这实现静音/非静音音频。请帮助这个我是新的node.js。想知道我需要在conference.js中放置代码的位置。
这是指南,我用来安装和视频通话是完美的。
启动一个新项目
twilio serverless:init example --template=video && cd example
- 使用Twilio命令行启动服务器:
twilio serverless:start
- 打开https://localhost:3000/index.html网页测试应用
ℹ️检查开发控制台和终端是否有任何错误,确保您已经设置了环境变量。
部署使用以下命令之一部署函数和资产。注意:您必须在项目文件夹中运行这些命令。更多细节见文档。
使用Twilio命令行:
twilio serverless:deploy
首先,只是让你知道,当对用户在浏览器中与之交互的应用程序进行更改时,你不是在Node.js中这样做,而是在浏览器中运行的JavaScript中。
在Twilio视频应用中,您需要先访问需要静音的LocalAudioTrack
或LocalVideoTrack
,然后呼叫disable()
,才能对与会者的音频或视频静音/取消静音。要取消静音或重新启用轨道,您需要在其上调用enable()
。
但还有更多的事情要做。您需要在conference.html
的页面中添加按钮来执行静音,并且您需要访问JavaScript中的按钮并侦听单击事件,以便触发静音/取消静音。
一旦您添加了按钮并正在收听点击事件,您将需要访问轨道。你可以通过room
对象来做到这一点,一旦房间连接上,你就可以访问这个对象。使用room
对象,您可以访问localParticipant
对象,然后使用它来访问videoTracks
或audioTracks
属性,具体取决于您是想静音视频还是音频。videoTracks
和audioTracks
都是Track SID的Map
s和LocalTrackPublication
s。您可以在发布上调用track
以获取底层轨道,然后在其上调用enable
/disable
。
下面是一个函数的例子,该函数将静音localParticipant
的音轨。它假设您已经在页面上放置了一个静音按钮,并在之前的JavaScript中访问了它。一旦视频连接并且您可以访问room
对象,此代码应该在回调中的conversation.js中运行:
muteButton.addEventListener("click", (event) => {
room.localParticipant.audioTracks.forEach(trackPublication => {
trackPublication.track.disable();
}
});
您可以对videoTracks
重复此操作,并使用相同的模式在轨道上调用enable
以再次取消静音。
看看你是怎么做的。如果你有任何问题,请分享你正在使用的代码,你已经尝试过的东西和哪里出错了。