Автоматизація обробки відео-файлів із web-камер засобами shell
Під катом кілька скриптів, які сильно допомогли мені зрозуміти, як краще писати код, навіщо потрібні багато речей і як вони вирішуються, а також навести лад у своїй голові і дуже сподіваюся, що вони допоможуть комусь ще. Проект писався досить складно - настільки сильно я shell (bash) скрипти не вивчав - не було потреби до цього. Але, коли завдання поставлене і в голові є алгоритм розв'язання — усі скрипти були перероблені так, щоб читаючи їх за півроку в мене та мого наступника не було запитань і бажання переписати все з нуля.
UPD: пост періодично оновлюється.
В залежності від нас samba tools для монтування розділу де зберігається архів по самбі, і bc, як консольний калькулятор, плюс кодеки та avimerge.
Так, про якість запису я в курсі і це питання не розглядається в цій статті, як і законність таких самозбірних систем спостереження.
Налаштування Samba і Zoneminder тут теж не розглядаються, хоча без шматка конфіга Samba тут не обійтися, і він буде.
Перший конфіг – шматочок конфігурації планувальника.
Схоже, подекуди злетіли відступи у форматуванні, прошу мене пробачити
Підемо по порядку: Конфігураційний файл для всього цього неподобства.
Файлик з описом функцій, щоб розвантажити скрипти, та уніфікувати змінні
Справа в тому, що іноді на камерах злітає дата і вони починають писати в 2010 рік, але за часом створення файлів можна зрозуміти, коли фактично вони були створені і перейменувати їх як треба, саме на цю процедуру мене поки не вистачило.
про ресурсомісткість: #uptime 17:49:27 up 2:21, 1 user, load average: 4.27, 4.25, 4.24 більше завантажений процесор, ніж пам'ять. це ZoneMinder намагається.
За логами: На близько 10 камер зараз часвиконання таке (HP Proliant DL560 G1, 1Gb пам'яті, Xeon 2х2188.804 MHz):
Створення файлової кулі для кожної камери
Шматок конфігу самби:
На останні два етапи — локалізацію змінних різними мовами, нормальну документацію та пакет мене теж не вистачило, та й чи є сенс, якщо фактично скрипти виконуються автоматично і на сервер я заходжу добре якщо раз на місяць — коли в голові повністю дозрів весь алгоритм роботи , і відповідно перевірки на помилки, втручання оператора стало практично не потрібним, сьогодні сервер був uptime в кілька місяців, і було виконане перше перезавантаження по оновленню ядра, samba і Kerberos, які відповідальні за прив'язку сервера до Active Directory.
Єдине, що мене бентежить - переповнення розділу з поштою, тому що по-доброму весь висновок треба придушувати, крім повідомлень в log файл.
На цьому спасибі, сподіваюся, я Вам допоміг. Із задоволенням прийму рецепти з оптимізації скриптів та розвитку ідеї надалі.
Вихідники доступні тут: на GitHub
А у нас тут можна отримати грант на тестовий період Яндекс.Хмари. Варто лише у полі «секретний пароль» запровадити «Хабр»