Senden einer EOS-Pipeline über Gstreamer

Senden einer EOS-Pipeline über Gstreamer

Ich habe eine Beispiel-Gstreamer-Pipeline:gst-launch-1.0 v4l2src device=/dev/video2 ! image/jpeg,width=1280, height=800, framerate=30/1 ! v4l2jpegdec ! queue ! v4l2h264enc extra-controls="controls, h264_profile=4, video_bitrate=620000" ! 'video/x-h264, profile=high, level=(string)4' ! h264parse ! matroskamux ! filesink location=output2.mkv

Dass ich es von der Befehlszeile aus ausführe. Anstatt Strg+C zu drücken, um den Prozess zu beenden, möchte ich ein EOS-Ereignis an den Prozess senden.

Ist das möglich? Und wenn ja, hat das schon mal jemand gemacht oder was ist die Lösung?

Antwort1

Ich konnte keine Möglichkeit finden, dies zu tun, aber ich habe watchdog timeout=1000der Pipe hinzugefügt und den Videoeingang getrennt. Anschließend beendet der Watchdog den Stream und generiert das EOS. Außerdem habe ich -eam Ende meines Befehls ein , um sicherzustellen, dass die Videodatei ordnungsgemäß geschlossen wird:

 gst-launch-1.0.exe rtspsrc location=rtsp://192.168.189.3:8554/bandwidth_h264 latency=0 ! decodebin ! watchdog timeout=1000 ! tee name=split split.! queue leaky=1 ! autovideosink sync=false split.! queue leaky=1 ! videoconvert ! x264enc ! mp4mux ! filesink location=c:/demo/test.mp4 -e

verwandte Informationen