*nix
Comments 38
+2
Хороший подход к решению вопроса, подробно рассматриваете разные варианты, но ИМХО, модель Белла-ЛаПадула притянута несколько за уши. Использование ее в тексте немного затрудняет понимание. хотя решение не экзотическое (это только мое мнение).
0
Спасибо!
Не то чтобы за уши, но именно ее подход лежит в основе, как решение возможных проблем безопасности.
0
Качество сжатия видеозаписи, мягко говоря, страдает ужасно. Не могу разобраться в хитроумных параметрах ffmpeg. А возможно, что не хватает кодеков. Прошу тех кто сталкивался — подсказать подходящий перечень ключей.

У меня вот такой строчкой кодируется:

ffmpeg -r 5 -b 500kb -i cam1/jpg/$ymd/%05d.jpg -y cam1/avi/$ym/cam1_$ymd.avi

Качество устраивает.
0
Честно сказать, уже просто не помню. Как говорится, сделал и забыл. Но работает вот именно так, как написал.
0
Спасибо. Попробовал. Качество стало немного лучше и четче, но не регулируется. Битрейт все-равно 200кб/с и на картинке jpeg-артефакты. Хотелось бы еще немного улучшить качество дотянув до исходного.

Между:
ffmpeg -r 6 -b 4096k -i img%04d.jpg -s 704x576 -y cam1.avi

и
ffmpeg -r 6 -b 2048k -i img%04d.jpg -s 704x576 -y cam1.avi

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

Вот результат испытаний:
ffmpeg -r 6 -b 4096k -i img%04d.jpg -s 704x576 -y cam1.avi
ffmpeg version 0.7.6, Copyright © 2000-2011 the FFmpeg developers
built on Oct 28 2011 11:52:30 with gcc 4.2.1 20070719 [FreeBSD]
configuration: --prefix=/usr/local --mandir=/usr/local/man --enable-shared --enable-gpl --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-memalign-hack --enable-runtime-cpudetect --cc=cc --extra-cflags='-msse -I/usr/local/include/vorbis -I/usr/local/include' --extra-ldflags='-L/usr/local/lib ' --extra-libs=-pthread --disable-debug --disable-libaacplus --disable-indev=alsa --disable-outdev=alsa --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libcelt --disable-libdirac --disable-libfaac --enable-libfreetype --enable-frei0r --disable-libgsm --enable-libmp3lame --enable-libopencv --enable-libopenjpeg --disable-librtmp --enable-libschroedinger --disable-ffplay --disable-libspeex --enable-libtheora --disable-vaapi --disable-vdpau --disable-libvo-aacenc --disable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.122. 0 / 52.122. 0
libavformat 52.110. 0 / 52.110. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
libpostproc 51. 2. 0 / 51. 2. 0
[image2 @ 0x805422020] max_analyze_duration 5000000 reached at 5000000
Input #0, image2, from 'img%04d.jpg':
Duration: 00:03:49.83, start: 0.000000, bitrate: N/A
Stream #0.0: Video: mjpeg, yuvj420p, 704x576 [PAR 72:72 DAR 11:9], 6 fps, 6 tbr, 6 tbn, 6 tbc
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x805449f00] w:704 h:576 pixfmt:yuvj420p tb:1/1000000 sar:72/72 sws_param:
[buffersink @ 0x805449f80] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x805449fe0] w:704 h:576 fmt:yuvj420p -> w:704 h:576 fmt:yuv420p flags:0x4
Output #0, avi, to 'cam1.avi':
Metadata:
ISFT : Lavf52.110.0
Stream #0.0: Video: mpeg4, yuv420p, 704x576 [PAR 1:1 DAR 11:9], q=2-31, 200 kb/s, 6 tbn, 6 tbc
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
[mjpeg @ 0x805410020] overread 44 587kB time=00:00:15.66 bitrate= 306.7kbits/s
Last message repeated 1 times 5131kB time=00:03:23.33 bitrate= 206.7kbits/s
[mjpeg @ 0x805410020] overread 9
[mjpeg @ 0x805410020] EOI missing, emulating
frame= 1377 fps= 93 q=12.0 Lsize= 5776kB time=00:03:49.83 bitrate= 205.9kbits/s
video:5738kB audio:0kB global headers:0kB muxing overhead 0.673392%


Снимок с камеры:


Тот же кадр из видеозаписи:
+1
ИМХО за минуту перерыва между снимками злоумышленник может сделать очень многое. Так что задача скорее демонстрировать фото из офисов или просто учебная.
А вот по хорошему очень здорово как сделано в демо у ivideon. Реальный офис и действительно видно что происходит.
0
Да красиво, но для меня, учитывая качество картинки с моих камер, на которых ничего не видно (лиц, например), кроме происходящего, а также сильно узкие и нестабильные каналы связи — приемлемо. Можно только участить кол-во снимков в минуту.
+1
В любом случае происходящее лучше видеть хотя бы 3 раза в секунду, чем 1 раз в минуту. Мы себе сделали похожее решение. Причем на некоторых офисах 512 Кбит. Работает замечательно.
+2
С таким подходом, да и результатом, можно было просто муляжей камер натыкать. Экономия на безопасности достаточно часто выливается в куда более серьёзные финансовые потери, нежели аренда нормального канала и покупка качественных камер. Попробуйте вдолбить это в голову начальству. В Сети масса примеров успешного применения видеосистем. Удачи.
0
Вы думаете я не пробовал? Просто это технически не реализуемо.
Например, на Дворцовой площади, кроме радиодоступа, ни о чем мечтать не приходится. Но и с ним большие проблемы. Рядом находятся правительственные объекты, оснащенные радиоглушилками, которые ограничивают возможные места установки отправной точки «последней мили». На данный момент там используется роутер Yota. Уровень сигнала отличный, но вот качество передачи хромает. Никаких 10 мегабит нет. Дай бог 1Мбит/с по нисходящему, а по восходящему вообще 64Кбит/с с перебоями. А на канале не только камера, а еще и два рабочих компьютера и SIP-телефон. Лучшего решения на сегодняшний день нет.

Как максимум, я могу увеличить число кадров в минуту, но есть разумный предел — это расхождение во времени между сервером и всеми камерами. Может наступить момент, когда сервер будет хватать по несколько раз одну и ту же фотографию.
0
Установить полноценный видеорегистратор на саму точку, а картинки уже с него вытягивать не вариант?
0
Это в планах. Оборудование закупят, но еще не скоро, а совсем без видеоархива хуже чем так.
0
Короче говоря, у нас в России работают с тем, что есть, выжимая из этого целесообразный максимум.
0
То есть, ломается ваш локальный сервер, там находится пароль от ftp и сносятся все записи на удаленном сервере. Профит!?
Логичнее бы было, чтобы какой-то удаленный сервер сам ходил на ваш внутренний и все собирал, чтобы не было возможности удалить или модифицировать что-то на внешнем сервере.
0
Точно также ломается удаленный, получается пароль от моего, входится и удаляется… тоже самое. Фишка в том, какой сервер легче защитить, тот который где-то удаленно, или тот, который здесь, под боком, в серверной?
Настроенный тобой лично, с мониторингом, файерволом, активной защитой и т.п.
0
Локальный проще сломать физически.
Я расскажу один пример из жизни.
Был офис, там много чего интересного было, стояло видеонаблюдение, все писалось на некий локальный сервер. Когда же офис обнесли, украв очень много исходников (происки конкурентов в бандитском Екатеринбурге), техники, то сервер со всеми записями тупо украли… в итоге никаких доказательств.
А про удаленный скорее всего даже не будут знать злоумышленники.
0
Не до конца написал)
Так вот, имея доступ к локальному серверу, злоумышленник легко на удаленном удалит все следы.
0
Здесь все понятно. Поэтому бекап записей делается на сетевое хранилище в другом офисе. Придется обносить оба офиса в центре города, находящихся под защитой вневедомственной охраны и сигнализации.
+1
Мало обрабатываются ошибки. Ну и потом, местами странновато выглядит, например, если FTP-сервер по любой причине даст ощутимый таймаут, Вы не поймаете начало суток, т.к. Вы ловите ровно 00:00 — и не сделаете ролик.
0
А разве крон не запустит второй скрипт параллельно уже запущенному? По моим наблюдениям — запустит.
+1
Нет, на следующей минуте он его запустит. Но в коде-то стоит if [ `date +%H` -eq '00' ] && [ `date +%M` -eq '00' ]. Четкая вбитая проверка на 00:00.
0
Дык, FTP отвалится и тогда… ага, понял.
Тогда лучше будет запомнить время запуска скрипта, на случай задержек на FTP, и уже его сравнивать с 00:00. Спасибо!
0
А про ошибки Вы правы, хотя я старался писать так, чтобы они не могли возникнуть в принципе. Все можно исправить.
+4
Нужно либо закрыться как-то, либо научить сервер заходить в веб-интерфейс камер и скачивать с них текущее изображение (у камеры для этого предусмотрен статичный адрес cam1/snapshot.php, а аутентификация производится на базе .htaccess). Посоветуйте, пожалуйста, при помощи каких команд и утилит это можно решить.

В самом простом случае авторизация через .htaccess и скачивание делается так:
wget --http-user="cam_user" --http-password="cam_password" -q -O "/path/where/to/save" "http://path/to/snapshot"


Ещё небольшой совет.
Вот этот кусок кода
find $archive/$LASTDAY/ -size -10k -print | {
while read files
do
rm "${files}"
done
}

можно заменить на
find $archive/$LASTDAY/ -size -10k -print0 | xargs -0 rm
На мой взгляд, эстетичнее выглядит и легче воспринимается =)
0
Вот это реально крутой совет! Да прибудет с Вами карма! Спасибо.
Буду модернизировать код скрипта прямо здесь, чтобы всем было видно.
0
Запрос:
wget --http-user="******" --http-password="******" -q -O "/home/admin/cam1.jpg" "http://192.168.0.213/cgi-bin/video.jpg"

Сохраняет в cam1.jpg вот это:
Protected ObjectProtected ObjectThis object is protected.

Пока не разобрался. Если знаете о чем я, подскажите пожалуйста, куда копать, чтобы время не терять.
0
Разобрался. Кому интересно.
Нужен был параметр --auth-no-challenge, чтобы логин/пароль отсылались сразу камере.

Получилось так:
wget --timeout=6 --tries=2 --auth-no-challenge --user='*********' --password='*********' -q -O "/store/STORE/sad37.jpg" "http://192.168.200.13/cgi-bin/video.jpg"

Здесь:
--timeout=6 Ограничивает время ожидания ответа камеры в 6 секунд. Мало-ли, связи нет.
--tries=2 Ограничивает кол-во попыток повтора загрузки при ошибках (по-умолчанию их 20).
-q Отключает вывод (тихий режим)
-O file Указывает куда сохранять загруженное.
0
А если добавить ключ -b, тогда можно запустить загрузку фотографий на всех камерах практически одновременно и она пройдет в фоновом режиме. Сложность только в том, чтобы «запалить» окончание всех загрузок, чтобы продолжить работу скрипта.

Коллеги, у кого есть идеи?
0
Узнал, что wget возвращает результат работы в виде числа от 1 до 8. Пока не пойму, как его применить.
+1
Сомневаюсь, что Вам помогут эти числа…
Wget may return one of several error codes if it encounters problems.
0 No problems occurred.
1 Generic error code.
2 Parse error---for instance, when parsing command-line options, the
.wgetrc or .netrc…
3 File I/O error.
4 Network failure.
5 SSL verification failure.
6 Username/password authentication failure.
7 Protocol errors.
8 Server issued an error response.


Могу предложить альтернативный вариант. wget -b выдаёт pid процесса, можно ловить момент, когда этот процесс завершится. Однако, по-моему, рациональнее будет не плодить сущности и скачивать просто по очереди.
0
Скачивая по-очереди, можно не уложиться в минуту и крон запустит вторую копию скрипта. И так может дойти до большого кол-ва копий в памяти… Я не прав?
0
Вот каждый раз, когда вижу подобное, сразу же возникает вопрос — а для чего все это сделано?

Если кто-то что-то со стола стырит — концов не найдешь (скажу больше, в моем прошлом офисе была такая же фигня — архив с камер AXIS с поиском по архиву и прочими фишечками — начальство захотело. Каждые 5 секунд — фото. Когда что-то там вперли — да, видно, что рядом была уборщица, но вот что она шкафчик открывала — не видно. Все, камеры бесполезны. Ну у нас-то еще и традиционное наблюдение было).

Чтобы публиковать фотки «просто так, типа вот мы работаем» — достаточно настроить одну камеру раз в час прямо на сайт публиковать (хотя премодерация все же нужна, ИМХО, чтобы не было снимков пустого офиса и подобного — каждый пусть придумает в меру своей испорченности/информированности :).

Смотреть, рабтоают ли сотрудники и когда кто пришел — ну да, наверное вот это и есть основное применение такого.

0
А вы не примеряйте на себя. Раз сделано — были причины. И уверяю Вас, что в данном случае — вполне адекватные. Например, видно когда пришли или ушли сотрудники, когда пришел или ушел охранник, были ли какие-нибудь происшествия, сколько было посетителей, чем сотрудники занимались и т.п. Для реальной охраны объектов будет закуплено специальное оборудование и нормальные видеокамеры, где различимы лица. У этого оборудования другие задачи. И одно оборудование с другим не должно пересекаться, ни технически, ни по задачам, тогда смысл существования одного из них пропадет.
Only those users with full accounts are able to leave comments. , please.