2017-06-09 4 views
0

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

Répondre

0

Juste pour ajouter mes deux cents - tous des pi allant de la première A, et les révisions B jusqu'à à zéro et 3 sont dits capables de coder en parallèle et décoder les signaux jusqu'à 1080p30. Et mon expérience montre qu'ils le sont. Je pense que raspivid une fois eu une option pour prévisualiser la vidéo codée qui a fait cela.