0
votes

Recorded files with gstreamer-0.10 with FPS25 and FourCIF_Format plays in fast forward mode. Any solution would be appreciated. Some times skips 3-4 seconds in recorded files.

The pipeline I'm attempting to use is:

gst-launch v4l2src device=/dev/video2 ! 'video/x-raw-yuv,width=704,height=576, framerate=25/1' ! tee name=liveTee ! queue ! mfw_isink liveTee. ! queue ! vpuenc ! avimux ! filesink location=/home/Recording.avi

1
welcome to Stack Overflow. Usually we provide more details if we want to get some nice response on our questions.. this question looks good, just add some details like: what pipeline you used, some debugging output (run with evn var GST_DEBUG=3), how do you play that file etc..nayana
Hi otopolsky, My working pipeline is: gst-launch v4l2src device=/dev/video2 ! 'video/x-raw-yuv,width=704,height=576, framerate=25/1' ! tee name=liveTee ! queue ! mfw_isink liveTee. ! queue ! vpuenc ! avimux ! filesink location=/home/Recording.avi This pipeline live stream and records it. But, recorded files play in fastforward mode.ManojSahu
I have found the solution but it works only for 1 camera. Adding "videorate" in the above pipeline solves the problem. Recorded files play in normal mode. But, it impacts on live streaming. Live streaming structs.ManojSahu
"drop-only" solves the problem of live streaming but again it makes the recorded files to play faster. Any suggestion would be appreciated.ManojSahu
@mpr my cpu usage avg. is 60%. sync and async both are false in my pipeline. Still my recorded files through gstreamer-0.10 play in faster than normal.ManojSahu

1 Answers

0
votes

I'm gonna take a rough stab at it and re-format your question a bit. This is mostly a GStreamer and Freescale question, not so much QT.

gst-launch-1.0 -e videotestsrc pattern=ball do-timestamp=true is-live=true ! timeoverlay ! 'video/x-raw,width=704,height=576,framerate=25/1' ! tee name=liveTee ! queue leaky=downstream ! videoconvert ! ximagesink async=false liveTee. ! queue leaky=downstream ! videoconvert ! queue ! x264enc ! avimux ! filesink location=/tmp/test.avi

The thing to keep in mind is that your encoder has to keep up with the live playback. So your pipeline needs to handle the case where the encoder falls out of sync. On the queue elements behind the tee, use the leaky attribute.

Then you also want to be careful about your video source and what it's supplying. It looks like in your case you want live video, but if your source was an existing video file the pipeline would probably need some more tweaking.

NOTE: It may be even simpler than that, just adding async=false to the videosink appears to be very important.