Probleme beim Aufzeichnen von VLC von der Webcam über die Befehlszeile

8

Mein ~ / .bashrc enthält die folgende Funktion

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

Der Befehl funktioniert wunderbar, um direkt von meiner Webcam mit ein oder zwei Fehlern aufzunehmen. Erstens bewegt sich das produzierte Video zu schnell, zwischen dem Zwei- und Dreifachen der normalen Rate.

Es gibt auch kein Audio. Dies ist weniger ein Problem, aber ich möchte dies trotzdem beheben.

Kann mir jemand beim Debuggen dieses Befehls helfen, um diese Probleme zu beheben?

ixtmixilix
quelle

Antworten:

4

Dieser Einzeiler arbeitete für mich mit Audio und 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}"

Sie können auch dieses ausprobieren:

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

Ihre Erfahrung kann je nach Hardware variieren. Viel Glück!

balkian
quelle
Huh, keines davon arbeitet für mich. Nur 'v4l2: /// dev / videoX' funktioniert, aber ich weiß nicht, wie ich dort Optionen angeben soll. Die Optionen im Wiki scheinen auch nicht zu funktionieren ( wiki.videolan.org/Documentation:Modules/v4l2#Video_input )
gatoatigrado
1

Sind Sie aus Neugier sicher, dass die Audioquelle die richtige Quelle ist?

Zweitens (wieder nur eine Frage), warum verwenden Sie nicht ffmpeg, um das Video stattdessen zu streamen?
So etwas wie aber nicht ganz:

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

Tauschen Sie den Audio- und Videoeingang nach Ihren Wünschen aus und spielen Sie dann mit der eigentlichen Dateikonvertierung herum. Ich bin ein bisschen verrostet bei ffmpeg und mplayer, aber es ist machbar. + Ein Freund hat es mit Himbeer-Pi mit ~ 20fps @ 1080p gemacht, also solltest du mit Standardausrüstung über diese Methode gut zurechtkommen :)

Torxed
quelle
0

Verschaffen Sie sich einen Überblick über alle Geräte (in diesem Beispiel: / dev / video0):

v4l2-ctl --list-devices

Überprüfen Sie die verfügbaren Formate:

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

Bestimmen Sie die Tonquelle (Karte: 0 ..., Gerät: 1 ... ist gleich hw: 0,1 . In diesem Beispiel hw: 0,0):

arecord -l

Video + Audio direkt in Datei aufnehmen:

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

Gleich, aber mit Live-Video:

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

Sie können cvlczurück zu wechseln , vlcwenn Sie Steuerelemente + Menü haben möchten.

Weitere Optionen mit dem v4l2-Modul in VLC.

Gefahr89
quelle
0

Da ich keine konsistenten Ergebnisse erzielen oder kein minimales Beispiel finden konnte, habe ich versucht, die Anweisungen zu lesen, die für solche Dinge gelten.

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

letztendlich scheint dies als minimales Beispiel zu funktionieren,

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

Obwohl ich weder die Synchronisierung noch die Qualität überprüft habe, war ich gespannt, welche Audio- und Videofeedbacks ich auf den Bildschirm richten und das Spektrometer einschalten kann. Möglicherweise werden beide Kanäle abgespielt, und Sie können von dort aus optimieren. Sie können Ihre entsprechenden Geräte aus den vorherigen Antworten AFAICT erhalten.

Ich habe diese Version:

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.
Mike Marchywka
quelle