Видеорегистратор своими руками linux

Мое по программированию и около того

Прикупил IP-камеру от китайского производителя Luckertech. Встал вопрос использования по назначению. Чтобы просто смотреть — проблем нет, чтобы зацепить на видеорегистратор — тоже. Но захотелось писать видео на комп.

Начинаем пляски с бубном. Пациент — сервер с AltLinux p7 на борту, без графики, на нем крутятся MySQL, Apache, теперь еще и видео решил туда засунуть. А то стоят внутри два винта практически пустые.

Итак, для начала — ставим live555
Затем пытаемся запустить openRTSP и получаем облом в виде

из-за чего, подозреваю, имеются некоторые проблемы.

Гугление показало, что проблема решается командой

route add -net 224.0.0.0/4 dev eth1

то есть, необходима маршрутизация бродкаста. Eth1 — внутренний интерфейс на сервере, смотрит в локалку, где и висит камера.
Эта проблема решилась, заодно вылечив чтение потока по UDP (без ключа -t в openRTSP), зато остались пара других.
Первая — openRTSP считывает данные ровно 120 секунд, после чего тупо останавливается и больше ничего не делает. Висит молча и все.
Вторая — даже те 120 секунд, если их с помощью avconv сконвертил в mp4 на выходе дают ускоренное воспроизведение.

В итоге — установил пакет live555 из репы альта и скачал оригинальный пакет с сайта live555, вытащил оттуда бинарник openRTSP, положил его в ~/video и накатал скрипт

while [ 1 ]; do
~/video/openRTSP -q -K -f 25 -d 1200 -v -B 400000 -b 400000 -t rtsp://192.168.0.10:554//user=admin_password=*****_channel=1_stream=0.sdp > «/video/q$(date +%Y-%m-%d+%H-%M-%S).avi»
done

запуск скрипта в фоне./runvreg &

и все. Начинаем складывать видео по 20 минут в /video.
Ну и вполне ожидаемо, что место будет кончаться. Каждый файл примерно занимает по 300 мегабайт. Чтобы обеспечить цикличность, взял период в 2 недели и накатал скрипт cleanvideo

#!/bin/bash
find /video -type f -mtime +14 -print0 | xargs -0 rm -f

поставил его в крон, чтобы раз в сутки подчищал.

Источник

Видеорегистратор своими руками

Есть желание собрать фронтальный видеорегистратор для авто на основе платы Raspberry PI 2 (Model B) и какой-нибудь вебки с питанием от USB.

Возникает сразу пачка вопросов:
— Стоит ли смотреть на широкоугольные (>100° угла поля зрения) камеры или же проще будет взять любую, запилив туда нормальную линзу (в фототехнике вообще не секу, возможно ли увеличить поле зрения, заюзав внешнюю линзу, без смены объектива оригинального устройства?)
— Есть ли какие-то неочевидные проблемы с драйверами для вебок на ARM-овских образах линухи?

Читайте также:  Android studio для линукс

и какой-нибудь вебки с питанием от USB

Нет смысла, матрицы вебок слабоваты.

Можете дать совет из чего лучше тогда компоновать камеру и на какие характеристики смотреть при выборе?

Там больше проблем от вибраций будет чем от матрицы.
Вебки разные бывают, бывают и с хорошими матрицами.
Смотри на поддержку камеры без использования проприетарщины и на корпус.
Хотя если эйчдями не париться и пилить и смазывать лень — бери любую подходящую и когда сдохнет просто выбрось и новую воткни — не такие они и дорогие эти камеры.

Остаётся тогда вопрос по углу обзора.

На этих ваших хреняндекс маркетах всего 12 моделей разной степени неадеквата имеют угол поля зрения >110°.

Мне прямая дорога на алиэкспресс или поле зрения можно как-то пропатчить руками, паяльником и стеклом?

Купил недавно, а потом вернул, вебку от A4tech, fullhd, 30fps.
Потому что максимум что выдавало — HD с 20 fps, с фуллхд было от силы 8 кадров. Так что, если у вас нет способа протестировать кучу вебок, чтобы найти нормальную, то дерзайте.

А почему не купить готовое устройство (КМК будет дешевле)?

— Есть ли какие-то неочевидные проблемы с драйверами для вебок на ARM-овских образах линухи?

У меня какой-то logitec, взлетело без проблем, но на B+ при работе с камерой ресурсы жрутся огого как.

Китайский видеорегистратор (при том с честным 30fps FullHD, а не 15-20fps как выдают в реальности многие вебки и мучениями с кодированием видео на слабой малинке) будет в несколько раз дешевле.

А почему не купить готовое устройство (КМК будет дешевле)?

30-баксовый noname из Китая подох на прошлой неделе и прихватил с собой SD карту. Каждая подобная покупка обходится в 2 месяца ожидания без надежды на успех. Проще один раз заморочиться и собрать самому, зная как оно работает. В крайнем случае можно будет перепрофилировать материнку под другие задачи.
Пока остановился на варианте PI 2 Model B + PI Cam Module + Wireless Adapter. Если не натыкаю вменяемую вебку с углом в ~120°, придётся ограничиться материнкой и камерой-расширением к плате.

Конечно можно и нужно, особенно если форма рук позволяет.
Это же банальная оптика, никаких секретов.
Особенно если она без автофокуса.

У вебок два режима работы: на качество и на кадры в секунду.
Если выбран режим на качество — кадров будет меньше при меньшем освещении.
Если на кадры, то качество будет страдать, но зато кадры проседать не будут.

Читайте также:  Add user to group linux centos

По собственному опыту могу посоветовать Defender G-lens 2577 из недорогих качественных камер, доступных в расейской рознице.
За такую цену лучше фиг найдёшь, при тусклом офисном освещении она даёт честные 60фпс в разрешении 800×480 или 30фпс в 1280×720.

Практика показывает что вебка+ежевика получается дешевле аналогичного по качеству готового устройства.

Ссылку на честный регистратор в студию.

возможно ли увеличить поле зрения, заюзав внешнюю линзу, без смены объектива оригинального устройства?

Подробнее, пожалуйста. Что именно нужно, какие материалы, какой навык.

Зато к Raspberry PI можно, скажем, примотать экран и вторую вебку на зад для парковки, её же использовать как мультимедиа-проигрыватель, воткнуть датчики температуры и ещё много интересных вещей, которые пожадничал производитель автомобиля :3

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

Поле в пространстве предметов ограничено передней частью корпуса камеры, такое коническое углубление спереди. Это бленда, фактически.

Предположим, ты бленду уберешь, объектив оставишь и спереди поставишь рассеивающую линзу. Вроде, как получишь схему широкоугольного объектива, примерно как «рыбий глаз». Нет, поплывут все размеры, по крайней мере задний рабочий отрезок, от задней поверхности объектива до кристалла.

Предположим ты и с этим справишься. Но на коленке ты не сможешь отцентрировать даже двухкомпонентную систему и искажения будут присутствовать даже в центре изображения.

Если в линуксе под другими архитектурами работает, то и на ARM заведется. Другая проблема — ассемблерные вставки. Мне, например, одну свою библиотечку пришлось малость подрихтовать. Зато теперь ассемблерные вставки в ней и на i386, и на AMD64, и на ARM работают.

Но вот другой вопрос: потянет ли «малинка» видео в HD1080? А еще лучше в 4 раза больше, т.к. на HD1080 разглядеть номера едущей впереди на расстоянии сотни метров машины почти невозможно.

Вот взять бы помощней систему, можно было бы в реальном времени распознавать номера автомобилей в поле зрения и в лог сваливать. Удобно, однако.

Это показометр, а не регистратор! Нужно не меньше HD1080. А еще лучше — QSXGA 2560×2048. Тогда уже можно назвать регистратором.

А как ты собираешься реализовать аварийную блокировку памяти при сотрясении?

Читайте также:  Linux bible 10th edition pdf

Тогда проще GoPro купить.
Там сразу и широкий обзор и мегапиксели и всё в одной коробке и на вибрации ей посрать.

Goury ★★★★★ ( 10.05.15 10:59:43 MSK )
Последнее исправление: Goury 10.05.15 11:00:42 MSK (всего исправлений: 2)

у китайцев есть широкоугольные объекивы к камерам (на китайские вебки подходят).

Регик собран, сегодня проехался немного по городу.

Это на малинке с ее родным камерным модулем? Если так, то сколько кушает проца и какая малинка, какой софт? Я хочу компактный регик на работу сварганить.

Это на малинке с ее родным камерным модулем? Если так, то сколько кушает проца и какая малинка, какой софт? Я хочу компактный регик на работу сварганить.

Да, это малина с камерой от тех же ребят. По потреблению ресурсов и самому софту скажу после выходных, сейчас вдалеке от цивилизации.

Добрался до цивилизации, сейчас буду медленно спамить.

Залил видео для примера — https://www.youtube.com/watch?v=SIlh75tqZo8&vq=hd1080 (убедитесь, что качество просмотра выставлено 1080p, шесть минут видео 1920×1080 регик упаковал в 763M .h264). Звука нету — расширения на плату не докупал, только материнка + 5MP камера от тех же ребят, что и плата.

У меня в Минске с электроникой подобного рода довольно тухло, как и с вообще доставкой напрямую в Беларусь, поэтому брал с рук — последняя малинка (RPI 2+) обошлась в $55, камера $26. Насколько реально взять дешевле в других городах\странах — смотрите сами.

По операционке: предпочитаю арч, поэтому был впёрт он. Хард (флешка) разбит на 2 партишена: немного для оси, остальное в FAT32 для видео.

По софту: производитель камеры наклепал примеров юзания своего поделия на обычном баше с параметрами, а не на вызовах API из C\C++, поэтому задача кода — собрать параметры в командную строку. На чём делать — до фонаря, я слепил за 20 минут на пыхе.

# DVR settings define('RUDE_DVR_MAX_VIDEO_FILES', 15); define('RUDE_DVR_DIRECTORY_ROOT', '/mnt/videos'); define('RUDE_DVR_FILE_INDEX', RUDE_DVR_DIRECTORY_ROOT . DIRECTORY_SEPARATOR . 'index.txt'); 
set_timeout_minutes(4); $camera->set_automatic_white_balance_auto(); $camera->set_fps(24); #$camera->set_video_stabilization(); #$camera->set_metering_matrix(); $camera->set_iso(200); if (!filesystem::is_exists(RUDE_DVR_FILE_INDEX)) < filesystem::write(RUDE_DVR_FILE_INDEX, 1); >$index = filesystem::read(RUDE_DVR_FILE_INDEX); $index++; for ($i = $index; $i < PHP_INT_MAX; $i++) < filesystem::write(RUDE_DVR_FILE_INDEX, $i); $video_files = filesystem::search_files(RUDE_DVR_DIRECTORY_ROOT, 'h264', false); $video_files_count = count($video_files); if ($video_files_count >RUDE_DVR_MAX_VIDEO_FILES) < sort($video_files); $total_remove = $video_files_count - RUDE_DVR_MAX_VIDEO_FILES; foreach (items::first($video_files, $total_remove) as $video_file) < filesystem::remove(RUDE_DVR_DIRECTORY_ROOT . DIRECTORY_SEPARATOR . $video_file); >> $camera->set_output_file(RUDE_DVR_DIRECTORY_ROOT . DIRECTORY_SEPARATOR . 'video_' . $i . '.h264'); $camera->init(); > 

Источник

Оцените статью
Adblock
detector