How can i force to end all streams (or pipeline) at a specific timestamp

hammerwerfer hammer.werfer at gmx.de
Wed Feb 24 16:09:34 UTC 2016


Hi,
my pipeline has an audio stream (filesrc with mp3 file with a length of 3
minutes) and a video stream (appsrc, image/jpeg ! queue jpegdec !
videoconvert ... etc.). The appsrc get it's data frame by frame, via the
need-data signal callback:

When all images are fed to the appsrc (after 200 frames) i want to stop
everything. For the appsrc i emit the "end-of-stream" signal. But the
pipeline still runs until the audio stream has finished, so the resulting
video file has the same duration like the input audio stream.
If i emit an eos-signal to the audioconverter
(self.audioConv.send_event(Gst.Event.new_eos() right after
src.emit("end-of-stream")) as well the audio stream stops. Almost like i
wanted it. But the audio stream stops to early. The video takes 8 seconds
(200 frames @ 25fps) and the audio stops after 5 seconds. Probably due to
buffers or queues. I guess i need somehow to stop the pipeline at a specific
timestamp. But how? I hope someone can give me a hint.

Thanks,
Jens



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/How-can-i-force-to-end-all-streams-or-pipeline-at-a-specific-timestamp-tp4676025.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list