How to change framerate in REALTIME when video is PLAYING?

Andrey Nechypurenko andreynech at googlemail.com
Thu Mar 10 00:58:23 PST 2011


Hi Tom,

> I use
> gst-launch filesrc "location=video/1.MPG" ! decodebin ! videorate !
> video/x-raw-yuv, width=640,height=480,framerate=25/1 ! ffmpegcolorspace !
> jpegenc ! multipartmux ! tcpserversink host=192.168.2.1 port=$portNumber
> to stream a video and can change the video frame rate in this way.
> But in this way the frame rate is fixed (i.e., framerate=25/1 here).
>
> I want to change the framerate in REALTIME when video is PLAYING  ---
> during the streaming of this video, I can change the framerate anytime I
> want.

Then you need to modify the pipeline from your application. In
particular, you need to adjust the caps filter. Here you can find an
example how to do it:
http://gitorious.org/veter/veter/blobs/master/src/vehicle/VideoSenderThread.cpp#line264
It changes width and height property of the named (qos-caps) caps
filter by pausing the videoscale element in front of it, updating
width and height properties and then un-pausing the videoscale. So in
your case you can update the framerate property. However, as Kapil
pointed out to work properly, the downstream elements should be able
to re-negotiate the new format.

HTH,
Andrey.


More information about the gstreamer-devel mailing list