gpt4 book ai didi

javascript - 视频元素上的 captureMediaStream() mediaStreamTrack 结束事件不会触发?

转载 作者:行者123 更新时间:2023-11-30 06:22:55 26 4
gpt4 key购买 nike

我正在使用 WebRTC API 实现屏幕共享和媒体文件播放,我能够成功地共享屏幕并收听 mediaStreamTrack 结束事件。但是我能够成功地在 WebRTC 上播放媒体文件,但我无法收听 mediaStreamTrack结束事件(未触发)。所以我无法更改为网络摄像头,我不知道文件何时播放结束。

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

以上是我监听事件的方式。我认为没有问题。但是在元素上播放的媒体文件和 video.captureStream() 生成的流其 streamTrack 无法在媒体文件到达文件末尾时触发结束事件。我不知道这是错误还是其他原因,我们将不胜感激任何帮助。

最佳答案

是的,即使您的媒体播放已经结束,您的 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 之一。

关于javascript - 视频元素上的 captureMediaStream() mediaStreamTrack 结束事件不会触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52144997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com