amazon-chime-sdk-js отображает собственное видео

Создал видеоприложение с использованием chime js SDK с помощью документации https://aws.github.io/amazon-chime-sdk-js/index.html

            const indexMap = {};

            const acquireVideoElement = tileId => {
              for (let i = 0; i < 16; i += 1) {
                if (indexMap[i] === tileId) {
                  return videoElements[i];
                }
              }
              for (let i = 0; i < 16; i += 1) {
                if (!indexMap.hasOwnProperty(i)) {
                  indexMap[i] = tileId;
                  return videoElements[i];
                }
              }
              throw new Error('no video element is available');
            };

            const releaseVideoElement = tileId => {
              for (let i = 0; i < 16; i += 1) {
                if (indexMap[i] === tileId) {
                  delete indexMap[i];
                  return;
                }
              }
            };
            const observer = {
              videoTileDidUpdate: tileState => {
                if (!tileState.boundAttendeeId || tileState.localTile || tileState.isContent) {
                  return;
                }

                meetingSession.audioVideo.bindVideoElement(tileState.tileId, acquireVideoElement(tileState.tileId));
              },
                videoTileWasRemoved: tileId => {
                    releaseVideoElement(tileId);
                  }
            };

            meetingSession.audioVideo.addObserver(observer);
            const audioMix = document.getElementById('meeting-audio');
            meetingSession.audioVideo.bindAudioElement(audioMix);
            meetingSession.audioVideo.start();
            meetingSession.audioVideo.startLocalVideoTile();

Это работает хорошо, и я вижу всех участников, которые присоединились к собранию. Но мне нужно показать свое видео еще и в теге. Является ли это возможным?

2 ответа

В твоем videoTileDidUpdate, чтобы показать вашу видеоплитку, где вы привязываете локальную плитку, я вижу, что если tileState.localTile является true ты возвращаешься и bindVideoElementне вызывается, следовательно, ваш localTile не отображается. Не могли бы вы удалить проверку localTile и посмотреть, работает ли она в качестве начального шага.

          videoTileDidUpdate: tileState => {
        // Ignore a tile without attendee ID, a local tile (your video), and a content share.
        const { allUsers } = this.props;
        if (!tileState.boundAttendeeId || tileState.isContent) {
            return;
        }
        if( tileState.localTile ) {
            if( Obj[tileState.boundExternalUserId]['tileId'] === tileState.tileId) {
                return;
            }
        }
        this.meetingSession.current.audioVideo.bindVideoElement( tileState.tileId,document.getElementById(tileState.boundExternalUserId) );
    }
Другие вопросы по тегам