无法通过命令行从网络摄像头获取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"}" 
}

该命令可以很好地直接从我的网络摄像头录制,但有一个或两个缺陷。首先,所产生的视频移动速度太快,是正常速度的两倍到三倍。

另外,没有音频。这不是什么大问题,但我仍然想解决此问题。

有人可以帮我调试此命令,以解决这些问题吗?

Answers:


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

您的经验可能会有所不同,具体取决于您的硬件。祝好运!


,这些都不对我有用。仅'v4l2:/// dev / videoX'有效,但我不知道如何在此处指定选项。在wiki上的选项似乎没有任何工作(不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有点生锈,但这是可行的。+一位朋友使用树莓派以约20fps @ 1080p的分辨率完成了拍摄,因此您可以通过此方法使用标准设备:)


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

如果您要使用控件+菜单cvlcvlc则可以改回。

VLC中的v4l2模块提供了更多选项。


0

无法获得一致的结果或找到一个最小的示例,我试图阅读grepping的有关此类内容的说明,

 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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.