HTML5视频标签是否有“异步”模式?

时间:2018-09-25 01:10:10

标签: html5 video video-streaming gstreamer

我想将一些视频从本机C ++应用程序流式传输到浏览器。目前,我正在使用GStreamer将我的内容(例如从相机捕获的内容)转换为theroa ogg流并传输到tcp服务器:

gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoscale ! video/x-raw,width=320,height=240 ! theoraenc ! oggmux ! tcpserversink host=127.0.0.1 port=8080

然后我写了一个html5的小页面:

<!DOCTYPE html>
<html>
  <body>

    <video width="320" height="240" autoplay>
      <source src="http://localhost:8080" type="video/ogg">
      Your browser does not support the video tag.
    </video>

  </body>
</html>

但是问题在于此html5视频播放器不是实时视频播放器。它总是尝试缓冲少量的流和播放,从而导致周期性的暂停。缓冲的视频将保留在那里,并且视频的总长度增加,我们可以回溯播放过时的内容(我们可以通过启用controls标签中的video属性来看到此内容)。 / p>

因此,我的问题是:html5视频播放器中是否存在“异步模式”,以便它始终播放最新的帧并忽略历史记录内容,或者我应该研究其他方法来构建此帧小型直播服务?

1 个答案:

答案 0 :(得分:0)

您可以通过Media Source Extensions更好地控制缓冲。

https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API

在此模式下,您可以流式传输直播内容并完全丢弃所有旧内容。

在我看来,您实际上确实需要更大的缓冲区...或更可能是更多的CPU。