(I have changed the subject,
because the subject has changed.)

On Oct 14 01:59:39, Jacob Meuser wrote:
> On Thu, Oct 14, 2010 at 12:05:09AM +0000, Jacob Meuser wrote:
> > On Thu, Oct 14, 2010 at 12:59:37AM +0200, Jan Stary wrote:
> > > On Oct 13 22:07:27, Jacob Meuser wrote:
> > > > On Wed, Oct 13, 2010 at 11:51:47PM +0200, Jan Stary wrote:
> > > > > This is a fresh upgrade of current/amd64 on a Macbook3,1.
> > > > > Basically, everything works except the wifi and uvideo.
> > > > 
> > > > > I installed the uvideo firmware as documented in uvideo(4).
> > > > > I can capture an image with 'fswebcam image.jpg';
> > > > > I have problems capturing a video stream with
> > > > > ffmpeg -y -f video4linux2 -s vga -r 25 -i /dev/video0 /tmp/out.mpg
> > > > > (the fps eventually drops to 0 and results in a tiny file
> > > > > containing just a few frames) but I haven't really tried
> > > > > tweaking the format options.
> > > > 
> > > > ffmpeg doesn't work with video(4).  frankly, I don't understand why
> > > > video(4) support is enabled in ffmpeg, giving the the impression it's
> > > > supposed to work, when it clearly doesn't.
> > > 
> > > On another machine (HP EliteBook 8530w running a recent -current)
> > > I can capture video(4) just fine - using certain resolutions and frame
> > > rates, that is.
> > 
> > with ffmpeg?  can you share your command, I've never gotten it to work.

This _sometimes_ works:
ffmpeg -y -f video4linux2 -r 25 -s vga -i /dev/video out.mpg
Other times, the fps gradually drops to zero.

With the current ffmpeg (just built form svn),
it consistently results in

ffmpeg -y -f video4linux2 -r 25 -s vga -i /dev/video0 /tmp/out.m>
FFmpeg version SVN-r25502, Copyright (c) 2000-2010 the FFmpeg developers
built on Oct 16 2010 14:05:50 with gcc 4.2.1 20070719 
configuration: 
libavutil     50.32. 3 / 50.32. 3
libavcore      0. 9. 1 /  0. 9. 1
libavcodec    52.92. 0 / 52.92. 0
libavformat   52.83. 0 / 52.83. 0
libavdevice   52. 2. 2 / 52. 2. 2
libavfilter    1.52. 0 /  1.52. 0
libswscale     0.12. 0 /  0.12. 0
[video4linux2 @ 0x83f3d080] ioctl set time per frame(1/25) failed
/dev/video0: Input/output error

It fails this way with any other framerate, too.
So you are right: it doesn't work.

> fwiw, this is what I use, because using ffmpeg to capture directly from
> video(4) has never worked for me:
> 
> $ video -f /dev/video1 -e yuy2 -s 640x480 -r 20 -o - | ffmpeg -y \
> -f rawvideo -pix_fmt yuyv422 -s 640x480 -r 20 -i - \
> -itsoffset 0.5 -f sndio -ar 16000 -ac 1 -i sun:1 out.avi

This is much more reliable;
without audio, I can capture just fine with

$ video -f /dev/video -e yuy2 -s 640x480 -r 20 -o - \
| ffmpeg -y -f rawvideo -pix_fmt yuyv422 -s 640x480 -r 20 -i - out.avi

However, the audio part does not work for me.
The ffmpeg-20100512p4 package says

$ video -f /dev/video -e yuy2 -s 640x480 -r 20 -o - \
| ffmpeg -y -f rawvideo -pix_fmt yuyv422 -s 640x480 -r 20 -i - \
-f sndio -ar 16000 -ac 1 -i sun:1 out.avi
FFmpeg version SVN-r23102, Copyright (c) 2000-2010 the FFmpeg developers
  built on Oct 11 2010 18:27:01 with gcc 4.2.1 20070719 
  configuration: --enable-shared --cc=cc --disable-altivec --disable-armv5te 
--disable-armv6 --disable-armv6t2 --disable-armvfp --disable-debug 
--disable-indev=jack --disable-indev=oss --disable-iwmmxt --disable-neon 
--disable-optimizations --disable-outdev=oss --enable-gpl --enable-libfaac 
--enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libschroedinger 
--enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 
--enable-nonfree --enable-postproc --enable-pthreads --enable-runtime-cpudetect 
--enable-x11grab --extra-cflags=-I/usr/local/include -I/usr/X11R6/include 
--extra-libs=-L/usr/local/lib -L/usr/X11R6/lib --mandir=/usr/local/man
  libavutil     50.15. 2 / 50.15. 2
  libavcodec    52.67. 0 / 52.67. 0
  libavformat   52.62. 0 / 52.62. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.20. 0 /  1.20. 0
  libswscale     0.10. 0 /  0.10. 0
  libpostproc   51. 2. 0 / 51. 2. 0
[rawvideo @ 0x80239080]Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'pipe:':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: rawvideo, yuyv422, 640x480, 20 tbr, 20 tbn, 20 tbc
[sndio @ 0x83bc9080]Could not open sndio device
sun:1: Input/output error

I get the same result with -f sndio -i /dev/audio.
I get the same result with or without aucat running.

The svn install of ffmpeg doesn't even recognize sndio as a format
(Unknown input format: 'sndio'). It does recognize -f oss,
and I can capture both video and audio with

$ video -f /dev/video -e yuy2 -s 640x480 -r 20 -o - \
| ffmpeg -y -f rawvideo -pix_fmt yuyv422 -s 640x480 -r 20 -i - \
-f sndio -ar 48000 -ac 2 -i /dev/audio out.avi

> the audio is just slightly ahead (out of sync) without the -itsoffset.
> the sndio backend in ffmpeg has fairly accurate timestamping; the
> stamps should represent when the sound actually happened.  video(1) otoh
> is just outputting a stream of raw frames, so ffmpeg assumes the
> frames' timestamp is when they are read from stdin.  apparently on this
> system with this camera it takes about a half second for images to be
> captured and sent to stdout.

Yes, the above records an out of sync A/V stream,
and -itsoffset can fix it. Thanks!

        Jan

Reply via email to