MediaRecorder.stop()不会清除选项卡中的录制图标

Ric*_*omi 9 javascript google-chrome web-mediarecorder web-audio-api

我启动并停止MediaRecorder流.红色"录制"图标会在启动时显示在Chrome标签中,但不会在停止时消失.

图标如下所示:

在此输入图像描述

我的代码看起来像这样:

const mediaRecorder = new MediaRecorder(stream);
...
// Recording icon in the tab becomes visible.
mediaRecorder.start();
...
// Recording icon is still visible.
mediaRecorder.stop();
Run Code Online (Sandbox Code Playgroud)

我还mediaRecorder.onstop定义了一个处理程序.它不会返回任何内容或干扰事件对象.

在启动和停止MediaRecorder实例后清除选项卡的"录制"指示符的正确方法是什么?

Kai*_*ido 21

这是因为这个录制图标是getUserMedia流媒体图标,而不是其中一个MediaRecorder.
当您stop使用MediaRecorder时,流仍处于活动状态.

要停止此gUM流(或任何其他MediaStream),您需要调用MediaStreamTrack.stop().

stream.getTracks() // get all tracks from the MediaStream
  .forEach( track => track.stop() ); // stop each of them
Run Code Online (Sandbox Code Playgroud)

小提琴,因为stacksnippets不允许胶甚至以https ...

还有另一个小提琴,可以通过它访问流MediaRecorder.stream.

  • 我试过这段代码,但红色图标仍然可见。任何的想法? (2认同)