Let’s say I have a pipeline with a filesrc, and a videotestsrc. I then composite them and send them to a stream. I would like to be able to pause, change the playback speed, etc. of the filesrc, while the rest of the pipeline (and the videotestsrc) continues at the normal rate.
It seems like pausing and changing playback speed are only applied to sink elements, and thus the entire pipeline. Do I need to somehow get a sink element in middle of the pipeline?
I think the easiest way might be to do something using intervideosink and intervideosrc.
e.g. intervideosrc ! video/x-raw,framerate=X/1 ! compositor on the streamout side, and on the input side just make a separate pipeline with playbin3 uri=file:/// video-sink=intervideosink.
Then you can do pause/play or seek (with rate for fast-forward/reverse playback) on the playbin3 as you like, and the intervideosrc will continue outputting a stream of frames no matter what.
Bit like a projector projecting a video onto the wall, and a separate camera recording it off the wall. If you pause the playback, the camera will just keep recording the paused frame.