Pull to refresh

Comments 19

Да как-то само собой получилось на HLS, заинтересовал он меня, ну и пошло-поехало :) Возможно сделаю WebRTC в следующей версии

Самый простой способ это ip камера, комп, obs и ютуб))

Посмотрите еще мою статью по теме
habr.com/ru/post/532424

(была мысль встроить Let’s Encrypt в программу, но не было времени – может это сделает кто-нибудь из вас).

Вот в этом вся проблема)) Сертификат заставляет пересматривать всю простоту по другому. То есть надо велосипедить))

А что сложного в получении сертификата?

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

Можно привязать сертбот к любому поддерживаемому веб-серверу, а полученные сертификаты копировать потом в нужное место. Я так делаю, чтобы получить сертификат на основной сайт на Apache, а после копирую его в cron'e (просто командой cp) на видеосервер и остальное, что висит на том же домене (на разных портах).

И получение сертификата по проверке через HTTP не единственная опция, сертбот также поддерживает проверку, например, по DNS-записям.

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

сертбот умеет просто получать серты без интеграции с апачем\нгинксом и тд.

в конечном итоге, достаточно написать скрипт с параметрами (чтобы дергать по крону хоть в винде) и выбрать подтверждение через тот-же cloudlfare (плагин для сертбота), ну или через txt-файл из коробки.
(это только что написали выше)

потенциальная проблема - наличие домена. но бесплатный в .tk\.cf взять не проблема.

о, вспомнил, с недавнего времени можно и на внешний ip сертефикат физлицу получить. у меня это заняло около 2х часов ночью, когда спонтанно этим загорелся.

А ещё есть проект OpenIPC. Можно купить одну из дешманских камер на Ali, прошить этой прошивкой. После этого камера сможет сразу транслировать в ютуб, а также её поток можно сразу отправлять на веб, он тоже, вроде, в HLS самой камерой отдаётся.

если сайт публичный, то нужен сервер который раздавать сможет многопоточно, чем ютуб, собственно и занимается.
UFO landed and left these words here

Также предусмотрено кэширование захваченных статических снимков, по умолчанию время хранения в кэше равно одной минуте

Как это выглядит? Кэш в озу или на диске? Это когда камера делает снапшоты с интервалом?

У меня вот какая проблема, есть Synology Surveillance Station, и всё прекрасно, кроме одного, нельзя прямо сразу вытащить архив видео за последние 10 сек. У меня когда камера обнаруживает движение, скрипт запускает ffmpeg, он делает пятисекундное GIF из потока видео и отправляет в мессенжер. Но что было до наступления события не увидеть. Можно ли ffmpeg'ом постоянно циклически делать снапшоты, или писать видео, чтобы это хранилось в оперативке, а при наступлении события делать из сохранённого короткий кусок видео, с записью до события взятой из кэша?

Кэш на диске и там интервала нет. При запросе снапшота, сервер смотрит свою папку data/capture. Если он не нашел там картинки, то делает захват с камеры. Если нашел, но судя по дате изменения файла она устарела (т.е. разница с текущим временем была более минуты, по умолчанию), то также сделает захват. Иначе просто отдаст имеющееся, как обычный ресурс. Поиск идет по GUID камеры, им именуются файлы снапшотов.

Касательно вашей проблемы, циклические снапшоты с помощью ffmpeg можно делать так (в этом примере делается снапшот каждую секунду, принимая fps потока равным 12 — настройте под себя):

ffmpeg -rtsp_transport tcp -i "rtsp://адрес" -f image2 -vf fps=fps=1/12 img%03d.jpg

Но храниться это будет не в оперативке, конечно же (как вариант RAM-диск?). Касательно "видео из снапшотов", то можно тем же ffmpeg превратить картинки в GIF, например так:

ffmpeg -f image2 -i img%03d.jpg out.gif

Правда эта команда склеит в GIF вообще все картинки из папки, поэтому придется отбирать последние 10 картинок скриптом на bash, и передавать список как аргумент в ffmpeg. Здесь не подскажу, плохо разбираюсь в bash.

На саму программу я строил большие виды, но по большому счету она пока сырая - не работает. У конфигуратора окно справа не масштабируется, закрывает поля ввода. Монитор у меня маленький 1024 пикселя, но это же не должно мешать. У меня эта строчка с rtsp транспортом работет только если убрать img из img%03d.jpg (вместо %03d подставляет путь к папке)

Сервер локальный ничего не показывает в браузере. Готов тестировать до победного конца. Придётся, видимо, самому исходник копать.

"Простота хуже воровства" - это про другое, это когда некий простак, вроде Джека-простака может столько дров наломать, такой ущерб нанести, что вор столько и не натаскает. Хотя....

Способ не простой. Проще установить motion, который умеет и писать и детектить движение, и устанавливать триггеры на события, а главное, стримить в mjpg, который является поистине кроссбраузерным, и на любой сайт добавляется с помощью обычного img src:
image

А motion умеет уходить "в сон", когда нет зрителей, прерывая захват потока с камеры? А если нужна поддержка аудио (в mjpeg ее нет)? Да и не проще он, строго говоря)

опоздал на пол года, но лучше поздно, чем никогда.) RAM-диск спасает положение? сколько нужно выделить, и на сколько уменьшится задержка? если конечно были эксперименты такие.

К сожалению, RAM-диск не поможет побороть задержку. Это особенность протокола HLS и соответствующей реализации. Минимальной задержки мне удалось добиться в другой моей программе (при использовании видео в MJPEG!) https://github.com/carpediem-av/rtsp2html5 . Еще на камере нужно выставить минимальный интервал ключевого кадра.

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

Sign up to leave a comment.

Articles