Problemas ao obter o VLC para gravar da webcam via linha de comando

8

meu ~ / .bashrc contém a seguinte função

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

O comando funciona lindamente para gravar diretamente da minha webcam, com uma ou duas falhas. Primeiro, o vídeo produzido é muito rápido, entre duas e três vezes a taxa normal.

Além disso, não há áudio. Este é um problema menor, mas eu ainda gostaria de corrigir isso.

Alguém pode me ajudar a depurar esse comando para corrigir esses problemas?

    
por ixtmixilix 14.12.2012 / 23:00

3 respostas

4

Este one-liner funcionou para mim, com áudio e vídeo:

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

Você também pode tentar 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}"

Sua experiência pode variar, dependendo do seu hardware. Boa sorte!

    
por 19.12.2012 / 00:57
1

Por curiosidade, você tem certeza de que a fonte de áudio é a fonte adequada?

Em segundo lugar (mais uma vez, apenas uma pergunta), por que você não está usando o ffmpeg para transmitir o vídeo em vez disso?
Algo parecido, mas não totalmente:

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

Troque a entrada de áudio e entrada de vídeo ao seu gosto e, em seguida, mexer com a conversão de arquivos real, estou um pouco enferrujado no ffmpeg e no mplayer, mas é factível. + um amigo fez com raspberry pi com ~ 20fps @ 1080p então você deve estar bem com o equipamento padrão através deste método:)

    
por 19.12.2012 / 00:48
0

Obtenha uma visão geral de todos os dispositivos (neste exemplo: / dev / video0):

v4l2-ctl --list-devices

Verifique os formatos disponíveis:

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

Fonte de som Determ (cartão: 0 ..., dispositivo: 1 ... é igual a hw: 0,1 . Neste exemplo hw: 0,0):

arecord -l

Grave vídeo + áudio diretamente no arquivo:

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

O mesmo, mas com vídeo ao 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}}"  

Você pode alterar cvlc de volta para vlc se quiser ter controles + menu.

Mais opções com o módulo v4l2 no VLC.

    
por 02.08.2017 / 02:05