Raspberry Pi 카메라에서 비디오를 스트리밍하여 실시간으로 보는 방법


93

나는 Raspberry Pi를 처음 사용하고 심지어 Raspberry Pi 카메라를 처음 사용합니다. Raspberry Pi 카메라에 대한 많은 온라인 자습서를 보았지만 웹캠을 사용하여 (SimpleCV 또는 OpenCV를 사용하여) Raspberry Pi 카메라에서 바로 스트리밍 할 수는 없습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랐습니다.


mjpgstreamer를 사용해 보셨습니까? 셸 솔루션을 게시합니까?
jaromrax

3
제로 지연 솔루션을 arelooking 사람들은 확인해야합니다 raspberrypi.stackexchange.com/a/32521/30681
igaurav

ssh 및 mpv가있는 경우 : ssh raspberrypi raspivid -o - -t 0 -fps 25 -w 640 -h 360 | mpv - --speed 2 --fps 25""-speed 2 "는 너무 느리게 유지되지 않습니다.
변성

답변:


81

Diego가 제안한 솔루션은 속도가 느리고 비디오가 지연되어 스트림이 스트리밍되지 않기 때문에 비디오 지연이 크다는 점을 제외하고는 좋습니다. 2013 년 12 월부터 공식 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}'

이것은 포트 12345에서 http 스트림을 생성합니다. Diego의 답변에서 rtcp 형식과 같은 다른 형식도 사용할 수 있습니다. 여기에서 더 읽어보십시오 : https://web.archive.org/web/20151012014829/http://www.videolan.org:80/doc/streaming-howto/en/ch03.html


2
답변 에서는 :demux=264스트림이 RAW h264이고 demuxer :를 설정해야하므로 cvlc 에 추가 하는 것이 좋습니다 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}' :demux=264. 예를 들어 Android 용 VLC에서 스트림을 볼 수 있습니다.
Jaime M.

8
제공된 링크에서, 대신 autoreconf -vfi다음을 사용해야합니다./bootstrap.sh
JuJoDi

1
비디오를 스트리밍하고 RPi SD 카드에 저장할 수있는 방법이 있습니까?
또는 와인 버거


4
나는이 방법이 헤드리스 환경에서 작동하지 않는다는 것을 주목 / 확인하는 것이 가치가 있다고 생각합니다. X11에 대해 이야기하는 오류가 발생했습니다.
Nick

41

선택할 수있는 몇 가지 옵션이 있습니다. 우리는 VLC를 사용하여 Raspberry Pi Camera로 캡처 한 비디오를 서버 실에서 사무실 로 스트리밍 하고 있습니다. 이것의 한 가지 단점은 약 5 초의 지연이 있으며 이에 대한 해결책을 찾지 못했다는 것입니다. 다음은 설정입니다 :

  1. raspbian을 설치하고 업데이트했으며 카메라가 활성화되어 있는지 확인하십시오 (sudo raspi-config를 실행하고 카메라 활성화를 선택하여 활성화하십시오).

    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. 스크립트를 실행 가능하게 만들기

    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를 엽니 다. 매체-> 네트워크 스트림 열기를 누르고 필드에 다음을 붙여 넣으십시오.

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

FPS (초당 프레임)에 신경 쓰지 않고 지연을 원하지 않으면 MJPEG를 사용할 수 있습니다. 여기 에 대한 자세한 내용을 읽을 수 있습니다

시계 라즈베리 파이 카메라 모듈에 대한 위키를. 원하는 것을 찾으시기 바랍니다.


Windows의 VLC에서 다음을 얻는 이유는 무엇입니까? 입력을 열 수 없습니다 : VLC가 MRL 'rtsp : //192.168.1.78 : 8554'를 열 수 없습니다. 자세한 내용은 로그를 확인하십시오. Pi-side는 정상인 것 같습니다. 오류가없고 연결된 클라이언트에 반응하는 것 같습니다.
monojohnny

@monojohnny 라즈베리 파이 스트리밍입니까? 화면을 연결하여 비디오가 실제로 작동하는지 확인하십시오. 비디오가 작동하면 화면의 스트림이 라즈베리 파이에 연결되어있는 것을 볼 수 있습니다.
Diego

@monojohnny 디에고를 써 주셔서 감사합니다 ... 첫 번째 시도에서 완벽하게 작동합니다! monojohnny ... 뒤에 "/"를 넣어야합니다. 그렇지 않으면 vlc가 불평합니다. 이것을보십시오 : rtsp : //192.168.1.78 : 8554 /
Phadke

고마워 @Diego 이것은 나를 위해 잘 작동하지만 어떻게 내 스트림을 종료합니까?
Denoteone

Windows에서 동일한 문제가 있으며 내 pi에서 비디오를 스트리밍 할 수 없습니다. pi에 연결된 화면에서 pi 카메라의 비디오 스트리밍을 볼 수 있지만 Windows 10 pc에 설치된 VLC를 통해 비디오를 볼 수는 없습니다.
Mostafa

23

몇 가지 옵션을 시도했습니다. 그러나 나는 그 프로젝트를 사용하여 최상의 결과를 찾았습니다 : eLinux 커뮤니티의 RPi-Cam-Web-Interface

스트림의 지연은 거의 없습니다.

행운을 빕니다 :)


4
지연 시간이없는 사람들은 반드시 확인하십시오. @ user2998302에 소품. 나는 1 년 동안 이것에 대한 찬성 (확인)을 믿을 수 없습니다.
igaurav

이것은 빠르고 쉬운 설정이지만 소프트웨어는 최적화되지 않았으므로 지연 시간이 짧고 (지연 시간이 0이 아님) 인터페이스는 매우 혼잡하며 추가 CPU주기를 사용합니다. 다른 것을 실행하지 않는 경우에는 문제가되지 않지만 특히 Pi 1을 사용하는 경우에는 문제가되지 않습니다.
Nick

대단해!
Hamza Ouaghad

지금까지 테스트 한 것 중 가장 빠른 웹 비디오 스트리밍 (vlc를 통해 스트리밍 된 기본 v4l2 드라이버), 거의 제로 레이턴시. 이 문제와 관련하여 인터넷상의 모든 리소스가이 응용 프로그램보다 더 나은 결과를 얻지 못하는 동안 최적화에 대해 불평 할 필요는 없습니다.
Gabber

와우, 나는이 바위를 인정해야한다!
L.Trabacchin

18

내가 찾은 가장 쉬운 방법은 헤드리스 라즈베리 파이에서 라즈베리 파이 카메라로 라이브 비디오 피드를 얻는 것입니다.

이 솔루션은 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가 PI의 IP 주소라고 가정)


라즈베리 파이에 오신 것을 환영합니다! Google은 일반적으로 답변을 한 질문에서 다른 질문으로 완전하게 복사하는 것을 권장하지 않습니다. 15 명의 답변에 도달하면 '복제'와 동일한 질문에 답변을 한 부만 표시 할 수 있습니다. 문제에 대한 답변을 공유해 주셔서 감사합니다.
Aurora0001

@Per Hansen 나를 위해 일하지 않고 ... 포트를 할당하는 것과 별도로해야 할 일이있을 수 있습니다.
Amit Ray

이것은 잘 작동합니다! RPi3B + 및 Raspbian 9.4 (스트레치) 헤드리스 사용.
dparkar

5

H264 캡처를 지원하는 V4L2 드라이버가 제공되는 live555 기반 의 경량 RTSP 서버를 사용하여 라즈베리 포럼 에서 가능한 솔루션을 게시했습니다 .

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

시차는 어떻습니까?
kuhajeyan

cvlc보다 짧습니다.
mpromonet

cmake는 프로젝트에 패키지를 몇 개 더 추가 할 때까지 "ALSA를 찾을 수 없습니다 (결측 : ALSA_LIBRARY ALSA_INCLUDE_DIR)"에 대해 불평했습니다. 해결책은 다음과 같습니다 : "sudo apt-get install libopus-dev libexpat1-dev libasound2-dev libudev-dev libavahi-client-dev"(제 생각에는 asound는 충분할 것입니다).
MoonCactus

아, 그리고 그것은 아주 잘 작동합니다 (경량 솔루션), 감사합니다. 시간 지연은 괜찮으며, 약 2 초 si 다른 솔루션과 비교하여 유리합니다.
MoonCactus

@ MoonCactus : ALSA 설치를 수정했다고 생각합니다 (libasound2-dev 만 필요합니다). 지체는 VLC를 사용하는 경우, 당신이 사용하는 네트워크 버퍼링을 줄일 수하는 초 이하이어야한다 --network-caching 300
mpromonet

4

UV4L (또한)은 구성없이 표준 HTML5 비디오 및 오디오 스트리밍을 지원합니다. http를 통한 MJPEG와 같은 다른 옵션도 가능합니다.

최신 정보:

UV4L은 이제 웹을 통해 Jitsi Meet Rooms로 라이브 오디오 및 비디오 방송 을 지원합니다 . 특별한 구성이 필요하지 않습니다. 이름, 방을 채우고 시작을 클릭하는 것만 큼 쉽습니다 .

두 번째 업데이트 :

UV4L은 이제 풀 FPS, HD 및 향후 Full HD에서도 H264 하드웨어 인코딩 비디오를 지원합니다.


1
유일한 것은, 당신은 거의 모든 것이 이해하지 못하는 원소 스트림 만 얻을 수 있다는 것입니다. 슬프게도 많이 사용하지 않습니다. 당신이 PI2있어 경우의 WebRTC (어떤을 방출하는 뭔가가 필요 이상에서는 UV4L 때와 수있는 당신이 이렇게 (때문에 제로) 전원 / 크기 제한의 당신의 SOL을 필요로하는 경우..
Svartalf

3

모두 mjpeg_streamermotioncvlc보다 대기 시간을 갖고있는 것 같다.

사용 mjpg_streamer

mjpeg_streamer 컴파일이 필요하지만 github의 지침은 간단합니다.

컴파일 후 start.sh프로젝트 디렉토리에서 시작 하거나 직접 (프로젝트 디렉토리에서) 실행하여 실행할 수 있습니다 .

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

8090TCP 포트는 어디에 있습니까 ? 지정하지 않으면 8080기본적으로 포트 가 사용됩니다. 이 start.sh스크립트에는 추가 옵션이있는 몇 가지 사용 예가 포함되어 있습니다.

사용 motion

Motion에는 시스템 서비스가 포함되어있어 부팅, 중지 또는 다시 시작할 때 자동으로 쉽게 시작할 수 있습니다.

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.


1

감시 소프트웨어를 찾고 있는지 모르겠지만 motion소프트웨어 동작 감지기 인 설치 및 실행에 성공했습니다 . 공식 안내서를 살펴 봐야합니다 .


모션은 USB 카메라에만 적용
geneorama

3
@geneorama motion은 USB 카메라로 제한되지 않은 video4linux 인터페이스를 사용하며 bcm2835-v4l2 모듈은이 인터페이스를 통해 카메라 보드에 액세스 할 수 있습니다.
mpromonet

1

Raspberry Pi 2에서 uv4l WebRTC를 사용하여 비디오를 스트리밍 할 수있었습니다 . 매우 쉽습니다. 튜토리얼을 따르십시오 . 도움이 되었기를 바랍니다.


링크 썩음을 방지하기 위해 튜토리얼의 관련 부분을 여기에 포함하십시오.
Bex

Pi2 이상에서만 적용 가능합니다. 1A / 1A + / Zero에서는 작동하지 않습니다. 아니 그는 사람들이 그것을 할 수있을 것 같다,하지만 헤이 ... 수 없기 때문에 이유를 완전히 확인
Svartalf

1

Windows 7에서 비디오 스트림을 얻는 데 문제가있었습니다. 많은 Linux 솔루션이 있었지만 지금까지는 Windows에서 복제 할 수 없었습니다. 나는 결국 매우 빠른 해결책을 얻었습니다.

  1. netcat의 Windows 버전 ( http://joncraton.org/files/nc111nt.zip )을 다운로드하여 압축을 풀고 경로에 추가하십시오.
  2. stdin에서 읽을 수있는 mpc-hc의 새 버전을 얻으십시오 : https://mpc-hc.org/downloads/ install 및 경로 경로도 추가하십시오 (광산은 64 비트이지만 32 비트는 잘됩니다 게다가)

라즈베리 파이에서 :

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 -

따라서, 나는 다시 포장되거나 리 스트리밍되거나 리 먹스 또는 그 무엇도 얻지 못한다고 생각합니다. raspvid의 이진 스트림은 mpc로 공급되어 표시됩니다. 내 라즈베리는 Wi-Fi를 통해 작동하므로 처음에는 공정한 지연이 발생합니다. 이는 30 분 안에 0.2-0.3 초 ​​지연으로 줄어 듭니다.

불행히도 nc -l -p 5001 | vlc -비디오없이 vlc 창을 여는 것처럼 동일한 방식으로 vlc를 사용할 수 없었습니다 .


1

카메라 입력을 처리하기 위해 avconv와 함께 세계 스트리밍을 위해 RTMP 지원과 함께 Nginx를 사용했습니다. 코드는 Github에서 사용할 수 있습니다 .


좋은 점은 비디오 시간 지연에 대한 경험이 있습니까?
kuhajeyan

2
예, 약 5 초의 지연이있었습니다.
TTT

0

Peter Hansen의 코드는 LAN에서 잘 작동하지만 완전성을 위해 TCP는 실시간 데이터 무결성과 관련이 있습니다. 실시간 스트림에서, 적시 디스플레이를 위해 일부 데이터 손실이 허용 될 수있다. 이 경우 UDP가 더 나을 수 있습니다. 나는 그 코드를 테스트하지 않았다.

보안 카메라 인 경우 멀티 캐스팅을 고려할 수 있습니다. 최신 라우터는 100 달러짜리 모델조차도 가능합니다.


0

README.md 의 지침에 따라 내 pi의 https://github.com/BreeeZe/rpos 에서 ONVIF 솔루션을 설치했습니다 .

유일한 차이점은 내가 설치했다는 것 node v8.4.0입니다. 이를 통해 동일한 네트워크에 연결된 NVR에서 카메라 출력을 볼 수 있습니다. 또한 주소를 사용하여 VLC 플레이어 네트워크 스트림을 통해 카메라를 직접 재생할 수 있습니다rtsp://192.168.1.3:8554/h264


0

잠시 동안 비슷한 문제가 발생했습니다.

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

다른 제안 된 솔루션보다 베어 본이지만 웹보다 낮은 대기 시간이 우선 순위라면 잘 작동한다고 생각합니다.

브라우저에 플러그인이 필요하지 않은 대부분의 브라우저 (480p의 모바일에서도)에서 작동합니다.


나는 디코더 자체, 별도의 프로젝트 github.com/mbebenita/Broadway를 쓰지 않았지만 놀랍게도 잘 최적화되어 있으며 대답에서 말했듯이 드로이드에서 480p를 쉽게 처리 할 수 ​​있습니다. Brodway와 함께한 이유는 rpi에 vp8 / 9 하드웨어 인코더가 없기 때문에 h264가 실제로 유일한 옵션입니다. 그러나 브라우저에서 기본 h264 디코더를 사용하려는 경우 낮은 대기 시간을 잊을 수 있습니다.
MatijaG

너무 놀랍게 들려서 시도 해봐야합니다.
kwasmich

모든 의견은 매우 환영합니다 :)
MatijaG

이제야 여가 시간이있었습니다. raspivid카메라 피드로 예제를 실행하는 데 문제가 있습니다. 와 ffmpeg반면에 난 그냥 초당 프레임의 십분의 일을 얻고있다. 깨끗한 Raspbian과 Pi Zero를 사용했습니다. 나에게 힌트가 있습니까?
kwasmich

예. ffmpeg를 사용하면 하드웨어 가속이 없기 때문에 계속 될 것입니다. 다음을 사용하여 예제를 실행 해보십시오. node example/index.js raspivid문제가있는 경우 즉시 node example/index.js개별적으로 실행 /opt/vc/bin/raspivid -pf baseline -ih -t 0 -w 640 -h 480 -hf -fps 15 -g 30 -o - | nc localhost 5000해보고 raspivid에서 오류가 발생하는지 확인하십시오.
MatijaG
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.