Как транслировать видео с камеры Raspberry Pi и смотреть его вживую

Я новичок в Raspberry Pi и даже новичок в малиновой Pi-камере. Я видел много обучающих программ в Интернете для камеры Малины Pi, но еще не нашел, что позволяет мне транслировать прямо из камеры Raspberry Pi, как вы можете, с помощью веб-камеры (используя SimpleCV или OpenCV). Надеюсь, кто-то может указать мне в правильном направлении.

81 голос | спросил BuddingEngineer 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 08 Sep 2014 13:41:09 +0400 2014, 13:41:09

14 ответов


69

Решение, предложенное Диего, хорошо, за исключением того, что оно довольно медленное и имеет огромную задержку видео, так как vlc реверсирует поток raspvid. С 12/2013 существует официальный драйвер v4l2: http: //www.ics.com/blog/raspberry-pi-camera-module#.VJFhbyvF-b8 Это приводит к тому, что указанное повторное потоковое использование устарело. Просто загрузите модуль и используйте его:

sudo modprobe bcm2835-v4l2
cvlc v4l2:///dev/video0 --v4l2-width 1920 --v4l2-height 1080 --v4l2-chroma h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:12345}'

Это создает поток HTTP на порту 12345, вы также можете использовать другие форматы, например, rtcp из ответа Диего. Подробнее об этом читайте здесь: https://web.archive.org/web/20151012014829/http://www.videolan.org:80/doc/streaming-howto/en/ch03.html

ответил Lao 17 WedEurope/Moscow2014-12-17T14:15:24+03:00Europe/Moscow12bEurope/MoscowWed, 17 Dec 2014 14:15:24 +0300 2014, 14:15:24
33

Существует несколько вариантов выбора. В моей работе мы используем VLC для потокового видео, снятого Малиновой Pi-камерой из наших серверных комнат в офис. Один из недостатков этого заключается в том, что есть задержка в 5 секунд, и я не нашел для этого решения. Ниже приведена наша настройка:

  1. Установите и обновите raspbian и убедитесь, что ваша камера включена (вы активируете это, запустив sudo raspi-config и выберите Enable Camera)

    sudo apt-get update
    sudo apt-get upgrade
    
  2. Установить vlc

    sudo apt-get install vlc
    
  3. Создайте сценарий для запуска потока со следующим контентом или запустите команду (вы не можете ничего сделать, если вы просто запустите команду).

    sudo nano myscript.sh
    raspivid -o - -t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264
    
  4. Сделать скрипт runable

    sudo chmod +x myscript.sh
    
  5. Если вы хотите запустить поток автоматически, вы должны добавить скрипт к crontab. Чтобы выполнить эту работу, мне пришлось сделать еще один скрипт, запущенный cron (OBS! VLC не может быть запущен как sudo, поэтому убедитесь, что вы находитесь в правом cron). sudo nano myscript2.sh:

    #!/bin/bash
    /path/to/myscript.sh
    

    Тогда:

    sudo chmod +x myscript2.sh
    crontab -e
    @reboot /path/to/myscript2.sh
    
  6. Чтобы посмотреть видеопоток, откройте VLC на компьютере в той же сети, что и малина pi, которую вы используете для потоковой передачи. Пресс-медиа -> Откройте Networkstream и вставьте следующее в поле:

    rtsp://[IP].[TO].[THE].[PI]:8554/
    

Если вы не заботитесь о FPS (кадры в секунду) и не хотите никакой задержки, вы можете использовать MJPEG. Вы можете узнать больше об этом ЗДЕСЬ

Смотрите ЭТО wiki о модуле камеры малины Pi. Надеюсь, вы найдете то, что ищете.

ответил Diego 9 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 09 Sep 2014 10:56:36 +0400 2014, 10:56:36
18

Я попробовал некоторые варианты. Однако я нашел лучший результат, используя этот проект: RPi-Cam-Web-интерфейс из сообщества eLinux

поток имеет почти нулевую задержку.

удачи:)

ответил user2998302 15 J0000006Europe/Moscow 2015, 11:03:21
13

Самый простой способ, который я нашел, - получить живой видеоролик из безглазной малины pi с малиновой пи-камерой.

Это решение работает прямо из коробки, без установки дополнительного программного обеспечения на PI.

В PI:

raspivid -t 0 -l -o tcp://0.0.0.0:3333

На компьютере можно передавать с помощью VLC:

vlc tcp/h264://192.168.66.154:3333

(предполагается, что 192.168.66.154 - IP-адрес PI)

ответил Per Hansen 25 PM00000010000005531 2017, 13:09:55
5

Я разместил возможное решение в форум малины , используя легкий сервер RTSP на основе live555 , который питается драйвером V4L2, поддерживающим захват H264:

sudo modprobe -v bcm2835-v4l2
git clone https://github.com/mpromonet/v4l2rtspserver.git
cd v4l2rtspserver
cmake .
make install
v4l2rtspserver -H <height> -W <width> -F <fps>

Затем вы должны иметь доступ к потоку RTSP, используя:

vlc rtsp://<raspberry>:8554/unicast
ответил mpromonet 14 PMpTue, 14 Apr 2015 23:24:41 +030024Tuesday 2015, 23:24:41
2

UV4L (также) поддерживает стандартное видео и аудио потоковую передачу HTML5 без необходимости настройки. Возможны и другие варианты, такие как MJPEG через http.

Update:

UV4L теперь также поддерживает живое аудио & амп; видео трансляция в Jitsi Meet Rooms через Интернет. Специальная настройка не требуется. Это так же просто, как заполнить свое имя, комнату и щелкнуть по Пуск .

Второе обновление:

UV4L теперь поддерживает также аппаратное кодирование с поддержкой H264, с полным fps, HD и, возможно, Full HD в будущем.

ответил prinxis 1 Mayam15 2015, 02:52:16
1

Я не знаю, ищете ли вы программное обеспечение для наблюдения, но мне удалось установить и запустить motion , программный детектор движения. Вы должны посмотреть в официальном руководстве .

ответил Morgan Courbet 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 08 Sep 2014 16:21:47 +0400 2014, 16:21:47
1

Мне удалось передать видео с помощью uv4l WebRTC on Raspberry Pi 2. Это очень просто. Просто выполните этот учебник. Я надеюсь, что эта помощь.

ответил bdsys 10 J000000Friday15 2015, 17:35:43
1

У меня возникли проблемы с получением видеопотока на окнах 7. Было много решений linux, но я не мог реплицировать их в окнах до сих пор. В конце концов, я получил довольно быстрое решение:

  1. получить версию netcat для Windows: http://joncraton.org/files/nc111nt.zip, разархивируйте его и добавьте в путь
  2. получить новую версию mpc-hc, которая может быть прочитана из stdin: https: //mpc-hc. org /downloads / и добавить свой путь к пути (мой 64-разрядный, но 32-разрядный, как мы надеемся, также сделает).

На малине pi:

raspivid -t 0 -w 1024 -h 768 -fps 20 -b 1000000 -o - | nc your.receiver.ip.address 5001

На машине Windows:

nc -l -p 5001 | mpc-hc64 -

Таким образом, я считаю, что ничто не переупаковывается или не перегорает, не ремусируется или что-то такое. Двоичный поток из rvvvid подается в mpc и показан. Моя малина работает по Wi-Fi, поэтому сначала я получаю справедливую задержку, которая в течение половины минуты сокращается до задержки 0,2-0,3 секунды.

К сожалению, я не мог использовать vlc таким же образом, как nc -l -p 5001 | vlc - просто открывает окно vlc без какого-либо видео.

ответил Grigory Makeev 28 PMpTue, 28 Apr 2015 21:46:11 +030046Tuesday 2015, 21:46:11
1

Я использовал Nginx с поддержкой RTMP для потоковой передачи в мир вместе с avconv для обработки ввода камеры. Код доступен на Github .

ответил TTT 22 72015vEurope/Moscow11bEurope/MoscowSun, 22 Nov 2015 21:15:41 +0300 2015, 21:15:41
1

Оба mjpeg_streamer и motion , похоже, имеет лучшую задержку, чем cvlc.

Использование mjpg_streamer

mjpeg_streamer требует компиляции, но инструкции в github просты.

После компиляции его можно запустить, запустив start.sh из dir проекта или непосредственно запустив (в директории проекта):

 ./mjpg_streamer -i "./input_uvc.so -rot 180" -o "./output_http.so -w ./www -p 8090"

где 8090 - это порт TCP. Если не указано, то по умолчанию используется порт 8080. Скрипт start.sh содержит некоторые примеры использования с дополнительными параметрами.

Использование motion

Motion включает службу systemd, которая упрощает автозапуск при загрузке, остановке или перезапуске.

Чтобы использовать его в режиме веб-камеры IP, в /etc/motion/motion.conf следует установить следующие параметры:

 daemon on
stream_localhost off
output_pictures off
ffmpeg_output_movies off
stream_maxrate 24
framerate 24
width 640
height 480

Далее, в /etc/default/motion установите:

 start_motion_daemon=yes

Чтобы сделать автозапуск службы при загрузке:

 systemctl enable motion

Используйте systemctl start/stop/restart motion для соответствующего действия.

Потоковый порт по умолчанию - 8081. Порт установлен в stream_port в /etc/motion/motion.conf.

ответил ccpizza 1 32017vEurope/Moscow11bEurope/MoscowWed, 01 Nov 2017 00:27:02 +0300 2017, 00:27:02
0

В то время как код Петра Хансена, возможно, отлично работает в локальной сети, для полноты: TCP - это целостность данных по сравнению с реальным временем. В режиме реального времени некоторые потери данных могут быть приемлемыми для своевременного отображения. В этом случае UDP может быть лучше. Я не тестировал этот код.

Если это камера безопасности, может быть рассмотрена многоадресная рассылка. Современные маршрутизаторы могут сделать это даже на $ 100.

ответил Bill 11 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 11 Sep 2017 19:33:40 +0300 2017, 19:33:40
0

Я установил решение ONVIF из https://github.com/BreeeZe/rpos на моем пие, следуя инструкциям на README.md .

Единственное различие заключается в том, что я установил node v8.4.0. Это позволяет мне видеть вывод моей камеры в NVR, подключенном к одной сети. Кроме того, камеру можно напрямую воспроизводить через сетевой поток проигрывателя VLC, используя адрес rtsp://192.168.1.3:8554/h264

ответил KrIsHnA 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 17 Sep 2017 13:08:54 +0300 2017, 13:08:54
0

В то время как у go возникла аналогичная проблема, это:

https://www.npmjs.com/package/ws-avc-player

Это больше, чем другие предлагаемые решения, но я думаю, что это хорошо работает, если приоритетом является низкая латентность по сети.

Работает на большинстве браузеров (даже на мобильных устройствах 480p) без каких-либо плагинов, необходимых в браузере.

ответил MatijaG 7 MarpmWed, 07 Mar 2018 13:44:14 +03002018-03-07T13:44:14+03:0001 2018, 13:44:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132