VLC 流式传输带有音频的网络摄像头视频

VLC 流式传输带有音频的网络摄像头视频

使用Linux Mint 18.1 32位、Logitech pro 9000、vlc 2.2.2

我在很多网站上搜索了提示,发现很多可以录制视频,但没有一个可以同时流式传输或录制视频和音频。

最接近的是来自无法通过命令行让 VLC 从网络摄像头进行录制。这会传输视频但不播放音频。

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

如何修改命令来播放视频和音频?

编辑

Pulseaudio 正在运行:

$ ps axu | grep pulse
bill 1553 0.0 0.5 176268 10456 ? S<l 15:15 0:02 /usr/bin/pulseaudio --start --log-target=syslog

音频设备列表:

$ arecord -l **** List of CAPTURE Hardware Devices ****
card 0: Intel [HDA Intel], device 0: STAC9200 Analog [STAC9200 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Q9000 [QuickCam Pro 9000], device 0:
  USB Audio [USB Audio] Subdevices: 1/1 Subdevice #0: subdevice #0 

答案1

Linux 音频快速回顾:如今,基本上所有设备驱动程序都是 ALSA 的一部分。 ALSA 可以单独使用,但基本上所有发行版都运行 Pulseaudio,这在某些方面提供了更好的体验。 Pulseaudio 包含一个兼容层,允许旧的仅 ALSA 应用程序通过假装它是 ALSA 设备(称为pulse)来使用 Pulseaudio,而 Pulseaudio 反过来使用 ALSA 的设备驱动程序。

你的系统是这样的,你有两个音频设备(内部设备和摄像头)。

因此,当您使用时,会发生的--input-slave=alsa://是 vlc 使用兼容层,该兼容层访问 Pulseaudio,它会猜测您想要的设备并为您提供第一个设备,这是内部设备而不是网络摄像头。于是,就没有声音了。

您可以在录制时使用pavucontrol(或者pacmd如果pactl您没有 GUI)来更改vlc记录的来源。根据您的 Pulseaudio 设置,下次通常会记住此选择,因此您只需执行一次。

或者更好的是,首先告诉 vlc 使用 Pulseaudio。我无法快速找到--input-slave有关 vlc 的正确文档,但 google 结果建议--input-slave=pulse确实有效,并且很可能有一些--input-slave=pulse://pulseaudio_source_name语法实际上允许您指定正确的卡(在 Pulseaudio 中称为“声源”)。

编辑

源代码说格式是pulse://SOURCE,没有指定详细信息,所以我想你可以这样做

pactl list short sources

然后指定类似pulse://alsa_input.usb-XXX-YYYPulseaudio 源名称的名称。同样,如果需要,您可以重新pavucontrol分配源。

相关内容