Проблемы с получением VLC для записи с веб-камеры через командную строку

8

мой ~ / .bashrc содержит следующую функцию

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

Команда прекрасно работает для записи прямо с моей веб-камеры, с одним или двумя недостатками. Во-первых, создаваемое видео движется слишком быстро, в два-три раза больше обычной скорости.

Также нет звука. Это не проблема, но я все же хотел бы это исправить.

Может кто-нибудь помочь мне отладить эту команду, чтобы исправить эти проблемы?

ixtmixilix
источник

Ответы:

4

Этот однострочник работал для меня, с аудио и видео:

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

Вы также можете попробовать это:

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

Ваш опыт может варьироваться в зависимости от вашего оборудования. Удачи!

balkian
источник
Да, ни один из них не работает для меня. Работает только 'v4l2: /// dev / videoX', но я не знаю, как там указать параметры. Опции в вики тоже не работают ( wiki.videolan.org/Documentation:Modules/v4l2#Video_input )
gatoatigrado
1

Из любопытства, вы уверены, что источник звука является правильным источником?

Во-вторых (опять же, просто вопрос), почему вы не используете вместо этого ffmpeg для потоковой передачи видео?
Нечто подобное, но не совсем:

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

Поменяйте местами аудиовходы и видеовходы по своему вкусу, а затем возитесь с фактическим преобразованием файлов, я немного заржавел на ffmpeg и mplayer, но это выполнимо. + друг сделал это с Raspberry Pi с ~ 20fps @ 1080p, так что вы будете в порядке со стандартным оборудованием с помощью этого метода :)

Torxed
источник
0

Получите обзор всех устройств (в этом примере: / dev / video0):

v4l2-ctl --list-devices

Проверьте доступные форматы:

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

Определите источник звука (карта: 0 ..., устройство: 1 ... равно hw: 0,1 . В этом примере hw: 0,0):

arecord -l

Запись видео + аудио, прямо в файл:

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

То же самое, но с живым видео:

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

Вы можете cvlcвернуться обратно, vlcесли хотите иметь элементы управления + меню.

Больше опций с модулем v4l2 в VLC.

danger89
источник
0

Невозможно получить согласованные результаты или найти минимальный пример, я попытался прочитать инструкции для таких вещей,

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

в конечном счете это, кажется, работает как минимальный пример,

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

хотя я вообще не проверял синхронизацию или качество, мне действительно было любопытно посмотреть, какую звуковую и видео обратную связь я могу произвести, наведя камеру на экран и включив спектрометр, он может заставить воспроизводиться оба канала, и оттуда можно настроить. Вы можете получить ваши соответствующие устройства из предыдущих ответов AFAICT.

У меня есть эта версия:

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.
Майк Марчивка
источник