Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Видео и аудио: обработка и кодирование (http://forum.oszone.net/forumdisplay.php?f=45)
-   -   Best practices по записи с DVR на компьютер (http://forum.oszone.net/showthread.php?t=305195)

A.A.Z. 09-09-2015 16:23 2551394

Best practices по записи с DVR на компьютер
 
Здравствуйте!

Имеется много разных регистраторов и IP-камер.
Есть необходимость записывать с них видео на компьютер и транслировать картинку на веб-странице. Помимо удобства и наглядности решается проблема безопасности - при поломке/уничтожении камер или регистратора, все видео до последнего момента должны сохраниться.

Регистраторы и камеры разных возрастов и моделей, часть подключена по локальной сети, часть - по интернету, в том числе по 3G/4G.

Не имея опыта в этом, решил подключить всех в одну сеть (посредством VPN), затем собирать rtsp-потоки и писать их в файлы mp4 небольшой длительности.
Задачу с картинкой на веб-странице решил путём сохранения jpg раз в секунду с каждой камеры в определённую папку и добавления js-кода автообновления картинки.

Вот пример команды:
Код:

ffmpeg
-rtsp_transport tcp
-probesize 150KB
-i "rtsp://192.168.0.35:554/user=admin&password=&channel=3&stream=1.sdp"
-an
-map 0
-f segment
-segment_time 60
-strftime 1
-segment_format mp4
v:\o3\%Y-%m-%d\o3.%Y-%m-%d_%H-%M-%S.mp4
-f image2
-vf fps=1
-updatefirst 1
-y
c:\apache24\htdocs\o3.jpg
-f image2
-vf fps=1
-updatefirst 1
-y
c:\apache24\htdocs\.o3.jpg

(для удобства чтения разбил её на строки)

Вся эта бадяга в принципе работает, но есть проблемы:
- ffmpeg по неизвестной причине отваливается (перестаёт писать), при этом процесс висит
- высокая нагрузка на ЦП (при том что перекодирование не происходит)
- ffmpeg очень плохо реагирует на потери пакетов (видимо), видео с 3G/4G камер очень косячное, обрезано кусками, не все файлы открываются и т.д.; при этом с этой же камеры картинка в браузере выглядит прекрасно, никаких задержек или проблем нету.

Проблему с внезапным отваливанием записи решил сохранением второй картинки (в команде - .o3.jpg) и внешнего скрипта, удаляющего этот файл. Если файл удалён и не появляется - значит, ffmpeg завис, он убивается и стартует снова. При этом на веб-странице сохраняется последний имеющийся кадр (o3.jpg), он удалён не будет. Другой вариант - сохранять логи в файл и парсить его (это было бы удобнее в линуксе), но там тоже свои заморочки были.
Однако, отваливается он чересчур много, каждый запуск занимает по полминуты и очень много "кушает" ресурсов сервера. Камер, повторюсь, много.

А теперь, собственно, вопрос: как нормальные люди решат эту задачу? Какие есть альтернативы ffmpeg/avconv? Vlc не умеет делить видео на сегменты, чем сразу же не подошёл, однако (по крайней мере, в плеере) стабильность потока видео была выше, чем у ffmpeg. Может, есть какие-то наработки по этой теме, или вообще другой подход?

Если не туда написал - просьба модераторам сразу не удалять. Спасибо.

DJ Mogarych 10-09-2015 22:57 2551920

Цитата:

Цитата A.A.Z.
как нормальные люди решат эту задачу? »

Закупают оборудование, которое предназначено для решения подобных задач. Грубо говоря, привести всё к некоему стандарту.
Решения на коленке делают честь человеку, который заставляет это работать, но стабильности от такой системы ждать не приходится.


Время: 13:43.

Время: 13:43.
© OSzone.net 2001-