Решил я на старости лет поковырять линукс. Купил по случаю небольшой миникомп на Celeron 1.1 ГГц, 2 ГБ оперативы.
Воткнул туда Ubuntu 16.04
И захотелось мне сделать из юсб видеокамеры этакое всевидящее око (оно же видеоняня со звуком) для одной из комнат где постоянно "шалят" два моих малолетних бармалея.
Нашел в интернетах инструкции как при помощи ffmpeg и ffserver осуществлять видео трансляцию да со звуком. Вроде все просто. НО!
- Код: Выделить всё
cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xf7e00000 irq 32
1 [U0x46d0x824 ]: USB-Audio - USB Device 0x46d:0x824
USB Device 0x46d:0x824 at usb-0000:00:1d.0-1.2, high speed
2 [H2300 ]: USB-Audio - HP Webcam HD 2300
Hewlett Packard HP Webcam HD 2300 at usb-0000:00:1d.0-1.4, high speed
На одной камере которая определяется как HP Webcam HD 2300 все работает без проблем. Трансляция идет с небольшой задержкой (около 2-3 секунд) и со звуком.
Со второй камеры я могу получить или только картинку (причем довольно удобоваримого качества несмотря на "бренд" камеры) или только запись звука в файл.
вот мой ffserver.config (Да, честно содрал с примеров в тырнете)
- Код: Выделить всё
# Порт, на котором будет работать ffserver
HTTPPort 4444
# Адрес, на котором будет работать ffserver.
# Если указать 0.0.0.0 то будут использованы все доступные адреса
HTTPBindAddress 0.0.0.0
# Максимальное количество обслуживаемых соединений
MaxHTTPConnections 10
# Максимальное количество клиентов
MaxClients 10
# Максимальная используемая полоса (в килобитах)
MaxBandwidth 5000
# Файл журнала. Формат подобен формату лога apache
CustomLog /var/log/ffserver-access.log
# Описываем источник
<Feed webcam.ffm>
# Временный файл для хранения промежуточных данных
File /tmp/webcam.ffm
# Максимальный размер файла с промежуточными данными
FileMaxSize 5M
# Команда запуска ffmpeg для захвата видео с камеры и отправки ffserver-у.
# Адрес для отправки данных (localhost) автоматически будет добавлен в конец этой строки.
# (подробнее см. ниже).
Launch ffmpeg -s 1024x768 -f video4linux2 -i /dev/video1 -f alsa -i hw:2,0
#-i hw:1 -c 1
# -f alsa -i hw:1,0
# С каких адресов может обращаться источник. Если закоментировано - с любых.
# ACL allow 127.0.0.1
</Feed>
# Описываем поток. SWF-файл с FLV-потоком внутри.
<Stream webcam.flv>
# Источник потока
Feed webcam.ffm
# Используемый формат
Format flv
# Используемый кодек
# AudioCodec mp2
# Используемый кодек
VideoCodec flv
AudioBitRate 32
# 32
AudioChannels 1
AudioSampleRate 22050
# Частота кадров
VideoFrameRate 30
# Размер буфера
VideoBufferSize 128000
# Битрейт
VideoBitRate 300
# Минимальное и максимальное качество (1-лучшее, 31-худшее)
VideoQMin 1
VideoQMax 5
# Размер видео. Дожно совпадать с размером видео на источнике
VideoSize 1024x768
# Время ожидания перед началом отправки данных клиенту (в секундах)
PreRoll 0
# Если не нужно транслировать звук
# NoAudio
</Stream>
# При обращении к индексной странице ffserver будем отображать текущий статус сервера
<Stream index.html>
Format status
</Stream>
Если строку
- Код: Выделить всё
Launch ffmpeg -s 1024x768 -f video4linux2 -i /dev/video1 -f alsa -i hw:2,0
где /dev/video1 и hw:2,0 соответствует вебке от HP изменить на
- Код: Выделить всё
Launch ffmpeg -s 1024x768 -f video4linux2 -i /dev/video0 -f alsa -i hw:1,0
где /dev/video0 и hw:1,0 соответствует вебке от "бренда" то запуска трансляции не происходит.
Если конфиг переписать включив NoAudio и в строке с Launch убрать -f alsa -i hw:1,0 то видео стартует
Если просто попытаться записать звук с микрофона "брендовой" камеры в файл - то все нормально.
Если попробовать взять видео с камеры от НР а звук от бренда то в логе
- Код: Выделить всё
Mon Mar 6 11:28:03 2017 FFserver started.
Mon Mar 6 11:28:03 2017 Launch command line: ffmpeg -s 1024x768 -f video4linux2 -i /dev/video1 -f alsa -i hw:1,0 http://127.0.0.1:4444/webcam.ffm
а ffserver, для проверки, запущенный от sudo из окна терминала крашится с таким сообщением
- Код: Выделить всё
webcam.ffm: Pid 2198 exited with status 256 after 1 seconds
В syslog ничего по этому поводу нет, ну или я в силу малого опыта не увидел.
Вобщем буду признателен за любую помощь.
З.Ы. Можно было бы и НР камеру оставить, но почему-то у брендовой качество картинки чуть лучше и светочувствиветльность повыше.
З.З.Ы. Настройками камер игрался, все равно картинка с "брендовой" нравится боьше