Поток потокового видео в реальном времени в HTML-видео тег - PullRequest
0 голосов
/ 26 сентября 2018

Я хочу транслировать поток видео в реальном времени, поступающий из udp, в тег HTML video.Я провел некоторое исследование, но получил много информации и изо всех сил пытаюсь получить четкое представление о том, что я могу сделать, а что нет.

Поток видео использует кодеки H.264 и AAC, контейнер MP4и имеет разрешение 3840x2160 (4K).Я хотел бы воспроизвести его на Chrome (последняя версия).

Как я понимаю, тег HTML video может изначально читать видео H.264 / AAC.Я заставил его работать с видео-директивой на моем сервере (я использую Meteor JS + React).

Я научился использовать FFmpeg для потоковой передачи потока udp, читаемого проигрывателем VLC, а затем я использовал FFserver (язнаю, что это устарело) для создания потока HTTP, также читаемого VLC, но не тегом HTML video.

Итак ... мой вопрос: может ли HTML video изначально считывать видеопоток из HTTP?

Я видел много дискуссий о HLS и DASH, но я не понимал, являются ли (и почему) они обязательными.

Я читал пост о ком-то, кто создает HLSm3u8 с использованием только FFmpeg, это жизнеспособное решение?

Конфигурация FFserver

HTTPPort                        8090
HTTPBindAddress                 0.0.0.0
MaxHTTPConnections              20
MaxClients                      10
MaxBandwidth                    100000

<Feed feed.ffm>
  File                          /tmp/feed.ffm
  FileMaxSize                   1g
  ACL allow                     127.0.0.1
</Feed>

<Stream stream.mpeg>
  Feed                          feed.ffm
  Format                        mpeg
  AudioCodec                    aac
  AudioBitRate                  256
  AudioChannels                 1
  VideoCodec                    libx264
  VideoBitRate                  10000      // Total random here
  VideoBitRateRange             5000-15000 // And here...
  VideoFrameRate                30
  VideoQMin                     1
  VideoQMax                     50
  VideoSize                     3840x2160
  VideoBufferSize               20000      // Not sure either
  AVOptionVideo                 flags +global_header
</Stream>

Мне пришлось указать QMin и QMax, чтобы избежать сообщения об ошибке, но я не понимаюНе очень понимаю, что это такое.

Командная строка FFmpeg

ffmpeg -re -i bbb_sunflower_2160p_30fps_normal.mp4 -strict -2 -r 30 -vcodec libx264 http://localhost:8090/feed.ffm

Эта работа с VLC.Я работаю с файлом на моем компьютере, прежде чем перейти к потоку udp.

1 Ответ

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

Поддержка мультимедиа в браузерах - это постоянно меняющийся ландшафт, поэтому стоит искать места для просмотра последних версий.

Таблица по этой ссылке, как правило, соответствует моему опыту:

Вы заметите, что таблица содержит кодек и контейнер - egh264 в mp4.Это важно понимать, поскольку кодек может поддерживаться вашим браузером, но не в требуемом контейнере.

Для поддерживаемых контейнеров и кодеков тег HTML5 будет поддерживать потоки HTTP или, что более точно, загрузки HTTP.Большинство серверов и браузеров поддерживают загрузку видеофайла порциями, чтобы вы могли начать просмотр до полной загрузки видео.

Для повышения производительности на разных типах устройств и в разных условиях сети видео часто доставляется через регулируемыйПротокол битрейта (ABR), такой как HLS или DASH.ABR также позволяет клиентскому устройству или проигрывателю загружать видео порциями, например, 10-секундными порциями, но сервер предоставляет каждую порцию в нескольких разных версиях битрейта.Плеер может выбрать следующий блок из битрейта, наиболее соответствующего текущим условиям сети.См. Также дополнительную информацию в этом ответе:

...