当前位置: 首页 > 知识库问答 >
问题:

Twilio房间没有断开/网络摄像头LED仍然亮着

太叔鸿博
2023-03-14

我正在将twilio视频实现到我的js应用程序中。我想要的行为是,如果远程参与者从房间断开连接,本地参与者也应该离开房间,网络摄像头应该停用。

然而,正在发生的事情是,参与者离开,网络摄像头LED仍然亮着,它似乎仍然流到twilio直到我关闭浏览器。

我该如何解决这个问题?

   function connectVideo(accessToken){

            const Video = Twilio.Video;

            Video.connect(accessToken, { name: customerToken}).then(room => {
                console.log('Connected to Room "%s"', room.name);
                inCall = 1

                room.participants.forEach(participantConnected);
                room.on('participantConnected', participantConnected);
                room.once('participantDisconnected', participant => {
                    console.log(`Participant "${participant.identity}" has disconnected from the Room!`);
                    room.disconnect();
                   var div = document.getElementById(participant.sid);
                    div.remove()
                    inCall = 0
                });

                room.on('disconnected', room => {
                    // Detach the local media elements
                    room.localParticipant.tracks.forEach(publication => {
                        const attachedElements = publication.track.detach();
                        console.log("unsubscribed from: " + publication.track)
                        attachedElements.forEach(element => element.remove());
                    });
                });
            });

            function participantConnected(participant) {
                console.log('Participant "%s" connected', participant.identity);
                const div = document.createElement('div');
                div.id = participant.sid;
                participant.on('trackSubscribed', track => trackSubscribed(div, track));
                participant.on('trackUnsubscribed', trackUnsubscribed);
                participant.tracks.forEach(publication => {
                    if (publication.isSubscribed) {
                        trackSubscribed(div, publication.track);
                    }
                });
                document.body.appendChild(div);
            }
            function trackSubscribed(div, track) {
                div.appendChild(track.attach());
            }

            function trackUnsubscribed(track) {
                track.detach().forEach(element => element.remove());
            }
        }

共有1个答案

戚阳
2023-03-14

这里是Twilio开发者的福音传道者。

当您的参与者与房间断开连接时,您当前正在分离轨道。附加和分离仅指从DOM中显示和删除视频和音频元素。为了完全停止媒体,从而熄灭摄像机LED,您还需要在每个音轨上调用stop()

               room.localParticipant.tracks.forEach(publication => {
                    publication.track.stop();
                    const attachedElements = publication.track.detach();
                    console.log("unsubscribed from: " + publication.track)
                    attachedElements.forEach(element => element.remove());
                });
 类似资料:
  • 我正在开发一个web应用程序,它可以浏览和拍摄本地照片,我还想通过相机拍摄图像。我使用下面的代码,我可以捕捉设备摄像头。 现在,我想获得图像和onchangeevent,转换为base64,并希望在该页面中显示。 好心帮我伙计们!

  • 问题内容: 我使用以下JavaScript代码打开了网络摄像头: 是否有任何JavaScript代码可停止或关闭网络摄像头?谢谢大家。 问题答案: 编辑 由于最初发布了此答案,因此浏览器API已更改。在传递给回调的流上不再可用。开发人员将必须访问组成流(音频或视频)的轨道,并分别停止每个轨道。 示例(从上面的链接): 浏览器支持可能有所不同。 原始答案 在成功回调中为您提供一个流,您可以调用该流以

  • 问题内容: 如何连续从摄像头捕获图像? 我想尝试对象识别(也许使用Java Media Framework)。 我当时正在考虑创建两个线程 一个线程: 节点1:捕获实时图像 节点2:将图片另存为“ 1.jpg” 节点3:等待5秒 节点4:重复… 其他线程: 节点1:等到捕获图像 节点2:使用“ 1.jpg”获取每个像素的颜色 节点3:将数据保存在数组中 节点4:重复… 问题答案: 此JavaCV实

  • 问题内容: 我一直在尝试使用Python创建一个简单的程序,该程序使用OpenCV从我的网络摄像头获取视频供稿并将其显示在屏幕上。 我知道我之所以在这里,是因为创建了窗口,并且网络摄像头上的灯闪烁了,但是它似乎在窗口中什么都没有显示。希望有人可以解释我在做什么错。 在不相关的注释上,我注意到我的网络摄像头有时会在中更改其索引号,有时我需要输入0、1或2,即使我只连接了一个摄像头,也没有拔下插头(我

  • 问题内容: 以前,我已经将可运行的网络摄像头代码放入我的应用程序中,但是现在当我更新到AngularJS v1.5.0时,它无法正常工作。我正在使用与v1.3.0完美配合的网络摄像头指令。 这是我的代码: 但是现在,AngularJS v1.5.0给出了以下错误: 我还尝试对AngularJS ng-Camera使用其他解决方案,但即使是演示页也不适用于我。 注意: 我知道问题在于我们无法从Ang

  • 本文向大家介绍FFmpeg获取网络摄像头数据解码,包括了FFmpeg获取网络摄像头数据解码的使用技巧和注意事项,需要的朋友参考一下 对USB摄像头实时编码,在前面已经探讨过了。这次改变下思路,尝试去截取网络摄像头的H264码流,将其解码播放。 这里的测试代码,是在海康摄像头的基础上进行的。 解码的大致流程和以前的保持一致,只不过增加了部分函数。 FFmpeg打开媒体文件并查看媒体文件的信息,有三个