【问题标题】:Media Player not removed using MediaSource and webRTC streaming未使用 MediaSource 和 webRTC 流媒体删除媒体播放器
【发布时间】:2015-01-18 22:14:50
【问题描述】:

我正在尝试使用接收端的 mediasource API 将多个媒体文件(按顺序)从一个 webRTC 设备流式传输到另一个设备。这些文件是在页面上的相同视频源元素上接收和播放的,但每次我流式传输一个新文件(或再次播放相同的文件)时,一个播放器会显示在 Google chrome://media-internals/ 但其他播放器还显示了之前的传输。

我担心的是,当为新流(来自 webRTC)分配新媒体源时,资源已分配但未释放(或者我更可能没有正确执行某些操作)。

关于如何显式释放或远程分配和播放的媒体源有什么想法吗?

【问题讨论】:

    标签: video-streaming webrtc media-source


    【解决方案1】:

    我建议为每个流使用不同的对等连接,此外您应该在媒体流上调用 stop()。作为播放实例之间清理的一部分,您可能还想清除元素中流的链接,如下所示:

    if (moz) {
      document.getElementById('yourvideoelementid').mozSrcObject = undefined;
    } else {
      document.getElementById('yourvideoelementid').src = "";
    }
    

    moz表示浏览器是Mozilla/Firefox。

    【讨论】:

    • 嗨 Mondain,感谢您的意见,有一段时间忙于实际工作,无论如何,在媒体源上调用 stop() 有点不清楚?接收缓冲区?或对等流 - 在对等流的情况下,在我看来,这应该在很大程度上独立于媒体源 api 处理 - 想法?
    • MediaStream.stop() 主要是我想要关注的。
    • 通过 navigator.mozGetUserMedia() 或 navigator.webkitGetUserMedia()
    • 所以,就我而言,我没有使用 GetUserMedia 进行 mediaSource API 处理 - webM 文件通过 RTC 数据连接流式传输,并在远程端接收并缓冲在 MediaSource 缓冲区(例如, recvMediaSource = new MediaSource(); recvMediaSource.addEventListener('sourceopen', function (e) { consoleLog('media source state: ', this.readyState); // 获取要接收的缓冲区,指定数据类型 receiverBuffer = recvMediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"'); }
    • 我不确定媒体流和媒体源如何或是否可以互操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多