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=1000
der Pipe hinzugefügt und den Videoeingang getrennt. Anschließend beendet der Watchdog den Stream und generiert das EOS. Außerdem habe ich -e
am 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