非移动设备不显示来自移动设备的视频内容(Twilio可编程视频)

时间:2019-07-02 22:17:19

标签: javascript php twilio

在我完成的所有研究中,我可能都提到了这一点,但尚未找到任何解决方案。因此,作为Stack Overflow的新手,我想我会详细介绍一下它,看看是否有人可以协助完成此工作。

我已经使用Twilio-Programmable-Video Javascript API(v2 beta 10)和PHP创建了一个应用程序,其目的是从笔记本电脑或台式机系统创建会议室,远程参与者将使用移动设备(例如, iPhone或类似设备)共享音频和视频。

问题是,当其他非移动设备连接到会议室时,视频将按预期从远程参与者显示,但是当从iPhone连接到会议室时,视频不会显示在非移动设备上。仅出现一个黑框。在我的测试中,我正在iPhone上使用Safari,因为Chrome或其他浏览器无法访问相机和麦克风。

如果我使用room.disconnect()从移动设备上的房间断开,然后重新连接到房间,则视频将重新加载并出现在笔记本电脑上。

请注意,在iPhone上的视频按预期显示,我将其设置为使用“环境”相机(后置相机,而不是自拍相机)。但这发生在任何一个。

可以使用Twilio提供的用法示例来复制该问题,并且到目前为止,我还使用v1 Javascript API进行了测试,但也没有运气。我已经尝试了Twilio提供的许多其他参与者和会议室事件,但是还没有看到任何变化。有人可以为我指出正确的方向,以便在首次连接时可以正确显示移动设备视频吗?

作为参考,以下是其documentation overview中的Twilio使用示例:

const Video = require('twilio-video');

Video.connect('$TOKEN', { name: 'room-name' }).then(room => {
  console.log('Connected to Room "%s"', room.name);

  room.participants.forEach(participantConnected);
  room.on('participantConnected', participantConnected);

  room.on('participantDisconnected', participantDisconnected);
  room.once('disconnected', error => room.participants.forEach(participantDisconnected));
});

function participantConnected(participant) {
  console.log('Participant "%s" connected', participant.identity);

  const div = document.createElement('div');
  div.id = participant.sid;
  div.innerText = participant.identity;

  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 participantDisconnected(participant) {
  console.log('Participant "%s" disconnected', participant.identity);
  document.getElementById(participant.sid).remove();
}

function trackSubscribed(div, track) {
  div.appendChild(track.attach());
}

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

0 个答案:

没有答案