Всем привет.
В рамках этого проекта в г. Красногорск, мы решили установить пару сетевых камер и сделать удобным просмотр потокового видео. Забегая вперед, результат можно посмотреть на нашем сайте или с мобильного телефона по wap www.ventumnet.ru/camera
![](http://www.picamatic.com/show/2009/01/26/02/34/1867618_500x342.png)
Был какой-то опыт с камерами Axis, которые, безусловно, являются флагманами индустрии, но мы остановились на более бюджетном варианте — сетевыми камерами DCS-2102 от D-Link.
Стоят они в районе 4000 рублей. За эти деньги Вы получаете сносную картинку и битрейт, а самое главное — доступ по протоколу RTSP, причем сразу с настроенным профилем для просмотра на мобильных телефонах имеющих на борту плеер 3gp, в нашем случае это был T650i от Sony Ericsson.
Для удобства просмотра в вебе решили конвертировать видео в онлайне в flv с помощью vlc, запущенного в режиме vlm.
Делается это так:
Статья публиковалась в песочнице, реакции не последовало, поэтому по просьбе автора решил разместить от своего имени. Соответственно, на комментарии будет отвечать (по мере возможности) сам автор от моего имени.
Боремся с пробками вместе
В рамках этого проекта в г. Красногорск, мы решили установить пару сетевых камер и сделать удобным просмотр потокового видео. Забегая вперед, результат можно посмотреть на нашем сайте или с мобильного телефона по wap www.ventumnet.ru/camera
![](http://www.picamatic.com/show/2009/01/26/02/34/1867618_500x342.png)
Был какой-то опыт с камерами Axis, которые, безусловно, являются флагманами индустрии, но мы остановились на более бюджетном варианте — сетевыми камерами DCS-2102 от D-Link.
Стоят они в районе 4000 рублей. За эти деньги Вы получаете сносную картинку и битрейт, а самое главное — доступ по протоколу RTSP, причем сразу с настроенным профилем для просмотра на мобильных телефонах имеющих на борту плеер 3gp, в нашем случае это был T650i от Sony Ericsson.
Реализация
Для удобства просмотра в вебе решили конвертировать видео в онлайне в flv с помощью vlc, запущенного в режиме vlm.
Делается это так:
cvlc -I telnet --telnet-password your_password --rtsp-caching=1200 --video --no-sout-audio --udp-caching=30000 --http-caching=5000
Все параметры кеширования подобраны опытным путем, в вашем случае они могут быть другими.
В принципе, с камер также идет звук, но нам он не нужен, поэтому --no-sout-audio.
- Подготавливаем конфиг /home/vlc/playlist.txt:
new kamera4 broadcast enabled
setup kamera4 input "rtsp://ip_address:554/mp4"
setup kamera4 output #transcode{vcodec=FLV1,vb=2048,acodec=mp3,samplerate=22050}
:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8084/stream4.flv}
new kamera3 broadcast enabled
setup kamera3 input "rtsp://ip_adress2:554/mp4"
setup kamera3 output #transcode{vcodec=FLV1,vb=2048,acodec=mp3,samplerate=22050}
:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=0.0.0.0:8083/stream3.flv}
control kamera4 play
control kamera3 play
Обратите внимание на dst, порты встроенного в vlc вебсервера — разные, на одинаковых запустить не удалось, хоть это и странно, и наверняка в следующих релизах vlc станет возможным отличать потоки только по второй части url, типа /stream1.flv /stream2.flv ..etc.
Камеры настроены соответствующим образом, отдают 2 мегабита.
# telnet localhost 4212
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Password:
Welcome, Master
> load /home/vlc/playlist.txt
> exit
Connection closed by foreign host.
- Проверяем, слушает?
# netstat -an | grep 808
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN
- Можно wget'нуть.
# wget "http://localhost:8084/stream4.flv"
--2009-01-26 11:03:14-- localhost:8084/stream4.flv
Распознаётся localhost... 127.0.0.1
Устанавливается соединение с localhost|127.0.0.1|:8084... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: нет информации [video/x-flv]
Сохраняется в каталог: `stream4.flv'.
[ <=> ] 1 114 847 85,8K/s ^C
- В качестве плеера использовали JW FLV Player
Для получения статических картинок, а не потокового видео, пришлось подписывать NDA с D-Link'ом, чтобы получить доступ к камерам по http. Из соображений NDA ссылку мы приводить не будем, она просто вида kamera/cgi-bin/dai_mne_kartinuku_plz.cgi
- Попутно делаем wap-сайт, на котором можно либо смотреть картинки, либо прямо перейти по ссылке rtsp:// сразу на камеру. Заодно берем с gismeteo.ru погоду в /tmp/temp и оверлеем ее с помощью
convert $IMAGE_PATH/cam2_new.jpg -fill yellow -pointsize 22 -gravity "South" -dr
aw "text -230,310 'Сейчас `cat /tmp/temp`°C'" $IMAGE_PATH/cam2_new.jpg
Картинка 160х120, битрейт 256 килобит/c, 5 fps, вполне себе смотрится через GPRS.
- Размещаем камеры на google maps.
- Посмотреть вживую можно на http://www.ventumnet.ru/live и через wap на www.ventumnet.ru/camera
Недостатки:
На данный момент существует какая-то проблема в сочетании adobe flash player 10, jw flv player'а 4.1.6 и конкретно нашего потокового видео. В adobe flash player 9 проблем не наблюдается.Проблема побеждена, решилась дополнительным инициализационным параметром start для jw flv player'а, который отвечает за то, с какого фрейма начинать воспроизводить видео. Очень помог пост отсюда, большое спасибо автору!- Камеры виснут раз в месяц, иногда чаще. Они доступны через http но перестают отдавать rtsp. С обновленной недавно прошивкой они стали работать лучше, но проблема сохранилась. Все камеры ломаются одновременно, т.е. тут роль играет время. В новой прошивке, кстати, добавилась поддержка ночного режима, теперь даже при свете фар что-то видно.
- VLC тоже может упасть если долгое время поток недоступен.
- Все мобильные телефоны напрямую обращаются к камерам, что, безусловно, создает на них нагрузку. Производителем обещано до 10 одновременных мобильных клиентов, на практике, нужно, конечно, со временем и ростом нагрузки, переложить функцию доставки мобильного видео также на vlc.
- Погоду хочется брать не из открытых источников, а с сетевых датчиков влажности/температуры, подскажите, есть такие в продаже?
- Необходимо решить задачу записи видео, пробовали zoneminder, не понравилось, еще варианты?
Статья публиковалась в песочнице, реакции не последовало, поэтому по просьбе автора решил разместить от своего имени. Соответственно, на комментарии будет отвечать (по мере возможности) сам автор от моего имени.