LINUX.ORG.RU

отобразить raw h264 в браузере

 ,


1

5

Bonjour!

Купил я raspberry pi и родную камеру к ней. Работает всё отлично. Да ещё оно умеет выдавать сырой h264! Ну что может быть лучше?

Осталось только в браузер это всё завернуть. Причём, мой chromium умеет h264 из коробки. Осталось дело за малым, обернуть поток во что-то что умеет отображать браузер. И тут вселенский облом: я не могу найти ни одного нормального решения без motion jpeg, транскодирования или вещания в проприетарные форматы. Неужели не придумали нормального метода вещать в браузер напрямую? :(

★★★★★

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

Он, походу, не умеет h264.

Меня ещё вот что беспокоит. Пишут что браузеры вообще не умеют в live streaming.

Пока буду пробовать записывать файлы по 5секунд и «вещать» их: http://raspberrypi.stackexchange.com/questions/7446/how-can-i-stream-h264-vid...

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

А тебе протокол критичен? А то можно раскурить nginx-rtmp-module - оно умеет в h264+hls. Воткнёшь в какой-нибудь <video> или в JWPlayer. Я пробовал - роутер ZyXEL Keenetic Giga нормально вещал и архивировал стрим с компа

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

Мда, трёхчасовое гугление показало что стриминг работает только через safari, либо через flash-плееры. Оба варианта мне очень не нравятся. Блин.

JWPlayer держит HLS только в платной версии. Остаётся только rtmp... Есть ещё другие flash-плееры разной степени поганости...

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

В общем, тут или flash с hls, rtp, etc или псевдостриминг. Других вариантов нет потому что браузеры, по сути, держат только mp4-контейнер который не может в стриминг из-за того что для него обязателен индекс.

Поэтому я, наверно, буду локально складывать файлы по 5-10секунд в ts, а дальше по inotifywait запускать MP4Box чтобу сконвёрчивать в mp4. Ну а дальше псевдостриминг.

Вариант с rtp мне не нравится из-за того что уже много раз было что трафик не проходит фаерволы.

true_admin ★★★★★
() автор топика

Ковыряюсь как раз с малиной и вещанием видео. Но камера у меня USB. Пока удалось писать в mp4 используя gstreamer и аппаратный енкодер h264. С вещанием пока не разобрался. А что используете вы?

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

RTSP точно не работает?

Оно с тэгом <video> не работает, требует флеша и не совместимо с HTTP что создаёт проблемы во многих публичных сетях, проксях итп. А так, конечно, будет работать. Скорее всего, так и сделаю, куда деваться.

Есть ещё некий Media Source Extensions, но я это пока не курил.

webm контейнер

У меня с камеры (ну или с GPU) идёт h264, перекодировать силам rpi ей тупо не хватит ресурсов. Технически у меня есть внешний сервер который может транскодировать, но не хочется этого делать.

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

Дык, если есть внешний сервер - стримь на него, а там RTMP -> HTTP+нужный_кодек. И, да, а если Pi'шкой не перекодировать, а перепаковывать? Какой контейнер у нас умеет h264 без индекса отдавать?

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

Просто у меня камера умеет отдавать только в raw, и как следствие необходимо это все привращать в h264. Как это сделать используя GPU кроме как через gstreamer я не нашёл. Или я что-то не понимаю? Просто только начал разбираться. Спасибо.

beermashin
()
Ответ на: комментарий от dhameoelin

если есть внешний сервер - стримь на него, а там RTMP -> HTTP+нужный_кодек.

Крайний вариант, не хочу тачку забивать барахлом в виде 100500 дырявых зависимостей ffmpeg и городить цепочку сервисов которые, к тому же, любят падать.

Я вот наткнулся на это: https://github.com/RReverser/mpegts Эта штука налету конвертирует ts в mp4 и кормит браузеру. Если будет время я это попробую.

Какой контейнер у нас умеет h264 без индекса отдавать?

mpegts

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

Или я что-то не понимаю?

Я думаю, у тебя на выходе с «камеры» уже raw h264, а gstreamer только пакует в mp4. Но я руку на отсечение не дам что всё именно так работает.

Из камеры (у тебя ведь на шлейфе такая без корпуса, да?) кроме как h264 ничего не получить т.к. аппаратный энкодер ничего другого не умеет, а програмно ничего не сделать т.к. проц очень слабый.

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

У меня не родная камера, а usb за 300р, насколько я понял не умеет она отдавать в h264. И я пакую omxh264enc в h264.

beermashin
()
Ответ на: комментарий от true_admin

Крайний вариант, не хочу тачку забивать барахлом в виде 100500 дырявых зависимостей ffmpeg...

Контейнер/виртуалка?

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

Watchdogs, но ты прав, по большей части.

mpegts

Надо в склерозник записать.

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

Мда. Забыл, что в webm нельзя запихать h264 by design. Нелепый расклад. Как это тупо со стороны законодателей стандартов (касается и неподдержки RTSP, и неподдержки h264 в webm).

Krieger_Od ★★
()

Если получится решить задачу, напишите коротенькое how to пожалуйста.

beermashin
()

Причём, мой chromium умеет h264 из коробки

обернуть поток во что-то что умеет отображать браузер

Да, это верно. Я год назад с этим баловался, некий RTMP удалось просунуть в браузер, то ли vlc... Кажется live555 еще пробовал.

I-Love-Microsoft ★★★★★
()
12 июля 2015 г.
Ответ на: комментарий от lolipop

К сожалению, я не помню чем мои изыскания закончились. Вроде, я находил какие-то js-скрипты для запаковки raw 264 в mp4 (типа https://github.com/RReverser/mpegts), но я не помню на сколько хорошо оно работало.

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