【问题标题】:How to listen for "Stop sharing" click in Chrome DesktopCapture API如何在 Chrome DesktopCapture API 中收听“停止共享”点击
【发布时间】:2014-08-05 14:18:07
【问题描述】:

我目前正在编写一个使用 Chrome's DesktopCapture API 的 chrome 扩展程序。当有人点击“停止分享”时,我正在努力设置回调。

我尝试使用MediaStream的onendedEventHandler,但是点击按钮后MediaStream的ended属性仍然设置为true

我能找到的流之间的唯一区别(单击按钮之前和之后)是 videoTracks.readyState 设置为 ended

编辑: 我还想注意用户是否关闭了他们之前正在流式传输的窗口。

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension webrtc


    【解决方案1】:

    我通过在 videoTrack 的 onended 属性上分配 EventHandler 解决了这个问题:

      // somebody clicked on "Stop sharing"
      stream.getVideoTracks()[0].onended = function () {
        // doWhatYouNeedToDo();
      };
    

    就我的编辑而言(注意关闭窗口):它也会触发事件。

    【讨论】:

    • 嘿,感谢您将这些信息放在这里。我在使用 RTCPeerConnection 上的 desktopCapture 时遇到问题。你介意看看my question?
    • 有没有办法让我在应用程序中拥有自己的停止共享按钮并避免使用这个镀铬条/托盘?如果是,请告诉我如何完全隐藏它?
    • @user2801184 你可以有一个自定义的停止分享按钮。但我认为您无法避免使用镀铬条/托盘。不过,您可以在 webrtc 邮件列表上询问/报告。
    • @wpp 我写了一个自定义按钮并使用了 shareStream.getVideoTracks()[0].stop();我会将其报告给 webrtc 邮件。如果可能的话,你能回答这个问题吗? stackoverflow.com/questions/34235155/…
    • @wpp 我正在使用视频 js。我应该把这些代码放在哪里?
    【解决方案2】:

    现在我们有了oninactive,你可以这样使用

    stream.oninactive = () => {}
    

    【讨论】:

      【解决方案3】:
      stream.onended = () => { // Click on browser UI stop sharing button
        console.info("Recording has ended");
      };
      

      在哪里获取流媒体?使用 adapter.js(跨浏览器制作基于 Promise 的通用 API):

      navigator.mediaDevices.getUserMedia(..).then((stream) => {..});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-12
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        • 2013-10-13
        • 2018-12-04
        • 1970-01-01
        相关资源
        最近更新 更多