Je suis en train de construire un pipeline vidéo avec GStreamer. À la fin, il devrait s'agir d'une solution de vidéoconférence Full HD full duplex. Comme le Raspberry Pi 3 n'est pas capable d'encoder et de décoder le flux vidéo en même temps, j'utilise un Logitech C920 pour encoder la vidéo. Ainsi, mon RPi n'a besoin que d'encoder et de décoder l'audio, et de décoder la vidéo H.264. Je construis GStreamer à partir de la source (1.13.0.1) car le 1.4.4 du référentiel raspbian avait des problèmes avec le codage G.722. Des bibliothèques comme gst-omx (RaspiVideo), libsrtp (cryptage), libwebrtc (echocanceling) (0,1 en repo à l'ancienne - donc manuellement téléchargé 0,3) sont également construites. Donc, j'ai omxh264dec - mais je ne pouvais pas trouver un puits vidéo pour lire la vidéo 1080p en douceur. J'ai donc essayé de canaliser (avec un tube nommé) le flux h.264 do hello_video ou l'omxplayer, ce qui a bien fonctionné tant que je reste local. Dès que j'essaie de le diffuser sur RTP, hello_video ne montre rien.GStreamer Full HD vidéo RTP Stream sur Raspberry Pi
Tuyau de travail: gst-launch-1.0 emplacement filesrc =/opt/vc/src/hello_pi/hello_video/test.h264! emplacement de fichier = =/home/pi/test & /opt/vc/src/hello_pi/hello_video/hello_video.bin/home/pi/test même avec le flux de la caméra: gst-launch-1.0 v4l2src! 'video/x-h264, largeur = 1920, hauteur = 1080, framerate = 30/1'! emplacement filesink =/home/pi/test & /opt/vc/src/hello_pi/hello_video/hello_video.bin/home/pi/test
ne fonctionne pas lors de la transmission sur RTP: gst-launch-1.0 v4l2src! 'video/x-h264, largeur = 1920, hauteur = 1080, framerate = 30/1'! h264parse config-interval = 1! rtph264pay! hôte udpsink = 10.0.0.129 port = 5000 \ & gst-launch-1.0 port udpsrc = 5000! application/x-rtp, nom-encodage = H264, charge utile = 96! rtph264depay! 'video/x-h264, largeur = 1920, hauteur = 1080, framerate = 30/1'! emplacement filesink =/home/pi/test \ & /opt/vc/src/hello_pi/hello_video/hello_video.bin/home/pi/test
ne fonctionne pas sans UDP RTP: gst-launch-1.0 v4l2src! h264parse config-interval = 1! rtph264pay! file d'attente! rtph264depay! emplacement filesink =/home/pi/test \ & /opt/vc/src/hello_pi/hello_video/hello_video.bin/home/pi/test
Il semble donc que quelque chose se passe dès que le flux vidéo se joint dans RTP.
Je sais que le flux RTP fonctionne, car je peux le recevoir sur ma machine virtuelle et le lire sans problème. Mais, bien sûr, sur la VM, je peux utiliser le autovideosink. travail de réception sur Ubuntu: gst-launch-1.0 port udpsrc = 5000! \ application/x-rtp, \ nom-encodage = H264, charge utile = 96! \ rtph264depay! h264parse! avdec_h264! \ autovideosink
Toutes les suggestions sont très appréciées.
Merci Vous
Cordialement, maunza