J'ai une webcam logitech C920. Il a la capacité d'encoder directement la vidéo en H264.
Je veux reproduire ce qui a été fait avec un Beaglebone, mais en utilisant un Raspberry Pi: envoyez un flux H264 au réseau . Le Raspberry Pi n'est alors là que pour packetiser le flux en RTP, la compression vidéo est effectuée par la webcam elle-même. Le mode H264 est appliqué à l'aide de video4linux.
Jusqu'à présent, et si j'utilise un ordinateur commun avec la dernière version d'Ubuntu, cela fonctionne en utilisant VLC comme serveur ou GStreamer. Par exemple, si je lance sur Raspberry Pi un serveur VLC en utilisant la commande:
cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'
... et puis si je lis le flux avec VLC sur un autre ordinateur, tout va bien.
Cependant, si j'utilise le raspberry Pi pour envoyer le flux vidéo, le résultat est assez médiocre. Beaucoup de déchets dans l'image dès que quelque chose bouge. Les clés d'image sont bien reçues toutes les 10 secondes, mais en attendant, elles ne sont pas assez bonnes par rapport au flux provenant d'un ordinateur commun.
J'ai également essayé la méthode décrite pour le beaglebone avec l' utilitaire "capture" fourni : ok si je diffuse à partir d'un vrai ordinateur, même problème de poubelle si je diffuse à partir d'un Raspberry Pi.
Ce n'est pas un problème de réseau: j'ai fait quelques vérifications de réseau avec Wireshark et les statistiques de VLC, je n'ai pas de perte de paquets. J'ai essayé avec Raspbian et Arch Linux pour Raspi (gstreamer 0.10 dans raspbian, gstreamer 1.0 dans Arch Linux).
Je ne sais pas si c'est pertinent ou non, mais j'ai aussi testé avec la version de support soft float de Raspbian. Une mise à jour doit d'abord être effectuée pour utiliser un noyau 3.2; mais même problème, la vidéo a des ordures.
Une idée sur ce que je pourrais faire pour améliorer la qualité vidéo?