我想将一些视频从本机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
视频播放器中是否存在“异步模式”,以便它始终播放最新的帧并忽略历史记录内容,或者我应该研究其他方法来构建此帧小型直播服务?
答案 0 :(得分:0)
您可以通过Media Source Extensions更好地控制缓冲。
https://developer.mozilla.org/en-US/docs/Web/API/Media_Source_Extensions_API
在此模式下,您可以流式传输直播内容并完全丢弃所有旧内容。
在我看来,您实际上确实需要更大的缓冲区...或更可能是更多的CPU。