[FFmpeg-user] ffmpeg record from usb webcam give huge sync problem

Vlăduţ Frăţiman fratiman.vladut at gmail.com
Sun Feb 22 23:03:54 CET 2015


Yes u are right, -s shoul be "-video_size" and -r => -framerate.
But not here are main problem. I make more test, i read everything i
found but still no solution (after two days).
For moment my command is to encode as avi (xvid) because seem to be
faster than mp4 encoding.
So command is: ./ffmpeg -y -f v4l2 -video_size 640x360 -framerate 5 -i
/dev/video0 -f alsa -ac 1 -i hw:1,0 -vcodec mpeg4 -vtag xvid -acodec
libmp3lame -q 3 -ab 96k output2.avi

Output is this:
./ffmpeg -y -f v4l2 -video_size 640x360 -framerate 5 -i /dev/video0 -f
alsa -ac 1 -i hw:1,0 -vcodec mpeg4 -vtag xvid -acodec libmp3lame -q 3
-ab 96k output2.avi
ffmpeg version N-43517-gac424b2-   http://johnvansickle.com/ffmpeg/
Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (Debian 4.9.2-10)
  configuration: --enable-gpl --enable-version3 --disable-shared
--disable-debug --enable-runtime-cpudetect --enable-libmp3lame
--enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex
--enable-libvorbis --enable-libvpx --enable-libfreetype
--enable-fontconfig --enable-libxvid --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc
--enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg
--enable-libopus --enable-libass --enable-gnutls --enable-libvidstab
--cc=gcc-4.9
  libavutil      54. 19.100 / 54. 19.100
  libavcodec     56. 25.101 / 56. 25.101
  libavformat    56. 23.103 / 56. 23.103
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.100 /  5. 11.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
[video4linux2,v4l2 @ 0xb941a20] The driver changed the time per frame
from 1/5 to 2/15
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 367.470086, bitrate: 27648 kb/s
    Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422,
640x360, 27648 kb/s, 7.50 fps, 7.50 tbr, 1000k tbn, 1000k tbc
Guessed Channel Layout for  Input Stream #1.0 : mono
Input #1, alsa, from 'hw:1,0':
  Duration: N/A, start: 1424641531.273806, bitrate: 768 kb/s
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 1 channels, s16, 768 kb/s
Output #0, avi, to 'output2.avi':
  Metadata:
    ISFT            : Lavf56.23.103
    Stream #0:0: Video: mpeg4 (xvid / 0x64697678), yuv420p, 640x360,
q=2-31, 200 kb/s, 7.50 fps, 7.50 tbn, 7.50 tbc
    Metadata:
      encoder         : Lavc56.25.101 mpeg4
    Stream #0:1: Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 48000
Hz, mono, s16p, 96 kb/s
    Metadata:
      encoder         : Lavc56.25.101 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg4 (native))
  Stream #1:0 -> #0:1 (pcm_s16le (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
frame=    4 fps=0.0 q=3.0 size=      48kB time=00:00:00.53 bitrate=
743.1kbits/sframe=    8 fps=7.9 q=3.0 size=      75kB time=00:00:01.06
bitrate= 578.8kbits/sframe=   10 fps=6.6 q=3.0 size=      92kB
time=00:00:01.73 bitrate= 432.7kbits/sframe=   13 fps=6.4 q=3.0 size=
   113kB time=00:00:02.26 bitrate= 409.4kbits/sframe=   15 fps=5.9
q=3.0 size=     138kB time=00:00:02.80 bitrate= 403.4kbits/sframe=
17 fps=5.6 q=3.0 size=     161kB time=00:00:03.20 bitrate=
412.3kbits/sframe=   20 fps=5.7 q=3.0 size=     195kB time=00:00:03.60
bitrate= 443.9kbits/sPast duration 0.908470 too large
Past duration 0.732430 too large
Past duration 0.735619 too large
Past duration 0.799629 too large
frame=   24 fps=5.9 q=3.0 size=     231kB time=00:00:04.13 bitrate= 457.4kbits/s

I see some message that is repeated: Past duration xxxxxxxxx too large

Problem i think is with uvcview driver wich is used by my cam.
According with this post:
https://lkml.org/lkml/2014/3/28/12
here are some problems with timestamp in v4l2 buffers
Follow this bugtrac: https://trac.ffmpeg.org/ticket/692#comment:15
tested ffmpeg with all option: -ts abs or mono2abs. Loaded uvcview
kernel module with "modprobe uvcvideo clock=realtime" but no change.
I'm not shure if current uvcview have patch mentioned in first link.
Everytime i get video about 7s later from sound.

On Sun, Feb 22, 2015 at 9:13 PM, Moritz Barsnick <barsnick at gmx.net> wrote:
> On Sun, Feb 22, 2015 at 09:42:40 +0200, Vlăduţ Frăţiman wrote:
>> ffmpeg -y -f v4l2 -s 640x360 -framerate 5 -i /dev/video0 -f alsa -ac 1 -i default:CARD=HD3000 -pix_fmt yuv420p -c:v libx264 -q:v 20 -r 5 -preset ultrafast -strict -2 -c:a aac capture.mkv
>
> I believe "-s" should be "-video_size".
> I believe "-q:v" has no effect on libx264, but I may be wrong.
>
> That said:
>
>> The main problem is that audio and video are totally out of sync.
>> Probably each device (video and audio) will not start simultaneously.
>> Is there any parameter to ensure that the two devices are ready
>> simultaneously so when recording, video and audio will be in sync?
>> In my case, audio start much faster. At begining video is freezing and
>> hear audio, then both play obviously out of sync and then audio is
>> finishing and video still playing until finish.
>
> Please show us the complete console output from the ffmpeg command.
>
> Moritz
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user


More information about the ffmpeg-user mailing list