13.03.2014

Webcam

0. Video
На вебках всё реже пишут про совместимость с Linux. Но обязательно указывают все версии Windows. Даже драйверов на диске нет! Какже быть?
Подключаем не_совместимую с Linux USB-вебку и набираем команду убедиться, что она у нас уже есть в системе:

ls /dev/video*




1. mjpg_streamer - ретранслятор


Качай с источника mjpg-streamer-cubie или с моего MyDrive
Может пригодится оригинал mjpg-streamer-r63

Компиляция и запуск:
cd mjpg-streamer
sudo apt-get install libv4l-dev libv4l-0 libjpeg8-dev imagemagick
make USE_LIBV4L2=true clean all
export LD_LIBRARY_PATH=.
./mjpg_streamer -i "./input_uvc.so -f 30 -r 1280x720" -o "./output_http.so  -p 8080 -w ./www"
Ошибка...
ERROR:
Adding control for Pan (relative)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Но работает!!!
http://10.10.10.10:8080
top: CPU 3-5%

А если не работает, то, возможно, камера не поддерживает режим. Тогда в командную строку сходу добавляем "-y". Если не получилось, то смотрим режимы внимательней:
sudo apt-get install uvcdynctrl
uvcdynctrl -f

Автозапуск
Создаём файл /etc/init.d/mjpg_streamkick
#!/bin/sh

### BEGIN INIT INFO
# /etc/init.d/mjpg_streamkick
# Provides:          mjpg_streamer.sh
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: mjpg_streamer for webcam
# Description:       Streams /dev/video0 to http://IP/?action=stream
### END INIT INFO

ld_library_path=/home/user/mjpg-streamer
export LD_LIBRARY_PATH ld_library_path
export LD_LIBRARY_PATH=/home/user/mjpg-streamer

NAME=mjpg_streamer
DESC="M-JPEG Streamer"
DAEMON=/home/user/mjpg-streamer/mjpg_streamer
MJPG_QUALITY=85
MJPG_RESOLUTION=800x600
MJPG_FREQ=10
MJPG_VIDEO_DEVICE="/dev/video0 -y"
MJPG_OUTPUT=/home/user/mjpg-streamer/www
MJPG_OUTPUT_PORT=8080
USER_PASS=rv:rv

f_message(){
        echo "[+] $1"
        echo "      "
}


# Carry out specific functions when asked to by the system
case "$1" in
        start)
                f_message "Starting $DESC..."
                $DAEMON -b -i "input_uvc.so -d $MJPG_VIDEO_DEVICE -f $MJPG_FREQ -r $MJPG_RESOLUTION -q $MJPG_QUALITY " -o "output_http.so -p $MJPG_OUTPUT_PORT -w $MJPG_OUTPUT -c $USER_PASS -n "
                sleep 1
  echo ".."
                sleep 1
                f_message "$NAME Started!"
  /etc/init.d/mjpg_streamkick status
                ;;
        stop)
                f_message "Stopping $DESC..."
                killall mjpg_streamer
                f_message "$NAME Stopped!"
                ;;
        restart)
                f_message "Restarting $DESC..."
                killall $NAME
                f_message "$NAME Killing!"
                $DAEMON -b -i "input_uvc.so -d $MJPG_VIDEO_DEVICE -f $MJPG_FREQ -r $MJPG_RESOLUTION -q $MJPG_QUALITY " -o "output_http.so -p $MJPG_OUTPUT_PORT -w $MJPG_OUTPUT -c $USER_PASS -n "
                sleep 1
  echo ".."
                sleep 1
                f_message "$NAME Restarted!"
  /etc/init.d/mjpg_streamkick status
                ;;
        status)
                pid=`ps -A | grep $NAME | grep -v "grep" | grep -v $NAME. | awk '{print $1}' | head -n 1`
                if [ -n "$pid" ];
                then
                        f_message "$DESC Status:"
                        f_message "$DESC is running with pid ${pid}"
                        f_message "$NAME was started with the following command line"
                        cat /proc/${pid}/cmdline ; echo ""
                else
                        f_message "$DESC Status:"
                        f_message "Could not find $NAME running!"
                fi
                ;;
        *)
                f_message "Usage: $0 {start|stop|status|restart}"
                exit 1
                ;;
esac
exit 0

И... Внедряем
sudo chmod 755 /etc/init.d/mjpg_streamkick
sudo update-rc.d mjpg_streamkick defaults 







2. Motion - детектор движения, юзает на входе поток из ретранслятора.
sudo apt-get install motion

Конфигурация:
/etc/motion/motion.conf
netcam_url http://10.10.10.10:8080/?action=stream
width 1280
height 720
framerate 10
webcam_port 8880
webcam_localhost off
control_port 8881
control_localhost off
locate on                  # рисует рамку по движению
target_dir /tmp/motion     # директория для сохранения снапшотов

sudo motion
top: CPU 101-103%

Ещё почитать:

Несколько камер: http://ubuntuforums.org/showthread.php?t=1897786
Motion, использует дополнительные, спицифичные для каждой камеры, конфиги, подключаемые в основном файле конфигурации:
thread /etc/motion/thread0.conf
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf

thread1.conf
videodevice /dev/video1
text_left USBWebcam-1
target_dir /home/motion/images/webcam1
webcam_port 8881




Выход в люди:
Port Forwarding
DynDNS

Комментариев нет: