Problemi nel far registrare VLC dalla webcam dalla riga di comando


8

my ~ / .bashrc contiene la seguente funzione

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"}" 
}

Il comando funziona magnificamente per registrare direttamente dalla mia webcam, con uno o due difetti. Innanzitutto, il video prodotto si sposta troppo rapidamente, tra il doppio e il triplo della frequenza normale.

Inoltre, non c'è audio. Questo è meno un problema, ma vorrei ancora risolvere questo problema.

Qualcuno può aiutarmi a eseguire il debug di questo comando, in modo da risolvere questi problemi?

Risposte:


4

Questo one-liner ha funzionato per me, con audio e 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}"

Puoi anche provare questo:

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}"

La tua esperienza può variare, a seconda dell'hardware. In bocca al lupo!


Eh, nessuno di questi sta lavorando per me. Funziona solo "v4l2: /// dev / videoX", ma non so come specificare le opzioni lì. Nemmeno le opzioni sulla wiki sembrano funzionare ( wiki.videolan.org/Documentation:Modules/v4l2#Video_input )
gatoatigrado

1

Per curiosità, sei sicuro che la fonte audio sia la fonte corretta?

In secondo luogo (di nuovo, solo una domanda) perché non stai usando ffmpeg per lo streaming del video invece?
Qualcosa di simile ma non del tutto:

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

Scambia l'ingresso audio e l'ingresso video a tuo piacimento e poi scherza con l'effettiva conversione dei file, sono un po 'arrugginito su ffmpeg e mplayer ma è fattibile. + un amico l'ha fatto con Raspberry Pi con ~ 20fps @ 1080p, quindi dovresti andare bene con le apparecchiature standard con questo metodo :)


0

Ottieni una panoramica di tutti i dispositivi (in questo esempio: / dev / video0):

v4l2-ctl --list-devices

Verifica i formati disponibili:

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

Determina la sorgente sonora (scheda: 0 ..., dispositivo: 1 ... è uguale a hw: 0,1 . In questo esempio hw: 0,0):

arecord -l

Registra video + audio, direttamente su file:

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 stesso ma con video live:

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}}"  

Puoi cvlctornare a vlcse vuoi avere controlli + menu.

Altre opzioni con il modulo v4l2 in VLC.


0

Incapace di ottenere risultati coerenti o di trovare un esempio minimo, ho provato a leggere le istruzioni in agguato per cose come questa,

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

alla fine questo sembra funzionare come un esempio minimo,

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

anche se non ho verificato la sincronizzazione o la qualità, ero davvero curioso di vedere quale feedback audio e video avrei potuto produrre puntando la telecamera sullo schermo e accendendo lo spettrometro, potrebbe far funzionare entrambi i canali e puoi modificare da lì. È possibile ottenere i dispositivi appropriati dalle risposte precedenti AFAICT.

Ho questa versione:

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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.