【问题标题】:Check if HTML 5 video element is getting frame检查 HTML 5 视频元素是否正在获取框架
【发布时间】:2018-08-02 16:38:46
【问题描述】:

我正在使用在 html 5 视频元素中流式传输视频的 webrtc 服务器。 在 webrtc 服务器中,我使用 NVFBCHWEncoder 来抓取帧。 在浏览器中,客户端和服务器之间会创建一个 webrtc peerconnection,并且视频会在 html 5 video 元素中自动播放。 一段时间后,流进入无响应状态。 我手动向服务器发送信号以重新初始化 NVFBCHWEncoder 实例。在此之后,流继续。

现在我需要检测视频元素是否正在获取帧,以便向服务器发送信号。

有没有类似的东西

<video id="remote-video" width="1024" height="768" autoplay="" src="blob:[baseUrl]/29ee165c-8900-4053-a12f-20c892fcf76b" >
</video>
<script>
    $("#remote-video").on("frame", function(){
        //my stuff
    });
</script>

我搜索了 HTML 5 视频元素的所有属性,但找不到任何有用的信息。

我正在 Firefox 上测试所有这些。

此外,我们将不胜感激任何有关 NVFBCHWEncoder 的建议。

【问题讨论】:

  • 为什么会被标记为 C++?
  • 因为服务器端是c++,可能有一些关于webrtc或NVFBCHWEncoder的建议。

标签: jquery html c++ webrtc nvidia


【解决方案1】:

视频元素上有一个前缀(阅读:非规范,可能会消失)属性 mozPaintedFrames。同样,Chrome 也有 webkitDecodedFrameCount。

除此之外,如果调用了视频调整大小事件,您可以推断出关键帧至少被接收和解码一次,但这对于检测冻结可能不太有用。

【讨论】:

  • 感谢您的回答。它帮助了我。但当且仅当我在所有浏览器(如 opera、safari 和 edge)上找到这些属性时,它才会对我有用。您能提供更多帮助吗?
【解决方案2】:

没有这样的回调。

无论如何,您都可以使用 WebRTC 统计报告来实现您想要的。 您可以监控收到的比特数或数据包数。如果它为 0,则说明连接有问题,因此您现在可以向后端发出信号。

你可以从官方webrtc demoshttps://webrtc.github.io/samples/获得一些关于如何使用stats api的例子和代码

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2012-06-01
    • 1970-01-01
    • 2012-01-25
    • 2015-07-05
    • 2011-10-26
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多