Mam kamerę internetową Logitech C920. Ma możliwość bezpośredniego kodowania wideo w H264.
Chcę odtworzyć to, co zostało zrobione za pomocą Beaglebone, ale używając Raspberry Pi: wyślij strumień H264 do sieci . Raspberry Pi jest wtedy tylko tutaj, aby spakować strumień w RTP, kompresja wideo jest wykonywana przez samą kamerę internetową. Tryb H264 jest wymuszany za pomocą video4linux.
Do tej pory, a jeśli używam wspólnego komputera z najnowszą wersją Ubuntu, działa on za pomocą VLC jako serwera lub GStreamera. Na przykład, jeśli uruchomię na Raspberry Pi serwer VLC za pomocą polecenia:
cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'
... a potem, jeśli czytam strumień z VLC na innym komputerze, wszystko jest w porządku.
Jeśli jednak użyję Raspberry Pi do wysłania strumienia wideo, wynik jest dość słaby. Dużo śmieci na obrazie, gdy tylko coś się poruszy. Klucze obrazu są odbierane co 10 sekund, ale tymczasem nie jest wystarczająco dobry w porównaniu ze strumieniem ze zwykłego komputera.
Wypróbowałem również metodę opisaną dla beaglebone z dostarczonym narzędziem „capture” : ok, jeśli przesyłam strumieniowo z prawdziwego komputera, ten sam problem ze śmieciami, jeśli przesyłam strumieniowo z Raspberry Pi.
To nie jest problem z siecią: wykonałem kilka kontroli sieci z Wireshark i statystykami VLC, nie mam utraty pakietów. Próbowałem z Raspbian i Arch Linux dla Raspi (gstreamer 0.10 w raspbian, gstreamer 1.0 w Arch Linux).
Nie wiem, czy jest to istotne, czy nie, ale testowałem również z wersją Raspbian obsługującą soft float. Najpierw należy wykonać aktualizację, aby móc korzystać z jądra 3.2; ale ten sam problem, wideo ma trochę śmieci.
Masz pomysł, co mogę zrobić, aby poprawić jakość wideo?