Evaluating Fluendo timeshifter
Krzysztof Konopko
krzysztof.konopko at youview.com
Wed Nov 7 09:18:20 PST 2012
Hi,
I'm trying to make some real-life experiments with the Fluendo
timeshifter. I stream raw video from my laptop video camera, encode and
mux it into MPEG-TS and then stream it as UDP packets from the "server"
machine. On the receiver I use the following pipeline:
gst-launch-1.0 -v --gst-debug-no-color --gst-debug=flu*:5 \
udpsrc do-timestamp=false port=10000 \
caps='application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)MP2T-ES'
\
! queue ! rtpmp2tdepay \
! tsparse \
! queue \
! identity name=probe-before-timeshifter silent=false \
! flumpegshifter \
! identity name=probe-after-timeshifter silent=false \
! decodebin \
! identity name=probe-after-decoder silent=false \
! queue ! autovideosink sync=false
The problem is that the rendered video is very jerky. The timeshifter
collects TS packets until it fills the cache slot (32kB) and than hands
over to the decoder:
# tsparse
(probe-before-timeshifter:sink) (11280 bytes, dts: none, pts:none,
duration: none, ... )
(probe-before-timeshifter:sink) (2068 bytes, dts: none, pts:none,
duration: none, ... )
(probe-before-timeshifter:sink) (3008 bytes, dts: none, pts:none,
duration: none, ... )
...
# timeshifter
(probe-after-timeshifter:sink) (32768 bytes, dts: none, pts:none,
duration: none, offset: 131072, offset_end: 163840, flags: 00000000 )
# decoder
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:01.040000000,
pts:0:00:01.040000000, duration: 0:00:00.040000000, ... )
WARNING: from element ...:autovideosink0-actual-sink-xvimage: A lot of
buffers are being dropped.
Additional debug info: ...:autovideosink0-actual-sink-xvimage: There may
be a timestamping problem, or this computer is too slow.
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:01.080000000,
pts:0:00:01.080000000, duration: 0:00:00.040000000, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:01.120000000,
pts:0:00:01.120000000, duration: 0:00:00.040000000, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:01.160000000,
pts:0:00:01.160000000, duration: 0:00:00.040000000, ... )
...
If I remove the timeshifter, I get delayed but smooth video output.
gst-launch-1.0 -v --gst-debug-no-color --gst-debug=flu*:5 \
udpsrc do-timestamp=false port=10000 \
caps='application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)MP2T-ES'
\
! queue ! rtpmp2tdepay \
! tsparse \
! queue \
! identity name=probe-before-decoder silent=false \
! decodebin \
! identity name=probe-after-decoder silent=false \
! queue ! autovideosink sync=false
The tsparse end decoder elements work interchangeably.
(probe-before-decoder:sink) (2632 bytes, dts: none, pts:none, duration:
none, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:00.731522222,
pts:0:00:00.731522222, duration: 0:00:00.040000000, ... )
(probe-before-decoder:sink) (2256 bytes, dts: none, pts:none, duration:
none, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:00.801255555,
pts:0:00:00.801255555, duration: 0:00:00.040000000, ... )
(probe-before-decoder:sink) (2632 bytes, dts: none, pts:none, duration:
none, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:00.867966666,
pts:0:00:00.867966666, duration: 0:00:00.040000000, ... )
(probe-before-decoder:sink) (2068 bytes, dts: none, pts:none, duration:
none, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:00.933966666,
pts:0:00:00.933966666, duration: 0:00:00.040000000, ... )
(probe-before-decoder:sink) (2444 bytes, dts: none, pts:none, duration:
none, ... )
(probe-after-decoder:sink) (115200 bytes, dts: 0:00:00.997777777,
pts:0:00:00.997777777, duration: 0:00:00.040000000, ... )
Maybe the "real-life" source is too slow/pessimistic? Is there anything
else I'm getting wrong?
Any ideas/suggestions?
Thanks,
Kris
More information about the gstreamer-devel
mailing list