Передача відео з IP-камер D-Link, Freelance Karelia

Працювати це мало наступним способом:
- З камери формується MJPEG поток, забираючи поточний кадр /cgi-bin/video.jpg. Для цього використається детектор Motion. Це програмне рішення підкупило мене своєю легкістю, швидкістю, а також досить гнучкою функціональністю.
- Далі ffmpeg конвертує MJPEG-потік у flv і віддає flv-потік за допомогою ffserver.
- У потрібну сторінку HTML вбудовується FLV-плеєр, який і показує картинку.
Докладніше про процес встановлення та конфігурування цього добра на Debian 4.0:
1. Підготовка: Додаємо до /etc/apt/sources.list репозиторій debian-multimedia
2. Конфігурація motion (/etc/motion/motion.conf): Сам Motion, взагалі кажучи, це програмний детектор руху. У нього досить багато цікавих налаштувань та опцій. Конфігурація відбувається за допомогою файлу /etc/motion/motion.conf.
# Включаємо демон daemon on quiet on
# Вказуємо URL кадру камери # і, якщо необхідно, логін і пароль netcam_url http://IP-АДРЕСА/cgi-bin/video.jpg netcam_userpass admin: adminpass # Напис зліва text_left Test
# Розмір кадру з камери w >704 height 576
# Частота кадрів. Іншими словами, максимальна кількість кадрів забирається # з камери в секунду framerate 5 # Якість картинки, що забирається quality 100 # Відключаємо автояркість auto_brightness off
brightness 0 contrast 0 saturation 0 hue 0
# Відключаємо використання ffmpeg у реальному часі ffmpeg_cap_new off
# Директорія, де зберігаємо знімки та фільми target_dir /var/lib/motion/snapshots
# Включаємо сервер, що транслює MJPEG-потікна порту 8081 webcam_port 8081
# Роздільна здатність з'єднання з MJPEG-потоком # Якщо ffmpeg на іншому IP, то ставимо off. Інакше - on webcam_localhost off
# Якість MJPEG-потоку, що видається webcam_quality 100 # Частота кадрів потоку, що видається webcam_maxrate 5
Перевірити наявність MJPEG-потоку, наприклад, можна за допомогою VLC media player.
3. Конфігурація ffserver: Налаштування ffserver відбувається через файл /etc/ffserver.conf:
# Порт, на якому слухатиме ffserver і віддаватиме flv-потік Port 8080
# Інтерфейс прив'язки ffserver'а (у разі - все) BindAddress 0.0.0.0
# Максимально дозволена кількість клієнтів MaxClients 1000
# Пропускна здатність в kbit/sec MaxBandw >100000
# Файл журналу CustomLog /var/log/ffservser.log . # Описуємо feed File /tmp/feed1.ffm FileMaxSize 10M . # Потік Flash Video # Описуємо його параметри (bitrate, framerate, buffersize і т.д.) Feed feed1.ffm Format flv VideoCodec flv # VideoFrameRate 4 VideoSize 4cif V &2000 #Qscale 2 #VideoBufferSize 256 #VideoQMin 10 #VideoQtrax 10 #Video1>NoAudio . # Можна увімкнути статистику Format status # Ви можете отримати лише статуї #ACL allow localhost ACL allow .
4. Скрипти запуску та зупинки ffmpeg та ffserver: Для запуску та зупинки ffmpeg та ffserver створюємо прості shell-скрипти. start_ffmpeg.sh:
# Запускаємо ffserver /usr/bin/ffserver; # Запускаємо ffmpeg /usr/bin/ffmpeg -s 4cif -y -an -r 4 -f mjpeg -i http:// 127.0.0.1: 8081 / stream.mjpg http:// IP-АДРЕСА: 8080 / feed1.ffm &
# Для простоти. 8) killall ffserver; killall ffmpeg;
FlowPlayerLight.swf можна взяти тут. Бібліотекуswfobject.js - тут.
Можна, звичайно, і просто вбудувати FLV-плеєр HTML-код через Embed і Object.
Дуже важлива зауваження: швидше за все доведеться погратися з framerate, bitrate та іншими параметрами у ffserver.conf і в скрипті запуску. Мені довелося довго повозитися, підбираючи нормальні значення, оскільки виникали проблеми з програванням потоку в FLV-плеєрі.
6. Тепер все готове до пробного запуску: Запускаємо motion
Запускаємо ffserver та ffmpeg
Відкриваємо у браузері index.html і дивимося, чи відображається зображення з камери.