Есть ли «асинхронный» режим для тега видео HTML5? - PullRequest
0 голосов
/ 25 сентября 2018

Я хочу передать потоковое видео из собственного приложения 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).

Таким образом, мой вопрос: существует ли «асинхронный режим» в видеопроигрывателе html5, чтобы он всегда воспроизводил последний кадр и игнорировал содержимое истории, или я должен заняться чем-то другим для создания этого небольшого сервиса потоковой передачи в реальном времени

1 Ответ

0 голосов
/ 26 сентября 2018

У вас больше контроля над буферизацией с помощью Media Source Extensions.

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

В этом режиме вы можете транслировать в реальном времени и полностью удалить весь старый контент.

Мне кажется, что вам действительно нужен больший буфер ... или, что более вероятно, больше процессора.

...