LINUX.ORG.RU

Посоветуйте стримилку

 , , , ,


0

3

Свободных WebRTC стримилок нет, насколько я понимаю.
С mjpg_streamer у меня как-то не получилось.
Что посоветуете для стриминга? Желательно, чтобы можно было смотреть браузером на устройствах не от Apple (HLS не подходит).

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Ответ на: комментарий от Krieger_Od

оборудование

AR9331 с OpenWrt. UVC-совместимые камеры.

форматы

Что угодно, распознаваемое современным Firefox.

потребители

Не более одного клиента за раз.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Krieger_Od

Не особо важно, но хотелось бы хотя бы 5fps. Мне mjpg_streamer выдавал 25fps.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Варианты

- поискать какой-нибудь модуль веб-сервера, чтоб отрабатывал HTTP POST на ввод и GET на вывод;

- запустить VLC в виде демона (см. --sout);

- можно пхп-скриптом вывод ffmpeg-а, кодирующего сырые кадры в MJPEG, резать по маркеру начала кадра, и вставлять multipart/x-mixed-replace маркер. Могу поделиться кодом. А может, и без Content-Type: multipart/x-mixed-replace можно, не знаю точно за целевой вьювер.

Krieger_Od ★★
()
Ответ на: комментарий от Krieger_Od

поискать какой-нибудь модуль веб-сервера, чтоб отрабатывал HTTP POST на ввод и GET на вывод

Это я вообще не распарсил.

запустить VLC в виде демона

На роутере? Какой-то стрёмный вариант.

не знаю точно за целевой вьювер

Браузер же.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Это я вообще не распарсил.

ffmpeg -f v4l2 -i /dev/video0 -vcodec mjpeg http://server  # будет "пушать" поток через HTTP POST

На роутере? Какой-то стрёмный вариант.

Я б попробовал. Там же не нужно гуй запускать.

Браузер же.

Ну вот я его код не изучал, не знаю, только ли при Content-Type: multipart/x-mixed-replace работает проигрывание MJPEG потока.

Krieger_Od ★★
()
Ответ на: комментарий от Krieger_Od

резать по маркеру начала кадра, и вставлять multipart/x-mixed-replace маркер

В этом случае придется перезагружать iframe с видео, иначе браузер выжрет всю оперативу, т.к. не умеет удалять старые кадры.

Я к этой проблеме так подошел: написал стример на ffmpeg, который тупо жрет видео, буферизует текущий кадр и слушает сокет. Если клиент подключается, то на запрос (клиент сообщает, в каком формате хочет картинку) отдается raw/jpeg или png изображение. А дальше возможны 2 варианта: либо тупо динамически менять картинки (как ни странно, такой способ течки у браузера не вызывает), либо передавать видео вебсокетами (это еще более геморный вариант и из-за кодирования/декодирования base64 фреймрейт падает где-то до 5-7 кадров в секунду на 640x480).

Ну и я упоминал, что до сих пор не справился с проблемой внезапных падений ffmpeg'а (это можно лечить, форкая демон: один поток будет обслуживать клиентов, а второй — контролировать «здоровье» первого и перезапускать при необходимости).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

В этом случае придется перезагружать iframe с видео, иначе браузер выжрет всю оперативу, т.к. не умеет удалять старые кадры.

Это ты говоришь про какой-то конкретный баг, вполне решаемый, не стоит здесь обобщать даже на все браузеры.

Ну и я упоминал, что до сих пор не справился с проблемой внезапных падений ffmpeg'а

Здесь ты тоже говоришь про какие-то конкретные свои проблемы.

Krieger_Od ★★
()
Ответ на: комментарий от Krieger_Od

не стоит здесь обобщать даже на все браузеры

Абсолютно все браузеры текли.

Здесь ты тоже говоришь про какие-то конкретные свои проблемы

Да, вот здесь конкретно про какой-то мой косяк.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от CYB3R

Я когда-то пытался подобное сделать, но оно то тормозило, то рассинхронизовывалось. В общем, если с часик посмотришь, то будет черт-те что.

Но возможно, таких багов уже и нет. Все равно, мне это не сильно-то нужно, т.к. каждый захваченный кадр мне еще кое-как обрабатывать надо будет, а с ffserver только выдача получится.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.