Logitech C920 ile H264 akışı


13

Logitech C920 web kameram var. Videoyu H264'te doğrudan kodlama yeteneğine sahiptir.

Bir Beaglebone ile yapılanları çoğaltmak istiyorum, ama bir Raspberry Pi kullanarak: ağa bir H264 akışı gönderin . Raspberry Pi sadece akışı RTP'de paketlemek için burada, video sıkıştırma web kamerası tarafından yapılır. H264 modu video4linux kullanılarak zorlanır.

Şimdiye kadar ve Ubuntu'nun en son sürümüne sahip ortak bir bilgisayar kullanırsam, sunucu veya GStreamer olarak VLC kullanarak çalışır. Örneğin, Raspberry Pi'de bir VLC sunucusunu şu komutu kullanarak başlatırsam:

cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'

... ve sonra akışı başka bir bilgisayarda VLC ile okursam, her şey yolunda.

Ancak, ahududu Pi'yi video akışını göndermek için kullanırsam sonuç oldukça zayıftır. Bir şey hareket ettiği anda görüntüde çok fazla çöp var. Görüntü anahtarları her 10 saniyede bir iyi alınır, ancak bu arada, ortak bir bilgisayardan gelen akışla karşılaştırıldığında yeterince iyi değildir.

Ayrıca sağlanan "yakalama" yardımcı programı ile beaglebone için açıklanan yöntemi denedim : Tamam ben gerçek bir bilgisayardan akış, ben bir Ahududu Pi akış eğer aynı çöp sorunu.

Bu bir ağ sorunu değil: Wireshark ve VLC istatistikleri ile bazı ağ kontrolleri yaptım, paket kaybım yok. Raspbian ve Raspi için Arch Linux (raspbian'da gstreamer 0.10, Arch Linux'ta gstreamer 1.0) ile denedim.

İlgili olup olmadığını bilmiyorum, ancak Raspbian'ın yumuşak şamandıra destek versiyonu ile de test ettim. 3.2 çekirdeğin kullanılabilmesi için önce bir güncelleme yapılmalıdır; ama aynı sorun, video biraz çöp var.

Video kalitesini artırmak için neler yapabileceğime dair bir fikrin var mı?


Kare hızını azaltmayı deneyin. RPi'nin CPU'su çok zayıf, bu yüzden sanırım 30FPS'de 800x600 görüntü iletmek çok fazla. Yalnızca MIPI / CIS konektörüyle (USB yerine) bağlanan yeni rPI kamera kartı, 15-30 FPS'de 1080p yayın yapar.
Matthias

FPS değil. Pi, Pi Kamera modülünü kullanarak 60FPS'de HD ile sorunsuzca başa çıkabilir. Logitech kamera H264 videoyu zaten kodlamışsa ve Pi'nin paketleri tamamen yeniden yayınlaması gerekir. Aslında en fazla 6 HD @ 25FPS akışını yeniden yayınlayabilir. Paketleri bozan V4L sürücüsü olmalı
Piotr Kula

Eski bir iplik olduğunu biliyorum, ama sonunda işe yarayan bir şey buldun mu? Im benzer bir şey yapmaya çalışıyorum ve sıkışmış
Ajith

Bir Beaglebone kullandım ve daha iyi çalıştı. Sorun Raspbian RaspberryPi için kötü bir USB sürücüsü nedeniyle oldu. Hatırladığım kadarıyla, aynı sistemi daha sonra Raspbian'ın daha sonraki bir versiyonuyla test ettim ve daha az çöpüm vardı. (Cevaplardan birinde söylendiği gibi) bir rpi güncellemesi yapabilirdim, ama iyi hatırlamıyorum. Ancak, güncel bir ürün yazılımı / işletim sistemi kullandıktan sonra performansın daha iyi olduğundan emin olun.
Vincent Hiribarren

Vincent, 'v4l2 url açılamıyor' hatası alıyorum. Bu komut şimdi güncel değil mi?
dalanmiller

Yanıtlar:


6

Aynı sorunu vardı, c920 sorunları için değil, bir donanım kodlayıcı ararken bu iş parçacığı bulundu.

Yine de, ahududu pi için bir bellenim güncellemesi yürütün ve çöp gitmiş olmalıdır

$> sudo rpi-update

Çözümü burada buldum: http://wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264#Raspberry_Pi


Bu soruyu kapatmak için bu cevabı kabul ediyorum. Sorun, bozuk bir USB sürücüsü nedeniyle, USB iletişiminde bazı paket kaybı oldu. Güncellenmiş bir sistem / aygıt yazılımı işinizi görmelidir.
Vincent Hiribarren

2

FFMPEG'i deneyebilir ve kullanabilirsiniz. Ancak sorun, depoların çıktığı için depo sürümünü kullanmak değildir. Gerçekten iyi çalışan çatallı bir versiyonu var.

Bu işlemi 5 saat kadar bir süre içinde derlemeniz veya önceden derlenmiş bir ikili dosyayı indirmeniz gerekecektir.

Daha sonra bu ayarlarla V4L sürücüsünden FFMPEG'e veri aktarabilirsiniz. Nerede -i "fifo"sadece -iboru akışını kapmak için olmalı ve -fH264 çıktısını iki kez kontrol etmeniz gerekecektir. FLV, HTML oynatıcılarla oynatılabilecek FLV olarak yeniden paketler.

ffmpeg -y \  
  -f h264 \  
  -i "$fifo" \  
  -c:v copy \  
  -map 0:0 \  
  -f flv "$urllocal"   

veya doğrudan V4L'yi hedeflediğini bulduğum bir örnek ama oyu /dev/video* * ' nun 1veya daha fazlasının bulunduğu yerde kamerayı bulundurmak zorunda ...

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi

-fiçinde çıkışa biçimini ifade etmektedir. O sadece FLV formatında sarılmış olur FLV H264 gibi dönüştürecektir anlamına gelmez. daha sonra adresi müşterilerinizin VLC oynatıcısına değiştirin. Örneğin-f mpegts udp:192.168.1.19:1234

VLC, Pi'de çok iyi çalışmıyor gibi görünüyor. Pi cmaera modülünü UDP kullanarak bilgisayarıma iterken çok az başarılı oldum. Çalıştı ama kararlı değildi.

Ayrıca bir tedavi çalışan rtmp modülü ile nginx kurulumuna bakabilirsiniz. Bu kılavuza bakın, ancak ayarları biraz değiştirmeniz gerekir. Daha sonra VLC oynatıcınızı nginx-rtmp akışına bağlarsınız ve bu bir cazibe gibi çalışır.


1
Hangi çatallı versiyon iyi çalışıyor?
Brian

1

Bu benim için işe yarıyor @ en azından ... cvlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout="#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/live.ts}" -I dummy


0

Videoyu görüntüleyen istemcide daha büyük arabellek kullanmayı deneyin. Benim için 1000ms tampon ve 200ms tampon arasında dramatik bir fark var. 5000ms tampon 1000ms tampondan daha iyi görünüyor.

: Ağ önbelleğe alma 2000 =


LAN'daki garip titreme ile 0 önbellekleme ile çalışmalıdır.Pi kamera modülünün sorunsuz çalışmasını sağladım.
Piotr Kula

0

Ahududu forumunda bir V4L2 sürücüsünden H264 yakalayan live555 tabanlı hafif bir RTSP sunucusu kullanarak olası bir çözüm yayınladım . Bu github edinilebilir h264_v4l2_rtspserver

Bu, raspicamera için yapıldı, ancak H264 sağlayan herhangi bir V4L2 cihazı ile çalışmalıdır.


-1

Durumunuzu iyi anladıysam, Raspberry'nin videoyu H264'e dönüştürmesini ister misiniz? Bence bu yüzden kötü performans elde edersiniz, çünkü VLC yazılım kodlaması kullanıyor ve Raspberryis bu görev için güçlü değil.

Gstreamer ve gst-omxeklentileri ile denemenizi öneririm . Ahududu dan iyi bir sunucu yapacak donanım video kodlaması için bir öğe vardır.


1
Söylediği gibi, Logitech kamera zaten H.264 sağlıyor. Yani rPi sadece kareleri taşıyor ancak kodlama yapmıyor.
Matthias

Kod dönüştürme yapmıyor. Sadece verileri yeniden yayınlamak. İçinde olduğu gibi akışı doğrudan kullanır.
Piotr Kula
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.