Ранее Уважаемый Eduard Sallo [Edward] уже рассказал в статье Установка Homebridge на Raspberry. Версия для начинающих как быстро и просто установить Homebridge на микрокомпьютер Raspberry PiЕсли у вас завалялась USB Web камера, по почему бы не попробовать подключить ее к homebridge для последующего отображения в приложении Дом ваших iOS устройств. Я без проблем подключил HP Webcam 3110.Нам понадобиться Малинка c установленным homebridge и плагином homebridge-camera-ffmpeg, а так же Putty для работы с терминалов малинки.Первым делом подключаем к RaspberryPi (я бы рекомендовал использовать модель Raspberry Pi 3b) вашу камеру , желательно в USB порты которые находятся дальше от Ethernet порта
Затем подключаемся через Putty к вашей малинке, в программе нужно указать ip адрес малины и выбрать тип подключения SSH. После подключения нужно ввести ваш логин это как правило pi и пароль, если не меняли со стандартного то raspberry.Вводим команду - она открывает доступ пользователю под которым запущен homebridge к камере
sudo usermod -aG video pi
На всякий случай перезагрузите малинку и снова подключитесь к ее терминалу, теперь проверим работает ли ваша камера, для его вводим команду:
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -pix_fmt yuv420p -c:v h264_omx output.mkv
если камера работает то в терминале вы увидите следующее:
ffmpeg version N-90468-g0dc11d8bbd Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.3.0 (Raspbian 6.3.0-18 rpi1 deb9u1) 20170516
configuration: --prefix=/usr/local --arch=armel --target-os=linux --enable-omx-rpi --enable-nonfree --enable-gpl --enable-libfdk-aac --enable-mmal --enable-libx264 --enable-decoder=h264 --enable-network --enable-protocol=tcp --enable-demuxer=rtsp
libavutil 56. 12.100 / 56. 12.100
libavcodec 58. 16.100 / 58. 16.100
libavformat 58. 10.100 / 58. 10.100
libavdevice 58. 2.100 / 58. 2.100
libavfilter 7. 13.100 / 7. 13.100
libswscale 5. 0.102 / 5. 0.102
libswresample 3. 0.101 / 3. 0.101
libpostproc 55. 0.100 / 55. 0.100
[video4linux2,v4l2 @ 0x2822290] The driver changed the time per frame from 1/30 to 1/10
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 112245.051873, bitrate: 147456 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, 147456 kb/s, 10 fps, 10 tbr, 1000k tbn, 1000k tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_omx))
Press [q] to stop, [?] for help
[h264_omx @ 0x2825700] Using OMX.broadcom.video_encode
Output #0, matroska, to 'output.mkv':
Metadata:
encoder : Lavf58.10.100
Stream #0:0: Video: h264 (h264_omx) (H264 / 0x34363248), yuv420p, 1280x720, q=2-31, 200 kb/s, 10 fps, 1k tbn, 10 tbc
Metadata:
encoder : Lavc58.16.100 h264_omx
frame= 6 fps=0.0 q=-0.0 size= 1kB time=00:00:00.50 bitrate= 11.4kbits/frame= 11 fps= 11 q=-0.0 size= 1kB time=00:00:01.00 bitrate= 5.7kbits/frame= 16 fps= 10 q=-0.0 size= 24kB time=00:00:01.50 bitrate= 133.2kbits/frame= 21 fps= 10 q=-0.0 size= 24kB time=00:00:02.00 bitrate= 99.9kbits/frame= 26 fps= 10 q=-0.0 size= 51kB time=00:00:02.50 bitrate= 165.7kbits/frame= 31 fps= 10 q=-0.0 size= 51kB time=00:00:03.00 bitrate= 138.1kbits/frame= 36 fps= 10 q=-0.0 size= 51kB time=00:00:03.50 bitrate= 118.3kbits/frame= 41 fps= 10 q=-0.0 size= 86kB time=00:00:04.00 bitrate= 177.0kbits/frame= 46 fps= 10 q=-0.0 size= 86kB time=00:00:04.50 bitrate= 157.4kbits/frame= 51 fps= 10 q=-0.0 size= 118kB time=00:00:05.00 bitrate= 192.7kbits/frame= 56 fps= 10 q=-0.0 size= 118kB time=00:00:05.50 bitrate= 175.2kbits/frame= 61 fps= 10 q=-0.0 size= 118kB time=00:00:06.00 bitrate= 160.6kbits/frame= 66 fps= 10 q=-0.0 size= 148kB time=00:00:06.50 bitrate= 186.5kbits/frame= 71 fps= 10 q=-0.0 size= 148kB time=00:00:07.00 bitrate= 173.2kbits/frame= 76 fps= 10 q=-0.0 size= 177kB time=00:00:07.50 bitrate= 193.4kbits/frame= 81 fps= 10 q=-0.0 size= 177kB time=00:00:08.00 bitrate= 181.3kbits/frame= 86 fps= 10 q=-0.0 size= 206kB time=00:00:08.50 bitrate= 198.1kbits/frame= 92 fps= 10 q=-0.0 size= 206kB time=00:00:09.10 bitrate= 185.0kbits/frame= 96 fps= 10 q=-0.0 size= 206kB time=00:00:09.60 bitrate= 175.4kbits/frame= 101 fps= 10 q=-0.0 size= 235kB time=00:00:10.10 bitrate= 190.7kbits/frame= 105 fps=9.9 q=-0.0 Lsize= 262kB time=00:00:10.60 bitrate= 202.1kbits/s speed= 1x
video:260kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.688294%
для остановки нажмите q, а в папке /home/pi/ будет лежать файл output.mkv - если его скачать например с помощью программы WinSCP, то можно посмотреть его в медиаплеере.Если ничего из вышеуказанного не получилось, то скорее всего ваша камера не поддерживается ядром Linux на котором работает малинка, тогда можно попробовать поискать драйвера для нее в интернете.Если с видео все порядке, то переходим к подключению камеры к homebridge - для этого добавляем в ваш config.json следующие строки, не забывая про правильное форматирование:
{
"platform": "Camera-ffmpeg",
"cameras": [ {
"name": "Камера Web",
"videoConfig": {
"source": "-f v4l2 -r 20 -s 1280x720 -i /dev/video0",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 20,
"maxBitrate": 1536,
"vcodec": "h264_omx"
}
}
]
}
Перезапускайте бридж и добавляйте камеру в Дом - в приложении жмем на " " в верхнем правом углу,
далее добавить аксессуар и затем выбирайте "Нет кода или не можете сканировать?" - появится камера, тапаете по ней и вводите пин код от вашего моста. На этом все - камера будет работать. Теперь можете поместить ее в комнату с датчиком движения и на датчике активировать "Допуск уведомлений". Когда датчик зафиксирует движение, то вам на телефон придет уведомление с кадром с камеры, по тапу на которое у вас откроется прямая трансляция с камеры.
????????????
Вторая жизнь старым вещам ;)
нужна возможность редактировать статьи, а то очепатки вылезают
а так же https://sprut.ai/client/article/59">Putty для работы с терминалов малинки.
Кстати легко подключилась камера от PlayStaion 3., Можно одновременно использовать несколько USB камер, просто тогда в конфиге дописываем для второй и тд камеры свой блок заменив только
на
и так далее
А есть хотя бы приблизительный перечень совместимых камер или на что обращать внимание при покупке камеры под такое дело?
На сайте плагина ffmpeg на GitHub есть список с протестированными камерами.
отличная статья. спасибо автору. по моему любая завалявшаяся вебкамера подойтёт
Спасибо!
Подскажите пожалуйста, как? Не могу пробросить поток с видеорегистратора
[12/22/2018, 6:39:31 PM] [Camera-ffmpeg] Start streaming video from Peephole with 1280x720@299kBit
ffmpeg -rtsp_transport tcp -y -i rtsp://10.1.1.9:554/user=user&password=user&channel=1&stream=0.sdp -map 0:0 -vcodec h264_omx -pix_fmt yuv420p -r 20 -f rawvideo -tune zerolatency -vfscale=1280:720 -b:v 299k -bufsize 299k -payload_type 99 -ssrc 14522480 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params OE6rCjHb2BFM4hnd4LwCNfeT3zBLO0ibPvOWcBP3 srtp://10.1.1.5:49713?rtcpport=49713&localrtcpport=49713&pkt_size=1316
ffmpeg version N-92712-g011c9112a0 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.3.0 (Raspbian 6.3.0-18+rpi1+deb9u1) 20170516
configuration: --prefix=/usr/local --arch=armel --target-os=linux --enable-omx-rpi --enable-nonfree --enable-gpl --enable-libfdk-aac --enable-mmal --enable-libx264 --enable-decoder=h264 --enable-network --enable-protocol=tcp --enable-demuxer=rtsp
libavutil 56. 24.101 / 56. 24.101
libavcodec 58. 42.102 / 58. 42.102
libavformat 58. 24.101 / 58. 24.101
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 46.101 / 7. 46.101
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
[rtsp @ 0x353c490] Nonmatching transport in server reply
rtsp://10.1.1.9:554/user=user&password=user&channel=1&stream=0.sdp: Invalid data found when processing input
[12/22/2018, 6:39:31 PM] [Camera-ffmpeg] ERROR: FFmpeg exited with code 1
Отвечу сам на свой вопрос, может кому пригодиться.
VLC оказался единственным плеером, который смог воспроизвести поток с моего видео-регистратора, данный способ почти не требует ресурсов для кодирования и может использоваться для ретрансляции почти любого видео потока, перепробовал более 30 разных источников видео трансляций из интернета )
Установка:
apt install vlc
Настройка ретрансляции:
touch /home/pi/.scripts/ip_cam_vlc1.sh
chmod +x /home/pi/.scripts/ip_cam_vlc1.sh
nano /home/pi/.scripts/ip_cam_vlc1.sh
В /home/pi/.scripts/ip_cam_vlc1.sh добавляем строчку:
#!/bin/bash
cvlc -d "rtsp://10.1.1.9:554/user=user&password=user&channel=1&stream=0.sdp" --http-reconnect --loop --repeat --sout "#rtp{sdp=rtsp://:8088}"
sleep 5
cvlc -d "rtsp://10.1.1.9:554/user=user&password=user&channel=3&stream=0.sdp" --http-reconnect --loop --repeat --sout "#rtp{sdp=rtsp://:8089}"
где rtsp://10.1.1.9:554/user=user&password=user&channel=1&stream=0.sdp - ссылки на потоки с ip-камер с именем пользователя и паролем
rtsp://:8088/ - ссылка на rtsp-поток с сервера, на который установлен vlc
-d - запускать в режиме демона
--http-reconnect --loop --repeat ключи для восстановления соединения после разрыва или проблемах сети
Созданный скрипт нельзя запускать из под root! Добавляем
в автозагрузку из под обычного пользователя "pi"
sudo nano
/etc/rc.local
В
/etc/rc.local добавляем строчку перед exit 0
:
sudo -u pi /home/pi/.scripts/ip_cam_vlc1.sh
В /home/pi/.homebridge/config.json добавляем строчку:
{
"platform": "Camera-ffmpeg",
"cameras": [
{
"name": "Peephole",
"videoConfig": {
"source": "-re -i rtsp://127.0.0.1:8088/",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 20,
"maxBitrate": 1536,
"vcodec": "h264_omx"
}
},
{
"name": "Entrance",
"videoConfig": {
"source": "-re -i rtsp://127.0.0.1:8089/",
"maxStreams": 2,
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 20,
"maxBitrate": 1536,
"vcodec": "h264_omx"
}
}
]
}
Перезагружаемся.
Вот код сервиса под названием vlc1.service, который размещен в /etc/systemd/system
[Unit]
Description=vlc1 Service on %I
After=network.target
[Service]
Type=simple
KillSignal=HUP
User=pi
SyslogIdentifier=vlc1_%i
ExecStart=/usr/bin/cvlc "rtsp://10.1.1.9:554/user=user&password=user&channel=1&stream=0.sdp" --http-reconnect --loop --repeat --sout "#rtp{sdp=rtsp://:8088}"
#Restart=always
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
Теперь нужно установить правильные права на файл:
# sudo chmod 644 /etc/systemd/system/vlc1.service
Команды
# sudo systemctl start vlc1
# sudo systemctl enable vlc1
# sudo systemctl restart vlc1
Посмотреть статус можно
# systemctl status vlc1
Подобное можно реализовать в HomeAssistant?
как ускорить запуск прямого эфира в таком случае?