有什么方法可以知道firefox浏览器中选择的屏幕共享窗口是否已关闭?

问题描述 投票:0回答:1

在 Firefox 中使用 MediaStream API 捕获屏幕录制时,很难检测选定的屏幕共享窗口何时关闭。 MediaStreamTrack 对象提供了多个事件,例如结束和非活动,但当用户关闭所选窗口时不会触发这些事件。 注意:此问题特定于 Firefox,因为 Chrome、Safari 和 Edge 浏览器在这种情况下可以正常工作。 以下是我现在使用的代码:

screenRecordingStream.value =
    await navigator.mediaDevices.getDisplayMedia(
        displayMediaOptions
    );
screenRecordingStream.value.getTracks().forEach((track) => {
    track.addEventListener('ended', () => {
        debugger;
        if (isRecording.value) {
            completionStatus.value = true;
            stopMediaRecorder();
        }
    });
    track.addEventListener('inactive', () => {
        debugger;
        if (isRecording.value) {
            completionStatus.value = true;
            stopMediaRecorder();
        } else {
            changeMode(1);
        }
    });
    track.addEventListener('inactive', () => {
        console.log('Track inactive');
        // ...
    });
    track.addEventListener('mute', () => {
        console.log('Track muted');
    });
    track.addEventListener('unmute', () => {
        console.log('Track unmuted');
    });
    track.addEventListener('overconstrained', () => {
        console.log('Track overconstrained');
    });
    track.addEventListener('readyStateChange', () => {
        console.log('Track ready state changed');
    });
});

我尝试在其他浏览器中测试它,它按预期工作。当选定的选项卡或窗口关闭时,录制停止。在 Firefox 中,当选定的选项卡或窗口未检测到事件时。

javascript firefox mediastream screen-recording mediastreamsource
1个回答
0
投票

我在 Bugzilla 上报告了这个问题,并发现这是一个错误。该修复将在下一个 Firefox 更新版本 128 中进行。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.