|
This post was updated on .
I have a gnonlin composition with a few video files played in sequence, but with short gaps between them filled with snow.
The video sources for a gnlcomposition may look like that:
- gnlurisource (start=0, duration=30, uri=file1.avi, priority=100)
- gnlurisource (start=32, duration=30, uri=file2.avi, priority=101)
- videotestsrc (expandable=true, pattern=snow, priority=uint.MaxValue)
In the above example the first file should play for 30s, then 2s of snow and then the second file for 30s.
It was working reliably with the historic GStreamer 0.10.
When I tried to achieve the same with GStreamer 1.4.x, 1.6.x (or even 1.7.90), I noticed that playback pauses when switching to snow. The length of that unexpected pause depends on how far into the timeline we are:
- if the first file is just 1s long, it plays smoothly through the gap.
- if the first file is 5s long, it pauses for over 1 second before continuing with a few remaining frames of snow and the second file (it catches up with the timeline)
- if the file is 1hour long it pauses for about 15 minutes!!!
If I use a gnlurisource playing another video file in the gap instead of videotestsrc, it plays smoothly.
There is no problem if I clearly define the beginning and length of the snow, but when videotestsrc is defined as "expandable" (takes up the whole length of the timeline), then when switching to it, it has to generate all the frames since the beginning until it finds the frame it is supposed to generate and then it continues with the playback (that's what I suspect may be happening, the real cause may be different).
Has anyone seen that behaviour? Any suggestions how to find out exactly what's going on?
|