Ahududu Pi kameradan video akışı ve canlı izle


93

Ahududu Pi için yeni ve hatta Ahududu Pi kamera için yeni. Raspberry Pi kamera için çevrimiçi olarak çok sayıda ders gördüm ama henüz bir web kamerasıyla (SimpleCV veya OpenCV kullanarak) yapabildiğiniz gibi doğrudan Raspberry Pi kameradan akış yapmama izin veriyor. Birinin beni doğru yöne götürebileceğini umuyordum.


mjpgstreamer'ı denedin mi? Shell çözümü yolladım mı?
jaromrax

3
Sıfır gecikme çözümü
arayanlar

Eğer ssh ve mpv'niz varsa: ssh raspberrypi raspivid -o - -t 0 -fps 25 -w 640 -h 360 | mpv - --speed 2 --fps 25("--speed 2", çok fazla gecikmesini önler).
Metamorfik

Yanıtlar:


81

Diego tarafından önerilen çözüm, oldukça yavaş olması ve çok büyük bir video gecikmesi olması dışında iyi. 12/2013 tarihinden beri mevcut resmi bir v4l2 sürücüsü vardır: http://www.ics.com/blog/raspberry-pi-camera-module#.VJFhbyvF-b8 Bu, söz konusu yeniden yayın akışını geçersiz kılar. Sadece modülü yükleyin ve kullanın:

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}'

Bu, 12345 numaralı bağlantı noktasında bir http akışı oluşturur, Diego'nun cevabındaki rtcp gibi diğer biçimleri de kullanabilirsiniz. Daha fazlası için: https://web.archive.org/web/20151012014829/http://www.videolan.org:80/doc/streaming-howto/tr/ch03.html adresini ziyaret edin.


2
Bu ise cevap , eklemek için önerilen oluyor :demux=264akışı RAW h264 çünkü CVLC ve size demuxer ayarlamak gerekir: 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. Bu, örneğin Android için VLC'de akışı izlemeyi mümkün kılar.
Jaime M.

8
Sağlanan bağlantıda, autoreconf -vfişimdi yerine kullanmanız gerekir./bootstrap.sh
JuJoDi

1
Hem videoyu izlememe hem de RPi SD kartına kaydetmeme izin verecek bir yolu var mı?
Veya Weinberger,


4
Bu yöntemin başsız bir ortamda çalışmadığını belirtmeye / onaylamaya değeceğini düşünüyorum. Hatalar alıyorum, bunlardan biri X11
Nick

41

Aralarından seçim yapabileceğiniz çeşitli seçenekler vardır. İşimde, Raspberry Pi Camera tarafından çekilen videoyu sunucu odalarımızdan ofise aktarmak için VLC kullanıyoruz . Bunun bir dezavantajı, yaklaşık 5 saniye gecikme olduğu ve buna bir çözüm bulamadığımdır. Aşağıdakiler kurulumumuzdur:

  1. Raspbian'in kurulu ve güncellenmiş olmasını sağlayın ve kameranızın etkin olduğundan emin olun (bunu sudo raspi-config kullanarak ve Kamerayı Etkinleştir'i seçerek etkinleştirin)

    sudo apt-get update
    sudo apt-get upgrade
    
  2. Vlc yükleyin

    sudo apt-get install vlc
    
  3. Akışı aşağıdaki içerikle başlatmak için bir komut dosyası oluşturun veya komutu çalıştırın (yalnızca komutu çalıştırırsanız başka bir şey yapamazsınız).

    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. Komut dosyasını çalıştırılabilir duruma getirme

    sudo chmod +x myscript.sh
    
  5. Akışı otomatik olarak başlatmak istiyorsanız, komut dosyasını crontab'a eklemelisiniz. Bu işi yapmak için cron tarafından çalıştırılan başka bir senaryo yazmam gerekiyordu (OBS! VLC sudo olarak çalıştırılamaz, bu yüzden doğru cronda olduğunuzdan emin olun). sudo nano myscript2.sh:

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

    Sonra:

    sudo chmod +x myscript2.sh
    crontab -e
    @reboot /path/to/myscript2.sh
    
  6. Video akışını izlemek için, akış için kullandığınız ahududu pi ile aynı ağdaki bir bilgisayarda VLC'yi açın. Media -> Networkstream'i Aç seçeneğine basın ve aşağıdakileri alana yapıştırın:

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

FPS ile ilgilenmiyorsanız (saniye başına kare sayısı) ve gecikme istemiyorsanız MJPEG kullanabilirsiniz. BURAYA bu konuda daha fazla okuyabilirsiniz

Ahududu Pi Kamera Modülü hakkında BU Wiki izleyin . Umarım aradığınızı bulursunuz.


Neden Windows’taki VLC’de aşağıdakileri alacağım hakkında bir fikriniz var mı? Girişiniz açılamıyor: VLC, MRL 'rtsp: //192.168.1.78: 8554' dosyasını açamıyor. Detaylar için kayıtları kontrol edin. Pi-tarafı iyi görünüyor - hata yok ve bağlı müşteriye tepki veriyor gibi görünüyor?
monojohnny

@monojohnny Ahududu pi akışı mı? Bir ekrana takarak videonun gerçekten işe yarayıp yaramadığını kontrol edin. Video çalışıyorsa, ekranda ahududu pi'ye bağlı akışı görmelisiniz.
Diego

@monojohnny Yazdığınız Diego için teşekkürler ... ilk denemede mükemmel çalışıyor! monojohnny ... Sonunda "/" yazmanız gerekir, aksi takdirde vlc şikayetçi olur. Bunu dene: rtsp: //192.168.1.78: 8554 /
Sujay Phadke

Thanks @Diego bu benim için harika oldu ama akışımı nasıl bırakabilirim?
Denoteone,

Pencerelerde de aynı problem var ve videoyu pi'mden alamıyorum. Ben verilen kamera, pi kameradan pi bağlı bir ekranda ama benim windows 10 pc yüklü VLC aracılığıyla değil video akışı görüyorum.
Mostafa

23

Bazı seçenekler denedim. Ancak, bu projeyi kullanarak en iyi sonucu buldum: eLinux topluluğundan RPi-Cam-Web-Arayüzü

Akışın neredeyse sıfır gecikmesi var.

iyi şanslar :)


4
Sıfır gecikme süresi arayan insanlar, bunu kesinlikle kontrol edin. @ User2998302'den aksesuarlar. İnanamıyorum, bir yıl boyunca bu konuda hiçbir öneri yok (onaylama).
igaurav

Bu hızlı ve kolay bir kurulum olsa da, yazılım optimize edilmemiş olmakla birlikte, düşük gecikme süresi (sıfır gecikme gibi bir şey yoktur), arayüz çok konuşkandır ve bazı ekstra CPU döngüleri kullanır. Başka bir şey yapmıyorsanız sorun değil, özellikle de Pi 1'de iseniz sorun olabilir.
Nick

Bu harika!
Hamza Ouaghad

Şimdiye kadar test ettiğimler arasında en hızlı web video yayını (ayrıca vlc aracılığıyla yayınlanan yerel v4l2 sürücüsü), neredeyse sıfır gecikme süresi. İnternette bu sorunla ilgili her kaynak bu uygulamadan daha iyi bir sonuç almazken optimizasyon hakkında şikayet etmenin bir anlamı yok.
Gabber

vay, bunu bir taş itiraf etmeliyim!
L.Trabacchin

18

Bulduğum en kolay yol, ahududu pi kamerayla başsız ahududu pi'den canlı bir video çekimi yapmak.

Bu çözüm, PI'ye ek bir yazılım yüklemeden kutudan çıkar.

PI'de:

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

Bilgisayarda, VLC ile yayın yapılabilir:

vlc tcp/h264://192.168.66.154:3333

(192.168.66.154, PI’nin IP adresi olduğunu varsayar)


Ahududu Pi'ye hoş geldiniz! Genelde cevaplarınızı bir sorudan diğerine sözlü olarak kopyalamaktan caydırıyoruz - 15 temsilci ulaştığınızda, 'yinelenen' ile aynı soruları işaretleyebileceksiniz, böylece cevabınızı sadece bir kopya alacaksınız. Sorunuza cevabınızı paylaştığınız için teşekkür ederiz!
Aurora0001,

@Per Hansen Benim için çalışmıyor ... Bir liman tahsis etmenin dışında yapılması gereken başka bir şey olabilir.
Amit Ray

Bu harika çalışıyor! RPi3B + ve Raspbian 9.4 (başsız) kullanarak.
dparkar

5

Ahududu forumunda , H264 yakalamayı destekleyen bir V4L2 sürücüsü ile beslenen live555 tabanlı hafif bir RTSP sunucusu kullanarak olası bir çözüm yolladım :

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>

Daha sonra aşağıdakileri kullanarak RTSP akışına erişebilmeniz gerekir:

vlc rtsp://<raspberry>:8554/unicast

Peki ya gecikme?
kuhajeyan

cvlc'den daha kısa.
mpromonet

cmake, projem için birkaç paket daha ekleyene kadar "ALSA bulunamadı (eksik: ALSA_LIBRARY ALSA_INCLUDE_DIR)" hakkında şikayette bulundu. Çözüm bunlar arasında: "sudo apt-get kurulum libopus-dev libexpat1-dev libasound2-dev libudev-dev libavahi-client-dev kurulum" (benim tahminim asound burada olabilir).
MoonCactus

oh, ve oldukça iyi çalışıyor (hafif çözüm), teşekkürler. Zaman gecikmesi nezih, yaklaşık 2 saniye si imho diğer çözeltilerle karşılaştırılabilir.
MoonCactus

@MoonCactus: ALSA kurulumunu düzelttiğimi düşünüyorum (sadece libasound2-dev'a ihtiyaç duyuyor). Gecikme bir saniyenin altında olmalı, eğer vlc kullanıyorsanız, ağ tamponlamasını azaltabilirsiniz --network-caching 300
mpromonet

4

UV4L (ayrıca) standart HTML5 video ve yapılandırma gerektirmeden ses akışı destekler. Http üzerinden MJPEG gibi başka seçenekler de mümkündür.

Güncelleme:

UV4L artık Web üzerinden Jitsi Meet Rooms'a canlı ses ve video yayınını da destekliyor . Özel bir yapılandırma gerekmez. Adınızı, odanızı doldurmak ve Başlat'ı tıklamak kadar kolay .

2. Güncelleme:

UV4L artık H264 donanım kodlu videoyu da tam fps, HD ve gelecekte Full HD olarak desteklemektedir.


1
Tek şey, sadece hemen hemen her şeyin anlayamadığı element akımını elde edebileceksiniz. Ne yazık ki, çok kullanım değil. Bir pi2 var eğer WebRTC (hangisi yayan bir şeye ihtiyacım ve sonraki sürümlerinde, UV4L ile yapabilir misin, bunu yapmak için (çünkü Sıfır) güç / boyut sınırlaması sizin SOL gerek ediyorsanız..
Svartalf

3

Her ikisi de mjpeg_streamerve motioncvlc'den daha iyi gecikme süresi var gibi görünüyor.

kullanma mjpg_streamer

mjpeg_streamer derleme gerektirir ancak github'daki talimatlar basittir.

Derlemeden sonra start.sh, proje dizininden başlatarak veya doğrudan (proje dizininde) çalıştırarak çalıştırılabilir:

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

8090TCP portu nerede . Belirtilmezse, port 8080varsayılan olarak kullanılacaktır. start.shKomut ekstra seçenekleri ile bazı kullanım örneklerini içerir.

kullanma motion

Motion, açılışta otomatik başlatmayı, durmayı veya yeniden başlatmayı kolaylaştıran bir systemd servisi içerir.

IP web kamerası modunda kullanmak için, aşağıdaki ayarlar yapılmalıdır /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

Sonra, /etc/default/motionsette:

start_motion_daemon=yes

Hizmetin açılışta otomatik olarak başlatılmasını sağlamak için:

systemctl enable motion

İlgili systemctl start/stop/restart motioneylem için kullanın .

Varsayılan akış portu 8081. Liman altında ayarlanır stream_portiçinde /etc/motion/motion.conf.


1

Bir gözetleme yazılımı mı arıyorsunuz bilmiyorum ama motionbir yazılım hareket algılayıcısı kurmayı ve çalıştırmayı başardım . Resmi kılavuza bir göz atmalısınız .


Hareket yalnızca USB kameralar için geçerlidir
geneorama

3
@geneorama hareketi USB kamera ile sınırlı olmayan video4linux arabirimini kullanır, bcm2835-v4l2 modülü kamera arabirimine bu arabirim ile erişim sağlar.
mpromonet

1

Raspberry Pi 2'de uv4l WebRTC kullanarak video yayını yapabildim . Süper kolay. Sadece bu öğreticiyi izleyin . Umarım bu yardım.


Bağlantı çürümesini önlemek için lütfen eğitimin ilgili bölümlerini buraya ekleyin.
Bex,

Sadece Pi2 ve üzeri sürümlerde geçerlidir. 1A / 1A + / Zero ile çalışmıyor. İnsanların neden başarabildiğinden beri niye yapamayacağından tam olarak emin değilim, ama hey ...
Svartalf

1

Windows 7'de video akışını almada sorun yaşıyordum. Birçok linux çözümü vardı, şu ana kadar pencerelerde kopyalayamadım. Sonunda oldukça hızlı bir çözüm buldum:

  1. netcat'in bir windows sürümünü edinin: http://joncraton.org/files/nc111nt.zip , sıkıştırılmış dosyayı açın ve yola ekleyin
  2. stdin'den okuyabilecek yeni bir mpc-hc sürümü edinin : https://mpc-hc.org/downloads/ install ve yoluna yolunu da ekleyin (benimki 64-bit, ancak 32-bit umarım yanı sıra)

Ahududu pi üzerinde:

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

Windows makinesinde:

nc -l -p 5001 | mpc-hc64 -

Böylece, hiçbir şeyin yeniden paketlendiğini veya yeniden dinlendiğini, reddedilmediğini veya hiçbir şekilde böyle bir şey olmadığını kabul ediyorum. Raspvid'den gelen ikili akış, mpc'ye beslenir ve gösterilir. Ahududu wifi üzerinden çalışır, bu yüzden ilk başta bu 0.2-0.3 saniye gecikme düşürülmüş yarım dakika meselesinde adil bir gecikme alıyorum.

Maalesef, VLC'yi aynı şekilde kullanamadım, nc -l -p 5001 | vlc -Vlc penceresini herhangi bir video olmadan açıyor.


1

Kamera girişi için avconv ile birlikte dünyaya akış için RTMP destekli Nginx kullandım. Kod Github'da mevcuttur .


Güzel, herhangi bir videonun gecikme süresiyle ilgili bir şey paylaşır mısınız?
kuhajeyan

2
Evet, yaklaşık 5 saniyelik bir gecikme oldu.
TTT

0

Peter Hansen'in kodu bir LAN üzerinde muhtemelen iyi çalışıyor olsa da, bütünlük uğruna: TCP, gerçek zamanlı olarak olduğu gibi veri bütünlüğü ile ilgilidir. Gerçek zamanlı bir akışta, zaman zaman görüntülenmesi uğruna bazı veri kaybı kabul edilebilir. Bu durumda UDP daha iyi olabilir. Bu kodu test etmedim.

Güvenlik kamerası ise, çok noktaya yayın düşünülebilir. Modern yönlendiriciler 100 dolarlık modelleri bile yapabilir.


0

README.md'deki talimatları izleyerek pi'mde https://github.com/BreeeZe/rpos adresinden bir ONVIF çözümü kurdum .

Tek fark benim kurduğum şey node v8.4.0. Bu, kamera çıkışımı aynı ağa bağlı bir NVR'da görmemi sağlıyor. Ayrıca, kamera adresi kullanarak VLC oynatıcı ağ akışı üzerinden doğrudan oynatılabilirrtsp://192.168.1.3:8554/h264


0

Bir süre sonra da buna benzer bir problem çıktı:

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

Diğer önerilen çözümlere göre daha fazla barebone, ancak web üzerinden düşük gecikme önceliğinde iyi çalıştığını düşünüyorum.

Tarayıcıda ihtiyaç duyulan herhangi bir eklenti olmadan çoğu tarayıcıda (hatta 480p'de mobil) çalışır.


Kod çözücünün kendisini yazmadım, onun ayrı bir projesi github.com/mbebenita/Broadway Ancak şaşırtıcı derecede iyi bir şekilde optimize edildi ve cevabında dediğim gibi bir droid üzerindeki 480p'leri kolayca kaldırabilir. Brodway'e gitmemin nedeni, rpi'de vp8 / 9 donanım kodlayıcısı olmamasıdır, bu nedenle h264 gerçekten tek iyi seçenek. Ancak, yerel h264 kod çözücüyü tarayıcıda kullanmak istiyorsanız, düşük gecikmeyi unutabilirsiniz.
MatijaG

O kadar inanılmaz geliyor ki denemek zorundayım.
18'de kwasmich

Herhangi bir geri bildirim çok hoş olacak :)
MatijaG

Sadece şimdi biraz boş zaman geçirdim. raspividKamera beslemesiyle çalıştırılacak örneği almakta sorun yaşıyorum . İle ffmpegdiğer taraftan sadece saniyedeki kare onda alıyorum. Temiz bir Raspbian ve Pi Zero kullandım. Benim için bazı ipuçların var mı?
kwasmich

Evet ffmpeg ile donanım hızlandırma eksikliği bir no-go çünkü olacaktır. Örneği şu şekilde çalıştırmayı deneyin: node example/index.js raspividSorunları yalnızca node example/index.jsve ayrı ayrı çalıştırmayı deneyin ve /opt/vc/bin/raspivid -pf baseline -ih -t 0 -w 640 -h 480 -hf -fps 15 -g 30 -o - | nc localhost 5000raspivid'den herhangi bir hata alıp almadığınızı görünce kutudan çıkmalıdır
MatijaG
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.