Comment ouvrir un pipeline GStreamer de OpenCV avec VideoWriter
Je suis la capture d'images vidéo avec OpenCV VideoCapture. La capture fonctionne très bien que je suis capable d'utiliser les images comme ceci:
cv::VideoCapture cap("v4l2src device=/dev/video1 ! videoscale ! videorate ! video/x-raw, width=640, height=360, framerate=30/1 ! videoconvert ! appsink");
cv::imshow("feed", frame);
Je voudrais aussi envoyer le flux sur le réseau et c'est là que je suis bloqué. De toute façon je suis d'échec dans le appsrc pipeline de la partie. Je veux encoder le flux de jpeg et de l'envoyer vie udp. C'est ce que j'ai:
cv::VideoWriter writer
writer.open("appsrc ! videoconvert ! jpegenc ! jpegparse ! rtpjpegpay pt=96 ! udpsink host=192.168.1.25 port=5000", 0, (double)30, cv::Size(640, 360), true);
Ressemble à la ligne ci-dessus ne fait rien. Le writer << frame
ne pas faire n'importe quoi. Aussi cette gstreamer commande n'affiche rien:
gst-launch-1.0 udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)96" ! rtpjpegdepay ! jpegdec ! decodebin ! videoconvert ! autovideosink
Je ne sais pas où je suis, à défaut, dans le writer.open
partie. Si je lance le gstreamer des commandes comme ce soufflet de travailler:
gst-launch-1.0 v4l2src device=/dev/video1 ! videoscale ! videorate ! video/x-raw, width=640, height=360, framerate=30/1 ! jpegenc ! jpegparse ! rtpjpegpay pt=96 ! udpsink host=192.168.1.25 port=5000
gst-launch-1.0 udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)JPEG, payload=(int)96" ! rtpjpegdepay ! jpegdec ! decodebin ! videoconvert ! autovideosink
OriginalL'auteur Pavel | 2017-09-14
Vous devez vous connecter pour publier un commentaire.
Avant d'utiliser OpenCV est Gstreamer API, nous avons besoin d'un travail de pipeline à l'aide de la Gstreamer outil de ligne de commande.
Expéditeur: L'OP est en utilisant un codage JPEG, de sorte que ce pipeline sera en utilisant le même encodage.
Récepteur: L'évier
caps
pourrtpjpegdepay
besoin pour correspondre à la srccaps
de lartpjpegpay
de l'expéditeur pipeline.Maintenant que nous avons travail des pipelines pour l'expéditeur et le récepteur, on peut les porter vers OpenCV.
Expéditeur:
Récepteur:
Je ne sais pas où le mettre pour télécharger le fichier?
pastebin.com/Xzf3SKud
Merci pour les explication, ressemble à ça fera l'affaire!
le problème est probablement plus un problème, mais que la construction de OpenCV n'a pas de GStreamer, vous aurez besoin de le recompiler avec gstreamer vous soutenir
OriginalL'auteur zindarod