Problemas para que VLC grabe desde la cámara web a través de la línea de comando


8

my ~ / .bashrc contiene la siguiente función

webcamrecord () {
vlc v4l2:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1.000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=640 :v4l-height=480 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout="#transcode{vfilter=adjust{gamma=1.5},vcodec=theo,vb=2000,scale=0.67,acodec=vorb,ab=128,channels=2}:standard{access=file,mux=ogg,dst="output_file.ogg"}" 
}

El comando funciona maravillosamente para grabar directamente desde mi cámara web, con uno o dos defectos. Primero, el video producido se mueve demasiado rápido, entre dos y tres veces la velocidad normal.

Además, no hay audio. Esto no es un problema, pero todavía me gustaría solucionarlo.

¿Alguien puede ayudarme a depurar este comando para solucionar estos problemas?

Respuestas:


4

Este one-liner funcionó para mí, con audio y video:

vlc v4l2:// :input-slave=alsa:// :v4l-vdev="/dev/video0" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1.000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=480 :v4l-height=360 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout="#transcode{vcodec=theo,vb=2000,fps=12,scale=0.67,acodec=vorb,ab=90,channels=1,samplerate=44100}:standard{access=file,mux=ogg,dst=output.ogg}"

También puedes probar este:

vlc v4l2:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/pcm" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching=300 :v4l-chroma="" :v4l-fps=-1.000000 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=480 :v4l-height=360 :v4l-brightness=-1 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=-1 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout="#transcode{vcodec=theo,vb=2000,fps=12,scale=0.67,acodec=vorb,ab=90,channels=1,samplerate=44100}:standard{access=file,mux=ogg,dst=output.ogg}"

Su experiencia puede variar, dependiendo de su hardware. ¡Buena suerte!


Huh, ninguno de estos está funcionando para mí. Solo funciona 'v4l2: /// dev / videoX', pero no sé cómo especificar las opciones allí. Las opciones en el wiki tampoco parecen funcionar ( wiki.videolan.org/Documentation:Modules/v4l2#Video_input )
gatoatigrado el

1

Por curiosidad, ¿estás seguro de que la fuente de audio es la fuente adecuada?

En segundo lugar (de nuevo, solo una pregunta) ¿por qué no estás usando ffmpeg para transmitir el video?
Algo parecido pero no del todo:

ffmpeg -b 100K -an -f video4linux2 -s 320x240 -r 10 -i /dev/audio2 -i /dev/video0 -b 100K -f ogg - | mplayer - -idle -demuxer ogg

Cambie la entrada de audio y la entrada de video a su gusto y luego juegue con la conversión de archivos real, estoy un poco oxidado en ffmpeg y mplayer, pero es factible. + un amigo lo hizo con frambuesa pi con ~ 20 fps a 1080p, por lo que debería estar bien con el equipo estándar a través de este método :)


0

Obtenga una descripción general de todos los dispositivos (en este ejemplo: / dev / video0):

v4l2-ctl --list-devices

Verifique los formatos disponibles:

v4l2-ctl --list-formats-ext -d /dev/video0

Determine la fuente de sonido (tarjeta: 0 ..., dispositivo: 1 ... es igual a hw: 0,1 . En este ejemplo hw: 0,0):

arecord -l

Grabe video + audio, directamente al archivo:

cvlc v4l2:///dev/video0:width=640:height=480 :input-slave=alsa://hw:0,0 --sout="#transcode{vcodec=theo,vb=2000,fps=20,scale=1.0,acodec=vorb,ab=90,channels=1,samplerate=44100}:standard{access=file,mux=ogg,dst=output.ogg}"

Lo mismo pero con video en vivo:

cvlc v4l2:///dev/video0:width=640:height=480 :input-slave=alsa://hw:0,0 --sout="#transcode{vcodec=theo,vb=2000,fps=20,scale=1.0,acodec=vorb,ab=90,channels=1,samplerate=44100}:duplicate{dst=display,dst=standard{access=file,mux=ogg,dst=output.ogg}}"  

Puede cvlcvolver a cambiar vlcsi desea tener controles + menú.

Más opciones con el módulo v4l2 en VLC.


0

Incapaz de obtener resultados consistentes o encontrar un ejemplo mínimo, intenté leer las instrucciones grepping para cosas como esta,

 vlc --longhelp --advanced | grep v4l | grep dev

en última instancia, esto parece funcionar como un ejemplo mínimo,

 vlc  alsa://plughw:1,0 --input-slave=v4l2:///dev/video0

Si bien no verifiqué la sincronización o la calidad en absoluto, de hecho tenía curiosidad por ver qué comentarios de audio y video podía producir apuntando la cámara a la pantalla y encendiendo el espectrómetro, puede hacer que ambos canales se reproduzcan y puede ajustar desde allí. Puede obtener sus dispositivos apropiados de las respuestas anteriores AFAICT.

Tengo esta versión:

VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)
VLC version 2.2.2 Weatherwax (2.2.2-0-g6259d80)
Compiled by buildd on lgw01-09.buildd (Aug  8 2017 18:59:52)
Compiler: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute it under the terms of the GNU General Public License;
see the file named COPYING for details.
Written by the VideoLAN team; see the AUTHORS file.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.