[gst-devel] Slight audio/video sync problem - any suggestions?

Jason L. Buberel jason at buberel.org
Thu Mar 6 20:59:52 CET 2008


Edgard,

Testing with the following command (very slightly modified from your 
suggestion):

gst-launch-0.10 v4l2src ! ffmpegcolorspace ! 
video/x-raw-yuv,format=\(fourcc\)I420,width=800,height=600,framerate=15/1 
! tee name=t ! queue2 ! timeoverlay ! theoraenc ! oggmux name=mux ! 
filesink location=1.ogg alsasrc ! queue2 ! audioconvert ! vorbisenc ! 
mux. t. ! queue leaky=2 ! videoscale ! xvimagesink sync=false

Produced the following behavior:

1. A display window was opened, showing a static (single frame) of 
output from the video camera.
2. The initial output from gst-launch was:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstAudioSrcClock

3. After waiting a while, I pressed Ctrl-C:

Caught interrupt -- handling interrupt.
Interrupt: Setting pipeline to PAUSED ...
Execution ended after 6333893000 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...

4. After a little while longer, I pressed Ctrl-C again.

5. The output file '1.ogg' was zero bytes.

Would this indicates that the 'tee' element is not quite configured 
correct? I've never used that before...

-jason

Edgard Lima wrote:
> Hi,
>
> nice your blog
>
> http://www.buberel.org/serendipity/
>
> and nice
>
> http://gentrans.sourceforge.net/
>
> project
>
> But I think, unfortunately, it doesn't help for something more robust
> and professional.
>
> In case of your pipeline:
>
> gst-launch-0.10  v4l2src queue-size=16 !  stamp sync-margin=1
> sync-interval=1
>     ! video/x-raw-yuv,width=800,height=600,framerate=15/1
>     ! queue2 max-size-buffers=1000 max-size-bytes=0 max-size-time=0  !
> ffmpegcolorspace
>     ! theoraenc quality=60 name=venc  alsasrc device="hw:1,0"
>     !  audio/x-raw-int,rate=16000,channels=1,depth=16
>     !  audioconvert ! queue2 max-size-buffers=1000 max-size-bytes=0
> max-size-time=0
>     !  vorbisenc quality=0.9 name=aenc oggmux name=mux ! filesink
> location=test.ogg aenc. ! mux. venc. ! mux
>
> Considering you have 100% CPU usage, what happens is that you are
> delaying the problem a bit by using a large queue (1000) and again
> delaying the problem a bit with "stamp" element
>
> Please try with the following pipeline:
>
> gst-launch-0.10 v4l2src ! ffmpegcolorspace ! video/x-raw-yuv,
> format=\(fourcc\)I420, width=640, height=480 ! tee name=t ! queue2 !
> timeoverlay ! theoraenc ! oggmux name=mux ! filesink location=1.ogg
> alsasrc ! queue2 ! audioconvert ! vorbisenc ! mux. t. ! queue leaky=2 !
> videoscale ! xvimagesink sync=false
>
> Then try change the resolution to the one your camera accept
> (width=800,height=600,framerate=15/1) and see if you can remove
> ffmpegcolorspace and videoscale
>
> if you don't have 100% you will have best result.
>
> if you have 100% then try to increase the queue size (or also use stamp)
> so it would be ok to make short videos (as you already did).
>
> - - - - - - - - - - - - - - - - - --
>
> Now I would like discuss what would be the best way to record audio and
> video in 100% cpu case.
>
> if I use
>
> gst-launch-0.10 v4l2src ! ffmpegcolorspace ! video/x-raw-yuv,
> format=\(fourcc\)I420, width=1280, height=960 ! tee name=t ! queue2 !
> timeoverlay ! theoraenc ! oggmux name=mux ! filesink location=1.ogg
> alsasrc ! queue2 ! audioconvert ! vorbisenc ! mux. t. ! queue leaky=2 !
> videoscale ! xvimagesink sync=false
>
> then my file isn't recorded properly (Can't record audio fast
> enough...this discontinuity breaks the recording)
>
> BUT
>
> gst-launch-0.10 v4l2src ! ffmpegcolorspace ! video/x-raw-yuv,
> format=\(fourcc\)I420, width=1280, height=960 ! tee name=t ! queue2 !
> timeoverlay ! theoraenc ! oggmux name=mux ! filesink location=1.ogg
> alsasrc ! queue2 ! audioconvert ! vorbisenc ! oggmux ! filesink
> location=2.ogg  mux. t. ! queue leaky=2 ! videoscale ! xvimagesink
> sync=false
>
> Both audio and video file are recorded fine (individually). In addition,
> the audio file has duration greater than video file. I think it happens
> because of video dropping.
>
> But I think it is close to the best thing that could be done. So what I
> would like to do is to give priority to audio as much as possible, and
> drop videos, but still having audio and video sync. So, How to do it?
>
> Best Regards,
> Edgard
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20080306/7aba19ab/attachment.htm>


More information about the gstreamer-devel mailing list