发送 EOS 管道 gstreamer

发送 EOS 管道 gstreamer

我有一个示例 gstreamer 管道: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

我从命令行运行它。我不想按 ctrl+c 来终止进程,而是想向进程发送 EOS 事件。

这可能吗?如果可以,有人这样做过吗?或者解决方案是什么?

答案1

我找不到这样做的方法,但我添加watchdog timeout=1000到管道并断开了视频输入,然后看门狗终止流并生成 EOS。我-e在命令末尾也有一个,以确保视频文件已正确关闭:

 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

相关内容