
Запись потокового видео в роутер: MikroTik RouterOS Script
JDJ 9 минут назад Запись потокового видео в роутер: MikroTik RouterOS Script Средний 9 мин 67 DIY или Сделай сам Сетевое оборудование IPTV * Лайфхаки для гиков Работа с видео * Кейс Одна из моих IP камер перестала...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Вот важная новость с фронта ИИ: JDJ 9 минут назад Запись потокового видео в роутер: MikroTik RouterOS Script Средний 9 мин 67 DIY или Сделай сам Сетевое оборудование IPTV * Лайфхаки для гиков Работа с видео * Кейс Одна из моих IP камер перестала сохранять настройки для FTP сервера и перестала в него писать. В остальном она работает, поток RTSP смотреть можно. Камера писала в формате DAV, а роутер будет писать как получится.
Роутер тот самый, что пишет онлайн радио в себя и делает другие безобразия. Надо бы ему, наверно, уже имя дать. А получится так: rtsp из камеры, в бесплатное облако, из облака m4s куски в роутер и потом ffmpeg склеит их в mp4 на компе.
Технические детали
Бесплатным облаком будет rtsp. me, правда, у меня не получилось нормально качать HD разрешение (2048x1536). Их сервер начинает слать 6 секундные куски раз в 30-40 секунд, ну что это такое.
А может и камера виновата. Всё равно будем качать, что есть, доп. Чтоб два раза не вставать запишем и IPTV какой нибудь, там скрипт ещё проще и тянет 1920x1080.
Первым делом нужна ссылка на вашу трансляцию в облаке, такого формата страницы по этой ссылке мы парсим ссылку на... плейлист похоже, такого вида Разбираем её на основную часть, ID и хвостик с нашим IP. Разобрав ссылку, запрашиваем в цикле плейлист и качаем все части, которые ещё не скачаны.
Отраслевые последствия
Между загрузками частей делаем небольшую паузу, между загрузками плейлистов тоже. При старте скрипта стоит пауза 10 секунд для того, чтобы сервер хотя бы на второй запрос ответил не 403, а плейлистом. В целом паузы, на мой взгляд, подобраны удачно.
Скрипт rtspRecorderСкрытый текст:local rtspMeUrl " :local diskSlot "usb1" :local freeSpace ((->0)->"free # проверить диск и свободное место, минимально допустимое свободное место (100 MB) :if (( = 0) ($freeSpace < 104857600)) do={ :log warning ("low disk space on " . $diskSlot) :quit } :local getFolderPath do={ :local sDate :local sTime :return ("usb1/cam_video/" . ) } :local videoDateFolder :do { :local rtspMeUrlHtml (->"data :local streamLinkStartMarker ".
get('" :local streamLinkEndMarker " " :local startMarkerPos :if ( ! = 0) do={ :set startMarkerPos ($startMarkerPos + ) :local endMarkerPos :if ( ! = 0) do={ :local hlsUrl #:log warning "HLS_Parser SUCCESS!
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





