MediaRecorder.stop() 不清除选项卡中的录制图标
MediaRecorder.stop() doesn't clear the recording icon in the tab
我启动和停止 MediaRecorder 流。红色 "recording" 图标在开始时出现在 Chrome 选项卡中,但在停止时不会消失。
图标看起来像这样:
我的代码如下所示:
const mediaRecorder = new MediaRecorder(stream);
...
// Recording icon in the tab becomes visible.
mediaRecorder.start();
...
// Recording icon is still visible.
mediaRecorder.stop();
我还定义了一个 mediaRecorder.onstop
处理程序。它不会 return 任何东西或干扰事件对象。
启动和停止 MediaRecorder 实例后清除选项卡 "recording" 指示符的正确方法是什么?
这是因为这个录制图标是getUserMedia
流媒体之一,而不是MediaRecorder
。
当您 stop
MediaRecorder 时,流仍然处于活动状态。
要停止此 gUM 流(或任何其他 MediaStream),您需要调用 MediaStreamTrack.stop()
。
stream.getTracks() // get all tracks from the MediaStream
.forEach( track => track.stop() ); // stop each of them
Fiddle 因为即使使用 https,stacksnippets 也不允许 gUM...
还有一个 other fiddle,其中通过 MediaRecorder.stream
访问流。
我启动和停止 MediaRecorder 流。红色 "recording" 图标在开始时出现在 Chrome 选项卡中,但在停止时不会消失。
图标看起来像这样:
我的代码如下所示:
const mediaRecorder = new MediaRecorder(stream);
...
// Recording icon in the tab becomes visible.
mediaRecorder.start();
...
// Recording icon is still visible.
mediaRecorder.stop();
我还定义了一个 mediaRecorder.onstop
处理程序。它不会 return 任何东西或干扰事件对象。
启动和停止 MediaRecorder 实例后清除选项卡 "recording" 指示符的正确方法是什么?
这是因为这个录制图标是getUserMedia
流媒体之一,而不是MediaRecorder
。
当您 stop
MediaRecorder 时,流仍然处于活动状态。
要停止此 gUM 流(或任何其他 MediaStream),您需要调用 MediaStreamTrack.stop()
。
stream.getTracks() // get all tracks from the MediaStream
.forEach( track => track.stop() ); // stop each of them
Fiddle 因为即使使用 https,stacksnippets 也不允许 gUM...
还有一个 other fiddle,其中通过 MediaRecorder.stream
访问流。