2

マルチパーティまたは P2P 会議のセットアップの一環として Chrome で Web カメラ アクセスを許可すると、streamCreated 通知が届かないことが予想されます。カメラがオンになり、ページの「Google Chrome レンダラー」が 100% の CPU 使用率になります。ストリームの実行を一時停止すると、実行が TB.min.js の奥深くにあることがわかります。私のコードの関連部分は次のようになります。

void meetingInProgress(info) {
   var session = TB.initSession(info.sessionId);
   session.connect(info.apiKey, info.token);

   session.addEventListener("sessionConnected", function(e) {
      console.log("Connected to session");

      subscribeToStreams(session, e.streams);
      session.publish("selfview", { name: name });
   });

   session.addEventListener("streamCreated", function(e) {
      console.log("New stream");
      subscribeToStreams(session, e.streams);
   });
}

var subscribeToStreams = function(session, streams) {
   var selfId = session.connection.connectionId;

   console.log('Subscribing to streams, self id:', selfId);
   console.log('No. of streams:', _.size(streams));

   _.forEach(streams, function(s) {
      console.log('Stream id: ', s.connection.connectionId);
      if (s.connection.connectionId == selfId) {
         console.log('Toggling');
         $("#selfview").toggle();
      }
      else
         session.subscribe(s, addViewport(), { width: 640, height: 480 });

   });

   console.log('Done subscribing to streams...');
}

パブリッシャーの div 要素が非表示の場合、streamCreated イベントの受信に問題があるように思えます。ユーザーが実際にカメラの使用を承認したときにのみ、パブリッシャーの div パネルを表示することを望んでいました。この div 表示の切り替えを無効にすると、うまく機能するように見えます。

4

1 に答える 1