captureMediaStream () на элементе видео событие завершения mediaStreamTrack не запускается? - PullRequest
0 голосов
/ 03 сентября 2018

Я использую API WebRTC для реализации общего доступа к экрану и воспроизведения медиа-файлов, я успешно могу поделиться экраном и прослушать завершенное событие mediaStreamTrack. Но я успешно могу воспроизводить медиа-файл в WebRTC, но не могу прослушать mediaStreamTrack событие завершено (не запущено). Так что я не могу перейти на веб-камеру, я не знаю, когда файл был воспроизведен до конца.

_setScreenEndedListener(track) {
    track.addEventListener('ended', () => {
        this.removeLocalVideo(true);
        logger.warn('#screen sharing stoped !!');
        this.emit('screen-sharing-stop');
    });
}

Выше я слышу событие. Я думаю, что нет никаких проблем. Но медиа-файл, воспроизводимый на элементе, и video.captureStream () генерируют поток, у которого streamTrack не может инициировать событие завершения, когда медиа-файл переходит к концу файла . Не знаю, это ошибка или что-то еще, любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 03 сентября 2018

Да, даже несмотря на то, что воспроизведение мультимедиа закончилось, MediaStream все еще жив, это потому, что вы вполне можете захотеть отображать другие медиафайлы из этого же потока (которые Chrome не поддерживает ...) или просто установить он возвращается к другому currentTime, поэтому он выполняет цикл:

source.onplaying = e => {
  source.onplaying = null;
  target.srcObject = source.captureStream ? source.captureStream() : source.mozCaptureStream ? source.mozCaptureStream() : console.error('unsupported browser');
  target.play();
};
source.onended = e => {
  console.log('Ended. Looping back in time.');
  source.load();
  source.play();
}
source.play();
video{
  max-width: 48vw;
}
<video id="target" muted></video>
<video id="source" crossorigin controls
  src="https://upload.wikimedia.org/wikipedia/commons/transcoded/a/a4/BBH_gravitational_lensing_of_gw150914.webm/BBH_gravitational_lensing_of_gw150914.webm.480p.webm#t=25"></video>

Таким образом, в вашей ситуации событие, которое вы хотите прослушать, это событие MediaElement (например, <video>), а не MediaStream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...