opkg update
opkg install kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-uhci usbutils
reboot
lsusb
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 045e:0779 Microsoft Corp. LifeCam HD-3000
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
opkg update
opkg install kmod-video-uvc
opkg update
opkg install kmod-video-gspca-core
opkg install kmod-video-gspca-xxx
reboot
ls /dev/vid*
/dev/video0
opkg update
opkg install v4l-utils
v4l2-ctl --help
opkg update
opkg install fswebcam
fswebcam /www/test.jpg
fswebcam -d v4l2:/dev/video0 -i 0 -r 640x480 --jpeg 75% --no-banner --save /www/test.jpg
fswebcam -d v4l2:/dev/video0 -i 0 -r 640x472 --skip 15 --flip v --jpeg 75% --no-banner --save /www/test.jpg
fswebcam --help
fswebcam -c fswebcam.conf
#quiet Hides all messages except for errors.
#verbose # Displays extra messages while capturing
#loop <seconds> Run in loop mode.
#background Run in the background.
#output <filename> Output the log to a file.
device v4l2:/dev/video0
input 0
#tuner <number> Selects the tuner to use.
frequency 0
#palette <name> Selects the palette format to use.
#delay <number> Sets the pre-capture delay time. (seconds)
resolution 640x480
fps 5
#frames <number> Sets the number of frames to capture.
skip 4
#dumpframe <filename> Dump a raw frame to file.
#set <name>=<value> Sets a control value.
#revert Restores original captured image.
#flip <direction> Flips the image. (h, v)
#crop <size>[,<offset>] Crop a part of the image.
#scale <size> Scales the image.
#rotate <angle> Rotates the image in right angles.
#deinterlace Reduces interlace artifacts.
#invert Inverts the images colours.
#greyscale Removes colour from the image.
#swapchannels <c1c2> Swap channels c1 and c2.
no-banner
#underlay <PNG image> Sets the underlay image.
#no-underlay Clears the underlay.
#overlay <PNG image> Sets the overlay image.
#no-overlay Clears the overlay.
jpeg 50%
#png <factor> Outputs a PNG image. (-1, 0 - 10)
save /www/test.jpg
#exec <command> Execute a command and wait for it to complete.
opkg update
opkg install mjpg-streamer
config mjpg-streamer 'core'Los valores de color se pueden cambiar. Los demás, mejor no.
option enabled 'true'
option input 'uvc'
option output 'http'
option device '/dev/video0'
option resolution '640x480'
option yuv '1'
option quality '60'
option fps '5'
option led 'auto'
option www '/www/webcam'
option port '8080'
option username 'user'
option password 'pass'
/etc/init.d/mjpg-streamer start
/etc/init.d/mjpg-streamer stop
root@OpenWrt:~# lsusb
Bus 002 Device 002: ID 041e:4028 Creative Technology, Ltd Vista Plus cam [VF0090]
gspca_pac207 041e:4028 Creative Webcam Vista Plus
opkg update
opkg install kmod-video-gspca-core
opkg install kmod-video-gspca-pac207
reboot
root@OpenWrt:~# v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'P207'
Name : P207
Size: Discrete 176x144
Size: Discrete 352x288
root@OpenWrt:~# v4l2-ctl --list-ctrls
User Controls
brightness (int) : min=0 max=255 step=1 default=46 value=46 flags=slider
exposure (int) : min=3 max=90 step=1 default=5 value=5 flags=inactive
gain_automatic (bool) : default=1 value=1 flags=update
gain (int) : min=0 max=31 step=1 default=7 value=7 flags=inactive
brightness (int) : min=0 max=255 step=1 default=46 value=46 flags=slider
exposure (int) : min=3 max=90 step=1 default=5 value=5 flags=inactive
gain_automatic (bool) : default=1 value=1 flags=update
gain (int) : min=0 max=31 step=1 default=7 value=7 flags=inactive
root@OpenWrt:~# fswebcam -d v4l2:/dev/video0 -i 0 -r 352x288 --no-banner --save /www/test.jpgEl formato de píxel P207 no está soportado por fswebcam (ni por mpg-streamer).
--- Opening v4l2:/dev/video0...
/dev/video0 opened.
Unable to find a compatible palette format.
root@OpenWrt:~# lsusb
Bus 002 Device 003: ID 0ac8:307b Z-Star Microelectronics Corp. USB 1.1 Webcam
gspca_zc3xx 0ac8:307b Ldlc VC302+Ov7620
opkg update
opkg install kmod-video-gspca-core
opkg install kmod-video-gspca-zc3xx
reboot
root@OpenWrt:~# v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'JPEG' (compressed)
Name : JPEG
Size: Discrete 320x232
Size: Discrete 640x472
root@OpenWrt:~# v4l2-ctl --list-ctrls
User Controls
brightness (int) : min=0 max=255 step=1 default=128 value=128 flags=slider
contrast (int) : min=0 max=255 step=1 default=128 value=128 flags=slider
gamma (int) : min=1 max=6 step=1 default=3 value=3 flags=slider
gain_automatic (bool) : default=1 value=1
power_line_frequency (menu) : min=0 max=2 default=0 value=1
sharpness (int) : min=0 max=3 step=1 default=2 value=2 flags=slider
JPEG Compression Controls
compression_quality (int) : min=50 max=87 step=1 default=75 value=75
brightness (int) : min=0 max=255 step=1 default=128 value=128 flags=slider
contrast (int) : min=0 max=255 step=1 default=128 value=128 flags=slider
gamma (int) : min=1 max=6 step=1 default=3 value=3 flags=slider
gain_automatic (bool) : default=1 value=1
power_line_frequency (menu) : min=0 max=2 default=0 value=1
sharpness (int) : min=0 max=3 step=1 default=2 value=2 flags=slider
root@OpenWrt:~# fswebcam -d v4l2:/dev/video0 -i 0 -r 640x472 -s 10 --flip v --no-banner --save /www/test.jpgOK.
--- Opening v4l2:/dev/video0...
/dev/video0 opened.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Flipping image vertically.
Disabling banner.
Writing JPEG image to '/www/test.jpg'.
config mjpg-streamer 'core'Formato de píxel JPEG -> option yuv '0'
option enabled '1'
option input 'uvc'
option output 'http'
option device '/dev/video0'
option resolution '640x472'
option yuv '0'
option quality '75'
option fps '5'
option led 'on'
option www '/www/webcam'
option port '8080'
option minimum_size '1'
# option username 'openwrt'
# option password 'openwrt'
root@OpenWrt:~# lsusb
Bus 001 Device 002: ID 0471:0333 Philips (or NXP) SPC 620NC PC Camera
0471:0333 Philips SPC 620NC Philips
opkg update
opkg install kmod-video-uvc
reboot
root@OpenWrt:~# v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.020s (50.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.040s (25.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Interval: Discrete 0.200s (5.000 fps)
root@OpenWrt:~# v4l2-ctl --list-ctrls
brightness (int) : min=0 max=37 step=1 default=24 value=24
contrast (int) : min=0 max=200 step=1 default=124 value=124
saturation (int) : min=0 max=200 step=1 default=121 value=121
white_balance_temperature_auto (bool) : default=1 value=0
gamma (int) : min=1 max=31 step=1 default=18 value=18
power_line_frequency (menu) : min=0 max=2 default=0 value=0
white_balance_temperature (int) : min=2800 max=6800 step=100 default=6600 value=6600
sharpness (int) : min=0 max=63 step=1 default=15 value=15
backlight_compensation (int) : min=0 max=2 step=1 default=0 value=0
brightness (int) : min=0 max=37 step=1 default=24 value=24
contrast (int) : min=0 max=200 step=1 default=124 value=124
saturation (int) : min=0 max=200 step=1 default=121 value=121
white_balance_temperature_auto (bool) : default=1 value=0
gamma (int) : min=1 max=31 step=1 default=18 value=18
power_line_frequency (menu) : min=0 max=2 default=0 value=0
white_balance_temperature (int) : min=2800 max=6800 step=100 default=6600 value=6600
sharpness (int) : min=0 max=63 step=1 default=15 value=15
backlight_compensation (int) : min=0 max=2 step=1 default=0 value=0
root@OpenWrt:~# fswebcam -d v4l2:/dev/video0 -i 0 -r 640x480 --no-banner --save /www/test.jpgOK.
--- Opening v4l2:/dev/video0...
/dev/video0 opened.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '/www/test.jpg'.
config mjpg-streamer 'core'Formato de píxel YUYV -> option yuv '1' (Muy alto consumo de CPU). La CPU se satura a -r 640x480 -f 25 fps. Para obtener vídeo fluido hay que bajar la resolución o los fps.
option enabled '1'
option input 'uvc'
option output 'http'
option device '/dev/video0'
option resolution '640x480'
option yuv '1'
option quality '75'
option fps '5'
option led 'auto'
option www '/www/webcam'
option port '8080'
root@OpenWrt:~# lsusb
Bus 001 Device 002: ID 045e:0779 Microsoft Corp. LifeCam HD-3000
045e:0779 Microsoft LifeCam HD-3000 Microsoft
opkg update
opkg install kmod-video-uvc
reboot
root@OpenWrt:~# v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUV 4:2:2 (YUYV)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 1280x720
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 960x544
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 800x448
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 424x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 800x600
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 1280x800
Interval: Discrete 0.100s (10.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : MJPEG
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 960x544
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 800x448
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 800x600
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 416x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.050s (20.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Interval: Discrete 0.133s (7.500 fps)
root@OpenWrt:~# v4l2-ctl --list-ctrls
brightness (int) : min=30 max=255 step=1 default=133 value=133
contrast (int) : min=0 max=10 step=1 default=5 value=5
saturation (int) : min=0 max=200 step=1 default=83 value=83
white_balance_temperature_auto (bool) : default=1 value=1
power_line_frequency (menu) : min=0 max=2 default=2 value=1
white_balance_temperature (int) : min=2800 max=10000 step=1 default=4500 value=4500 flags=inactive
sharpness (int) : min=0 max=50 step=1 default=25 value=25
backlight_compensation (int) : min=0 max=10 step=1 default=0 value=0
exposure_auto (menu) : min=0 max=3 default=1 value=3
exposure_absolute (int) : min=5 max=20000 step=1 default=156 value=156 flags=inactive
pan_absolute (int) : min=-201600 max=201600 step=3600 default=0 value=0
tilt_absolute (int) : min=-201600 max=201600 step=3600 default=0 value=0
zoom_absolute (int) : min=0 max=10 step=1 default=0 value=0
brightness (int) : min=30 max=255 step=1 default=133 value=133
contrast (int) : min=0 max=10 step=1 default=5 value=5
saturation (int) : min=0 max=200 step=1 default=83 value=83
white_balance_temperature_auto (bool) : default=1 value=1
power_line_frequency (menu) : min=0 max=2 default=2 value=1
white_balance_temperature (int) : min=2800 max=10000 step=1 default=4500 value=4500 flags=inactive
sharpness (int) : min=0 max=50 step=1 default=25 value=25
backlight_compensation (int) : min=0 max=10 step=1 default=0 value=0
root@OpenWrt:~# fswebcam -d v4l2:/dev/video0 -i 0 -r 1280x720 --no-banner --save /www/test.jpgOK.
--- Opening v4l2:/dev/video0...
/dev/video0 opened.
--- Capturing frame...
Captured frame in 0.00 seconds.
--- Processing captured image...
Disabling banner.
Writing JPEG image to '/www/test.jpg'.
config mjpg-streamer 'core'El formato MJPG (option yuv '0') va bien, incluso a 1280x720 y 25 fps.
option enabled '1'
option input 'uvc'
option output 'http'
option device '/dev/video0'
option resolution '1280x720'
option yuv '0'
option quality '75'
option fps '25'
option led 'auto'
option www '/www/webcam'
option port '8080'
v4l2-ctl --set-fmt-video=pixelformat='MJPG'
mjpg_streamer -i "input_uvc.so -r 960x544 -f 25" -o "output_http.so -p 8080"
Muchas gracias raphik...
Bueno, pues ahora Me toca a Mi, jejejeje.....Bravo.
Vamos a reciclar una webcam que podemos tener de algún despiece de portatil de esos que a veces se nos queda por ahi en un cajón... la webcam está en la parte superior de la pantalla, la cual tendremos que abrir, para obtener una placa de circuito impreso similar a esta:(https://c1.staticflickr.com/1/489/19680434085_bf2553ab4e_b.jpg)
Al ver el lado izquierdo, donde el conector, ya intuimos que con 4 o 5 pines, la cámara es USB... solo nos queda ver como conectarla o averiguar los pines...(http://farm1.staticflickr.com/464/19684924731_771599ae79_b.jpg)
En este caso, hemos tenido suerte, puesto que el pin-out de la cam está en la serigrafía, asi que simplemente con coger un cable USB al que previamente hemos pelado los hilos, conectaremos el Rojo y negro a +5V y GND, respectivamente, y el verde y blanco a +D y -D, y ya está... pero la mayoría de las veces no hay serigrafía y nos toca investigar... veamos como.....(http://farm1.staticflickr.com/496/19059500063_557789a126_b.jpg)
Toda cam USB tiene al lado del conector una pequeña bobina doble, una especie de componente de color negro en el que se adivinan 4 patas, siendo dos de entrada y dos de salida... dicha bobina está en serie con los pines +D y -D, con objeto de filtrar posibles espúreos que afecten al trasvase de datos USB.... así que ya tenemos localizados dos pines.... En la siguiente foto está marcado y se ve mejor...(http://farm1.staticflickr.com/486/19680432665_a8759deaa2_b.jpg)
Tomamos de la bobina doble los 2 pines superiores, y medimos con el ohmetro la continuidad entre una de esas patillas y los pines del conector de la Cam, marcando en uno de ellos, pudiendo ser +D o -D... así que volveremos a medir la continuidad entre el otro pin superior de la bobina y el conector, obteniendo el otro pin que podrá ser +D o -D... en cualquier caso, tendremos identificadas la entrada de datos...(http://farm1.staticflickr.com/511/19673322162_c2ae74b7f4_b.jpg)
Ahora veamos la alimentación.... el negativo o GND es fácil: cualquier agujero metalizado de los tornillos de la cam es la "masa" o negativo... Respecto al positivo de +5V, lo normal es que siempre haya un componente que pone "000", "F" o similar, que es un fusible colocado como protección, y que evidentemente irá al voltaje positivo, asi que.... nuevamente colocamos el ohmetro y medimos entre los pines que nos queden sin identificar en el conector de la Cam y uno de los pines del componente "000".... cuando marque continuidad, habremos identificado el voltaje +5V de entrada....(http://farm1.staticflickr.com/494/19492811240_16b680c965_b.jpg)
Ahora cogeremos el cable USB cortado y soldaremos los 4 pines con los colores anteriormente expuestos en los puntos anteriormente obtenidos.... Eh!! que si tenemos el conector de la Cam, podemos hacer empalmes y nos ahorramos la soldadura..... Eso si, según la ley de Murphy, lo mas probable es que invirtamos +D y -D... no pasa nada, le damos la vuelta a los cable y volvemos a probar, jejejejeje....(http://farm1.staticflickr.com/486/19680918075_67be2470c2_b.jpg)
Esta es la que fabriqué... en Mi caso desoldé el conector con el soldador de aire caliente, y soldé los pines directamente... posteriormente le puse una gota de silicona para darle resistencia a la tracción mecánica y puse una funda termoretractil de protección.....
Evidentemente, el siguiente paso es ver si se reconoce la cámara, ya sea en Windows o en Linux, y si eso sucede es que todo es correcto.... ya despues tocará pelearse con Openwrt, asi que... a divertirse!!!
P.D.: Con la misma técnica, averigué y monté un lector de huellas digitales obtenido de un portátil HP Mini.... y quedó asi de bien!!!... Se podrá utilizar en OpenWrt???(https://c1.staticflickr.com/1/385/19494580509_85f54a23c9_b.jpg)
Mem: 24520K used, 4220K free, 64K shrd, 984K buff, 2552K cached CPU: 74% usr 2% sys 0% nic 22% idle 0% io 0% irq 0% sirq Load average: 1.20 1.12 0.95 2/42 1179 PID PPID USER STAT VSZ %VSZ %CPU COMMAND 1172 1170 root S 13208 46% 76% motion -c /etc/motion.conf |
2º Grabar un simple vídeo de x's segundos ó minutos sin necesidad de movimientos, al margen de que haya que usar o no el Motion. Vaya una simple línea de comando donde sea por ejemplo: ffmpeg /dev/video0 prueba.mp4 30 (30 segundos).
Con respecto al 2º punto:
He estado buscando y he encontrado: ffmpeg como mejor opción para grabar un simple vídeo por línea de comandos, estoy probando en línea de comandos y el programa responde en base a info que encuentro, pero claro, awita para hallar la bendita línea de comando mágica para el cometido propuesto, he estado visitando:
Una tontería, pero, ¿has probado a ejecutar un programa paralelo, que espere 30 segundos, y mande un killall al ffmpeg para pararlo?
Si el ffmpeg responde bien, debería dejarte el vídeo sin corromper.
Lo mismo lo que he dicho es una tontería, pero es lo primero que se me ha ocurrido para ponerle un contador de tiempo...
lsusb
Bus 002 Device 002: ID 054c:0155 Sony corporation EyeToy USB camera Namtai
gspca_ov519 054c:0155 Sonny toy5
opkg update
opkg install kmod-video-gspca-core
opkg install kmod-video-gspca-ov519
reboot
root@OpenWrt:~# v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'JPEG' (JFIF JPEG, compressed)
Size: Discrete 320x240
Size: Discrete 640x480
root@OpenWrt:~# v4l2-ctl --list-ctrls
User Controls
brightness 0x00980900 (int) : min=0 max=255 step=1 default=127 value=127 flags=slider
saturation 0x00980902 (int) : min=0 max=255 step=1 default=127 value=127 flags=slider
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=0 value=0