Предаване на видео от IP камери D-Link, Freelance Karelia

Трябваше да работи по следния начин:
- От камерата се формира MJPEG поток, който взема текущия кадър /cgi-bin/video.jpg. За целта се използва детекторът за движение. Това софтуерно решение ме подкупи със своята лекота, бързина и доста гъвкава функционалност.
- След това ffmpeg преобразува MJPEG потока във flv и обслужва flv потока с помощта на ffserver.
- В необходимата HTML страница е вграден FLV плейър, който показва изображението.
Ще опиша по-подробно процеса на инсталиране и конфигуриране на тази доброта на Debian 4.0:
1. Подготовка: Добавете хранилището на debian-multimedia към /etc/apt/sources.list
2. конфигурация на движение (/etc/motion/motion.conf): Самото движение обикновено е софтуерен детектор на движение. Има доста интересни настройки и опции. Конфигурирането се извършва чрез файла /etc/motion/motion.conf.
# Включете демона daemon on quiet on
# Посочете URL адреса на рамката на камерата # и, ако е необходимо, потребителското име и паролата netcam_url http : //IP-ADDRESS/cgi-bin/video.jpg netcam_userpass admin : adminpass # Текст отляво text_left Тест
# Размер на получен кадър от камера w >704 височина 576
# Честота на кадрите. С други думи, максималният брой кадри, взети от камерата, е # в секунда framerate 5 # Качество на заснетото изображение качество 100 # Деактивиране на автоматичната яркост auto_brightness изключен
яркост 0 контраст 0 наситеност 0 оттенък 0
# Изключете използването на ffmpeg в реално време ffmpeg_cap_new off
# Директория, където съхраняваме моментни снимки и филми target_dir /var/lib/motion/snapshots
# Включете сървъра, който излъчва MJPEG потокана порт 8081 webcam_port 8081
# Разрешаване на връзка с MJPEG поток # Ако ffmpeg е на друг IP, тогава стартирайте. В противен случай - на webcam_localhost изключено
# Качество на изходния MJPEG поток webcam_quality 100 # Скорост на кадрите на изходния поток webcam_maxrate 5
Можете да проверите наличието на MJPEG поток, например, като използвате мултимедийния плейър VLC.
3. Конфигурация на ffserver: FFserver се конфигурира чрез файла /etc/ffserver.conf:
# Порт, където ffserver ще слуша и изпраща flv поток Порт 8080
# интерфейс за свързване на ffserver (в този случай всичко) BindAddress 0.0.0.0
# Максимален разрешен брой клиенти MaxClients 1000
# Широчина на честотната лента в kbit/sec MaxBandw >100000
# Регистрационен файл CustomLog /var/log/ffserver.log . # Описващ канал Файл /tmp/feed1.ffm Максимален размер на файла 10M . # Флаш видео поток # Опишете неговите параметри (битрейт, честота на кадрите, размер на буфера и т.н.) Feed feed1.ffm Формат flv VideoCodec flv #VideoFrameRate 4 VideoSize 4cif V >2000 #Qscale 2 #VideoB ufferSize 256 #VideoQMin 10 #VideoQMax 10 #VideoIntraOnly PreRoll 0 NoAudio . # Можете да активирате статистика Статус на форматиране # Разрешете само на местни хора да получават статуса #ACL разрешите localhost ACL разрешите .
4. Стартиране и спиране на скриптове за ffmpeg и ffserver: За да стартираме и спираме ffmpeg и ffserver, ние създаваме прости скриптове на обвивката. 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) убийте всички ffserver; killall ffmpeg;
FlowPlayerLight.swf можете да намерите тук. Библиотекатаswfobject.js е тук.
Можете, разбира се, просто да вградите FLV плейъра в HTML кода, като използвате Embed и Object.
Много важна забележка: най-вероятно ще трябва да си поиграете с честота на кадрите, битрейт и други параметри в ffserver.conf и в стартовия скрипт. Трябваше да се занимавам дълго време, избирайки повече или по-малко нормални стойности, защото имаше проблеми с възпроизвеждането на потока във FLV плейъра.
6. Сега всичко е готово за пробно изпълнение: Стартиране на движение
Стартирайте ffserver и ffmpeg
Отваряме index.html в браузъра и гледаме дали се показва изображението от камерата.