Problème pour que VLC enregistre à partir de la webcam via la ligne de commande


8

mon ~ / .bashrc contient la fonction suivante

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

La commande fonctionne à merveille pour enregistrer directement depuis ma webcam, avec un ou deux défauts. Premièrement, la vidéo produite se déplace trop rapidement, entre deux et trois fois le taux normal.

De plus, il n'y a pas d'audio. C'est moins un problème, mais je voudrais quand même résoudre ce problème.

Quelqu'un peut-il m'aider à déboguer cette commande, afin de résoudre ces problèmes?

Réponses:


4

Ce one-liner a fonctionné pour moi, avec audio et vidéo:

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

Vous pouvez également essayer celui-ci:

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

Votre expérience peut varier en fonction de votre matériel. Bonne chance!


Huh, rien de tout cela ne fonctionne pour moi. Seul «v4l2: /// dev / videoX» fonctionne, mais je ne sais pas comment y spécifier des options. Les options sur le wiki ne semblent pas fonctionner non plus ( wiki.videolan.org/Documentation:Modules/v4l2#Video_input )
gatoatigrado

1

Par curiosité, êtes-vous sûr que la source audio est la bonne source?

Deuxièmement (encore une fois, juste une question) pourquoi n'utilisez-vous pas ffmpeg pour diffuser la vidéo à la place?
Quelque chose comme mais pas tout à fait:

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

Échangez l'entrée audio et l'entrée vidéo à votre guise, puis dérangez-vous avec la conversion de fichier réelle, je suis un peu rouillé sur ffmpeg et mplayer mais c'est faisable. + un ami l'a fait avec framboise pi avec ~ 20fps @ 1080p donc vous devriez être bien avec un équipement standard via cette méthode :)


0

Obtenez un aperçu de tous les périphériques (dans cet exemple: / dev / video0):

v4l2-ctl --list-devices

Vérifiez les formats disponibles:

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

Déterminer la source sonore (carte: 0 ..., appareil: 1 ... est égal à hw: 0,1 . Dans cet exemple hw: 0,0):

arecord -l

Enregistrez la vidéo + l'audio, directement dans un fichier:

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

Idem mais avec vidéo en direct:

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

Vous pouvez cvlcrevenir à vlcsi vous voulez avoir des contrôles + menu.

Plus d'options avec le module v4l2 dans VLC.


0

Impossible d'obtenir des résultats cohérents ou de trouver un exemple minimal, j'ai essayé de lire les instructions pour des choses comme ça,

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

en fin de compte, cela semble fonctionner comme un exemple minimal,

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

même si je n'ai pas vérifié la synchronisation ou la qualité du tout, en effet, j'étais curieux de voir quels commentaires audio et vidéo je pouvais produire en pointant la caméra sur l'écran et en allumant le spectromètre, cela peut faire jouer les deux canaux et vous pouvez modifier à partir de là. Vous pouvez obtenir vos appareils appropriés à partir des réponses précédentes AFAICT.

J'ai cette 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.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.