Saya memiliki webcam C920 logitech. Ini memiliki kemampuan untuk langsung menyandikan video dalam H264.
Saya ingin mereproduksi apa yang dilakukan dengan Beaglebone, tetapi menggunakan Raspberry Pi: kirim aliran H264 ke jaringan . Raspberry Pi kemudian hanya di sini untuk mengemas aliran dalam RTP, kompresi video dilakukan oleh webcam itu sendiri. Mode H264 diberlakukan menggunakan video4linux.
Sejauh ini, dan jika saya menggunakan komputer biasa dengan versi terbaru Ubuntu, ia berfungsi menggunakan VLC sebagai server atau GStreamer. Sebagai contoh, jika saya menjalankan Raspberry Pi server VLC menggunakan perintah:
cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'
... dan kemudian jika saya membaca aliran dengan VLC di komputer lain, semuanya benar.
Namun, jika saya menggunakan raspberry Pi untuk mengirim streaming video, hasilnya cukup buruk. Banyak sampah di gambar segera setelah sesuatu bergerak. Tombol gambar diterima dengan baik setiap 10 detik, tetapi sementara itu, itu tidak cukup baik dibandingkan dengan aliran dari komputer biasa.
Saya juga mencoba metode yang dijelaskan untuk beaglebone dengan utilitas "tangkap" yang disediakan : ok jika saya streaming dari komputer nyata, masalah sampah yang sama jika saya streaming dari Raspberry Pi.
Ini bukan masalah jaringan: Saya melakukan beberapa pengecekan jaringan dengan Wireshark dan statistik VLC, saya tidak punya paket loss. Saya mencoba dengan Raspbian, dan Arch Linux untuk Raspi (gstreamer 0.10 di raspbian, gstreamer 1.0 di Arch Linux).
Saya tidak tahu apakah itu relevan atau tidak, tetapi saya juga menguji dengan versi dukungan soft float dari Raspbian. Pembaruan harus dilakukan terlebih dahulu untuk menggunakan kernel 3.2; tetapi masalah yang sama, video memiliki beberapa sampah.
Adakah yang bisa saya lakukan untuk meningkatkan kualitas video?
sumber
Jawaban:
Saya memiliki masalah yang sama, menemukan utas ini saat mencari encoder perangkat keras, bukan untuk masalah c920.
Namun demikian, jalankan pembaruan firmware untuk raspberry pi dan sampahnya harus hilang
$> sudo rpi-perbarui
Saya sendiri menemukan solusinya di sini: http://wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264#Raspberry_Pi
sumber
Anda dapat mencoba dan menggunakan FFMPEG. Tetapi masalahnya adalah tidak menggunakan versi repositori karena sudah ketinggalan jaman. Ada versi bercabang yang berfungsi sangat baik.
Anda harus mengompilasinya yang membutuhkan waktu sekitar 5 jam atau mengunduh biner yang telah dikompilasi.
Anda kemudian dapat menyalurkan data dari driver V4L ke FFMPEG dengan pengaturan ini. Di mana
-i "fifo"
seharusnya hanya-i
untuk memotong aliran pipa dan-f
Anda akan perlu memeriksa bagaimana cara outputnya H264. FLV mengemasnya menjadi FLV yang dapat dimainkan dengan pemutar HTML.atau exmaple saya menemukan bahwa menargetkan V4L secara langsung tetapi oyu harus memiliki kamera di
/dev/video*
mana * berada1
atau lebih ...yang
-f
menunjukkan format untuk output masuk. Ini tidak berarti itu akan transcode seperti H264 ke FLV hanya akan dibungkus dalam format FLV. kemudian ubah alamat ke pemutar VLC klien Anda. sebagai contoh-f mpegts udp:192.168.1.19:1234
VLC sepertinya tidak bekerja dengan baik pada Pi. Saya sangat sedikit berhasil mendorong modul Pi cmaera ke PC saya menggunakan UDP. Itu bekerja tetapi tidak stabil.
Anda juga dapat melihat menginstal nginx dengan modul rtmp yang berfungsi dengan baik. Lihatlah panduan ini tetapi Anda harus sedikit mengubah pengaturan. Anda kemudian menghubungkan pemutar VLC Anda ke aliran nginx-rtmp dan itu akan bekerja seperti pesona.
sumber
Ini sepertinya bekerja untuk saya @ setidaknya ...
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
sumber
Coba dengan buffer yang lebih besar pada klien yang menampilkan video. Bagi saya ada perbedaan dramatis antara 1000ms buffer dan 200ms buffer. Buffer 5000ms terlihat lebih baik daripada buffer 1000 ms.
: caching jaringan = 2000
sumber
Saya memposting solusi yang mungkin di forum raspberry menggunakan server RTSP ringan berdasarkan live555 yang menangkap H264 dari driver V4L2. Ini tersedia dari github h264_v4l2_rtspserver
Ini dilakukan untuk kamera raspicamera, tetapi harus bekerja dengan perangkat V4L2 yang menyediakan H264.
sumber
Jika saya memahami situasi Anda dengan baik, Anda ingin Raspberry melakukan transcode video ke H264? Saya pikir itu sebabnya Anda mendapatkan kinerja yang buruk, karena VLC menggunakan pengodean perangkat lunak dan Raspberry tidak kuat untuk tugas itu.
Saya menyarankan untuk mencoba dengan Gstreamer dan
gst-omx
plugin . Ada elemen untuk pengkodean video perangkat keras yang akan membuat server yang baik dari Raspberry Anda.sumber