Live-streaming в HTML5 video (Chrome)
От: Faland США  
Дата: 30.11.17 21:02
Оценка:
Всем привет!

Никак не могу найти простой пример для лайв стриминга в HTML5 video / Chrome, устал читать разные противоречивые статьи по теме...
Нужно что-то типа описанного в этой теме http://rsdn.org/forum/media/4421649
Автор: Akad
Дата: 14.09.11
(ссылка на решение там уже неактуальная).

Задача:
Есть C++ приложение, генерирует raw video frames. Есть Chromium-based JavaScript GUI, в котором надо отображать видео.
Надо:
— подобрать тулзу для стриминга из CPP (FFMPEG?)
— настроить отображение лайв-стрима в HTML5 в Chrome.

Так и не понял, что может стандартный HTML5 video тэг в Chrome (файлики проигрывать — это понятно, но нужен именно лайв-стрим, а-ля веб-камера). HLS, MPEG-DASH и прочие RTSP/RTP из там не работают без специальных плейеров.

Знаний в области видео почти 0, поэтому для начала вообще найти бы любой простой пример лайв-стриминга (например с веб-камеры) на HTML5 video в Chrome. Если без дополнительных плейеров типа video.js не обойтись — хотелось бы нормальный пример... Ну и вообще, буду благодарен за любой совет по теме
html5 video ffmpeg streaming стриминг
Re: Live-streaming в HTML5 video (Chrome)
От: Twirl Швеция  
Дата: 30.11.17 21:11
Оценка: +2
Здравствуйте, Faland, Вы писали:

F>Всем привет!


F>Так и не понял, что может стандартный HTML5 video тэг в Chrome (файлики проигрывать — это понятно, но нужен именно лайв-стрим, а-ля веб-камера). HLS, MPEG-DASH и прочие RTSP/RTP из там не работают без специальных плейеров.


F>Знаний в области видео почти 0, поэтому для начала вообще найти бы любой простой пример лайв-стриминга (например с веб-камеры) на HTML5 video в Chrome. Если без дополнительных плейеров типа video.js не обойтись — хотелось бы нормальный пример... Ну и вообще, буду благодарен за любой совет по теме



Посмотри на HLS или DASH, мы используем для аудио, но большинство людей используют для видео.
Нюансов достаточно много, в зависимости от целевых браузеров, но в принципе работает.
https://github.com/video-dev/hls.js/
Отредактировано 30.11.2017 21:13 Twirl . Предыдущая версия .
Re: Live-streaming в HTML5 video (Chrome)
От: Videoman Россия https://hts.tv/
Дата: 01.12.17 13:14
Оценка: +1
Здравствуйте, Faland, Вы писали:

F>Так и не понял, что может стандартный HTML5 video тэг в Chrome (файлики проигрывать — это понятно, но нужен именно лайв-стрим, а-ля веб-камера). HLS, MPEG-DASH и прочие RTSP/RTP из там не работают без специальных плейеров.


Скорее тебе нужен WebRTC. На сколько мне известно есть готовые C++ библиотеки для поддержки на стороне сервера. Одна из них от google, по-моему.
Re: Live-streaming в HTML5 video (Chrome)
От: DiPaolo Россия  
Дата: 04.12.17 02:44
Оценка: +1
Если использовать HLS.

Необходимо настроить вещание в соответствии с форматами, поддерживаемыми в браузере. Для этого можно использовать тот же FFmpeg. Список браузеров и поддерживаемых форматов можно посмотреть здесь https://www.wowza.com/docs/how-to-play-video-using-the-html5-video-tag.

Выхлоп (аудио, видео и плейлисты) при этом должны класться в папку, которая настроена в веб-сервере. При этом нужно убедиться, что адрес доступен из того места, откуда открывается страница с плейером. Можно, например, просто в браузере попробовать перейти по ссылке вида http://myserver.com/streaming/event123/playlist.m3u8.

В каких-то случаях (в зависимости от того, откуда вещается и где проигрывается) может потребоваться включить CORS (cross origin requests).

Что можно сделать для теста:
В первую очередь, можно попробовать проиграть общедоступный стрим. Список есть тут https://bitmovin.com/mpeg-dash-hls-examples-sample-streams/.
Потом можно запустить свое вещание с помощью консольных FFmpeg-утилит (https://ffmpeg.org/ffmpeg-formats.html#hls-2).

Что касается DASH

Тут нужен отдельный плейер. Рекомендую "референсный" DASH-IF player (https://github.com/Dash-Industry-Forum/dash.js/) — можно легко встроить себе на страницу.

Плюс ко всему, в случае отсутствия проигрывания полезно посмотреть консольные логи в девелоперской консоли в браузере (F12).
Патриот здравого смысла
Отредактировано 04.12.2017 2:48 DiPaolo . Предыдущая версия . Еще …
Отредактировано 04.12.2017 2:46 DiPaolo . Предыдущая версия .
Re[2]: Live-streaming в HTML5 video (Chrome)
От: Faland США  
Дата: 05.12.17 21:33
Оценка:
Здравствуйте, DiPaolo, Вы писали:

DP>Если использовать HLS.

DP>Необходимо настроить вещание в соответствии с форматами, поддерживаемыми в браузере. Для этого можно использовать тот же FFmpeg. Список браузеров и поддерживаемых форматов можно посмотреть здесь https://www.wowza.com/docs/how-to-play-video-using-the-html5-video-tag.

DP>Выхлоп (аудио, видео и плейлисты) при этом должны класться в папку, которая настроена в веб-сервере. При этом нужно убедиться, что адрес доступен из того места, откуда открывается страница с плейером. Можно, например, просто в браузере попробовать перейти по ссылке вида http://myserver.com/streaming/event123/playlist.m3u8.


DP>В каких-то случаях (в зависимости от того, откуда вещается и где проигрывается) может потребоваться включить CORS (cross origin requests).


DP>Что можно сделать для теста:

DP>В первую очередь, можно попробовать проиграть общедоступный стрим. Список есть тут https://bitmovin.com/mpeg-dash-hls-examples-sample-streams/.
DP>Потом можно запустить свое вещание с помощью консольных FFmpeg-утилит (https://ffmpeg.org/ffmpeg-formats.html#hls-2).

DP>Что касается DASH


DP>Тут нужен отдельный плейер. Рекомендую "референсный" DASH-IF player (https://github.com/Dash-Industry-Forum/dash.js/) — можно легко встроить себе на страницу.


DP>Плюс ко всему, в случае отсутствия проигрывания полезно посмотреть консольные логи в девелоперской консоли в браузере (F12).


Пробовал как раз MPEG-DASH + DASH-IF, близко к тому что мне нужно, но для этого приходится веб-сервер поднимать. Хотелось бы чего-то минимально интрузивного, чтоб по дефолту работало просто на локальной машине. Cтриминг через FFMPEG еще ладно, но поднимать еще и веб-сервер на машине клиента... Как-то уж совсем громоздко получается, учитывая что это все по сути второстепенная функциональность для продукта.
Попробую все же WebRTC, тем более что (в перспективе) задержка минимальная должна быть.
Re[3]: Live-streaming в HTML5 video (Chrome)
От: DiPaolo Россия  
Дата: 06.12.17 08:48
Оценка:
F>Пробовал как раз MPEG-DASH + DASH-IF, близко к тому что мне нужно, но для этого приходится веб-сервер поднимать. Хотелось бы чего-то минимально интрузивного, чтоб по дефолту работало просто на локальной машине. Cтриминг через FFMPEG еще ладно, но поднимать еще и веб-сервер на машине клиента... Как-то уж совсем громоздко получается, учитывая что это все по сути второстепенная функциональность для продукта.
F>Попробую все же WebRTC, тем более что (в перспективе) задержка минимальная должна быть.

Ремарка относительно DASH: ничего на машине клиента поднимать не надо — достаточно браузера.

Если решите все-таки DASH попробовать, могу подробнее расписать, что и как нужно делать.
Патриот здравого смысла
Re[4]: Live-streaming в HTML5 video (Chrome)
От: Mihas  
Дата: 06.12.17 09:41
Оценка:
Здравствуйте, DiPaolo, Вы писали:

F>>задержка минимальная должна быть.

DP>Если решите все-таки DASH попробовать, могу подробнее расписать, что и как нужно делать.
Если DASH аналогично HLS разбивает видеотрансляцию на отдельные фрагменты и предоставляет их плееру один за другим, то задержка минимальной не будет. А будет не меньше длины фрагмента.
Re[5]: Live-streaming в HTML5 video (Chrome)
От: DiPaolo Россия  
Дата: 07.12.17 06:43
Оценка:
F>>>задержка минимальная должна быть.
DP>>Если решите все-таки DASH попробовать, могу подробнее расписать, что и как нужно делать.
M>Если DASH аналогично HLS разбивает видеотрансляцию на отдельные фрагменты и предоставляет их плееру один за другим, то задержка минимальной не будет. А будет не меньше длины фрагмента.

Совершенно верно — разбивает на сегменты.
Патриот здравого смысла
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.