【问题标题】:Unable to access mediaStreamTracks of local and remote participants无法访问本地和远程参与者的 mediaStreamTracks
【发布时间】:2020-10-16 21:58:06
【问题描述】:

我无法获取本地和远程参与者的 mediaStreamTracks,即使在 roomState 更改为已连接之后也是如此。但是,我注意到它们在重新连接后变得可用。请告知我如何在连接到会议室后为本地和远程参与者访问mediaStreamTracks

要重现该错误,请尝试在 repo 的 Room 组件中使用以下代码。

// Below function is from room component of this repo
import useRoomState from '../../hooks/useRoomState/useRoomState';
import useVideoContext from '../useVideoContext/useVideoContext';

export default function Room() {
const { room } = useVideoContext();
  const {
    room: { localParticipant },
  } = useVideoContext();
  const [participants, setParticipants] = useState(Array.from(room.participants.values()));
  const roomState = useRoomState();

  useEffect(() => {
    if(roomState === 'connected'){
          localParticipant.tracks.forEach(track => {
          if (track.kind === 'data' ) {
                      return;
            }
          console.log(track.mediaStreamTrack)  // Getting undefined!!
          }

        participants.forEach(participant => {
            participant.tracks.forEach(track => {
                  if (track.kind === 'data') {
                      return;
                   }
                   console.log(track.mediaStreamTrack)  // Getting undefined!!
            }
       }
  }, [roomState]);
}

【问题讨论】:

    标签: twilio twilio-video


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    当您在 Participant 对象上调用 tracks 时,您实际上并没有得到 Track 对象。相反,您会得到一个TrackPublication objects 的数组。 TrackPublication 表示已发布到房间的轨道,但它不是 Track 对象(它引用了您正在寻找的 MediaStreamTrack),对于远程参与者,@987654329在localParticipant 订阅该轨道之前,@ 对象可能还不存在。

    要处理这个问题,您需要检查TrackPublication 是否有可用的轨道,如果有,请使用它,如果没有,请监听“订阅”事件。

    例如,与远程参与者:

    participants.forEach(participant => {
      participant.tracks.forEach(trackPublication => {
        if (track.kind === 'data') {
          return;
        }
        if (trackPublication.track) {
          console.log(trackPublication.track.mediaStreamTrack);
        } else {
          trackPublication.on("subscribed", track => {
            console.log(track.mediaStreamTrack)
          });
        }
      }
    }
    

    如果有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2023-03-27
      • 1970-01-01
      • 2012-08-31
      • 2022-01-07
      • 1970-01-01
      • 2020-09-03
      相关资源
      最近更新 更多