关于从网络摄像头捕获视频,已经有人提出并回答了类似的问题。有许多可接受的答案。但是,它们要么来自不再支持的旧版 Ubuntu,要么仅与视频有关,而不是像这个问题的主题那样同时涉及视频和音频。此外,这个问题的主题是如何使用当前的 LTS Ubuntu 版本。
目前,Ubuntu 官方 Wiki 文档也提供过时且不起作用的分辨率。
有一些 GUI 应用程序可以捕获来自网络摄像头的音频和视频。但这些应用程序不足以实现将视频轻松包含在脚本中的目的。
许多其他关于这个主题的参考资料包括以下变体:Ubuntu 官方文档摄像头支持:
带有提示符的行$
是命令。 后面几行是错误响应。
$ ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
[oss @ 0x15f38a0] /dev/dsp: No such file or directory
/dev/dsp: Input/output error
和
$ avconv -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
[oss @ 0xd9b8a0] /dev/dsp: No such file or directory
/dev/dsp: Input/output error
虽然上述两个命令将失败,但此命令将从网络摄像头捕获 10 秒的视频:
$ timeout 10 ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
如您所见,删除有问题的音频输入选项将消除错误。因此缺少的是与此选项匹配的支持的音频输入。在安装和尝试配置其他音频包之前,我试图获取有关如何使用官方内置音频支持的信息。
我看到了有关安装其他软件包以实现声音支持的参考,但如果可行的话,我首先想了解如何默认使用 Ubuntu 16.04LTS 上已安装的软件包。
dmesg -w
USB网络摄像头插入后的输出:
[41763.153707] CPU7: Core temperature/speed normal
[41763.153708] CPU3: Core temperature/speed normal
[41845.576323] retire_capture_urb: 66 callbacks suppressed
[41845.699994] usb 2-1.4: USB disconnect, device number 14
[41872.523599] usb 2-1.4: new high-speed USB device number 15 using ehci-pci
[41872.882616] usb 2-1.4: New USB device found, idVendor=046d, idProduct=0826
[41872.882620] usb 2-1.4: New USB device strings: Mfr=0, Product=2, SerialNumber=1
[41872.882622] usb 2-1.4: Product: HD Webcam C525
[41872.882624] usb 2-1.4: SerialNumber: 94D25250
[41873.142026] usb 2-1.4: current rate 5666600 is different from the runtime rate 16000
[41873.145382] usb 2-1.4: current rate 8859453 is different from the runtime rate 24000
[41873.149264] usb 2-1.4: current rate 12572339 is different from the runtime rate 32000
[41873.152635] usb 2-1.4: current rate 10782671 is different from the runtime rate 48000
[41873.165044] usb 2-1.4: set resolution quirk: cval->res = 384
[41873.165529] uvcvideo: Found UVC 1.00 device HD Webcam C525 (046d:0826)
[41873.178089] input: HD Webcam C525 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.2/input/input33
[41873.222700] usb 2-1.4: current rate 5530139 is different from the runtime rate 48000
[41873.226055] usb 2-1.4: current rate 698870 is different from the runtime rate 48000
[41873.243770] usb 2-1.4: current rate 1805767 is different from the runtime rate 48000
[41873.246765] usb 2-1.4: current rate 1763607 is different from the runtime rate 48000
答案1
OSS 是 Linux 中唯一的音频 API,直到官方 (kernel.org) Linux 内核 2.4 系列。ALSA 从 2.5 开始添加,在这些版本中,Linux 内核作者将 OSS 标记为已弃用。4Front 继续在 Linux 内核之外开发 OSS。
使用 找到声音设备arecord -L
。然后在命令行中使用它。输出非常广泛。
这将从我的网络摄像头录制 30 秒的视频:
$ ffmpeg -f alsa -i plughw:CARD=C525,DEV=0 -f video4linux2 -s 320x240 -i /dev/video0 -t 30 out.mpg
这一个记录下面输入了我系统上的输出,其中我选择使用的音频设备以粗体突出显示。在本例中是plughw:卡=C525,设备=0。
默认 通过 PulseAudio 声音服务器播放/录音 无效的 丢弃所有样本(播放)或生成零样本(捕获) 脉冲 PulseAudio 声音服务器 系统默认值:CARD=MID HDA 英特尔 MID,ALC889A 模拟 默认音频设备 正面:CARD=MID,DEV=0 HDA 英特尔 MID,ALC889A 模拟 前置扬声器 环绕21:CARD = MID,DEV = 0 HDA 英特尔 MID,ALC889A 模拟 2.1 环绕输出至前置和低音炮扬声器 环绕40:CARD = MID,DEV = 0 HDA 英特尔 MID,ALC889A 模拟 4.0 环绕输出至前置和后置扬声器 环绕41:CARD = MID,DEV = 0 HDA 英特尔 MID,ALC889A 模拟 4.1 环绕输出至前置、后置和低音炮扬声器 环绕50:CARD = MID,DEV = 0 HDA 英特尔 MID,ALC889A 模拟 5.0 环绕输出至前置、中置和后置扬声器 环绕51:CARD = MID,DEV = 0 HDA 英特尔 MID,ALC889A 模拟 5.1 环绕输出至前置、中置、后置和低音炮扬声器 surrounded71:CARD=MID,DEV=0 HDA 英特尔 MID,ALC889A 模拟 7.1 环绕输出至前置、中置、侧置、后置和低音扬声器 dmix:卡=MID,设备=0 HDA 英特尔 MID,ALC889A 模拟 直接样品混合装置 dmix:卡=MID,设备=2 HDA 英特尔 MID,ALC889A Alt 模拟 直接样品混合装置 dsnoop:CARD=MID,DEV=0 HDA 英特尔 MID,ALC889A 模拟 直接取样装置 dsnoop:CARD=MID,设备=2 HDA 英特尔 MID,ALC889A Alt 模拟 直接取样装置 硬件:CARD=MID,DEV=0 HDA 英特尔 MID,ALC889A 模拟 直接使用硬件设备,无需任何转换 硬件:CARD=MID,DEV=2 HDA 英特尔 MID,ALC889A Alt 模拟 直接使用硬件设备,无需任何转换 plughw:CARD=MID,DEV=0 HDA 英特尔 MID,ALC889A 模拟 硬件设备及所有软件转换 plughw:CARD=MID,DEV=2 HDA 英特尔 MID,ALC889A Alt 模拟 硬件设备及所有软件转换 系统默认值:CARD=HDMI USB 捕获 HDMI、USB 音频 默认音频设备 正面:CARD=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 前置扬声器 环绕21:CARD=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 2.1 环绕输出至前置和低音炮扬声器 环绕40:卡=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 4.0 环绕输出至前置和后置扬声器 环绕41:卡=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 4.1 环绕输出至前置、后置和低音炮扬声器 环绕50:CARD=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 5.0 环绕输出至前置、中置和后置扬声器 环绕51:卡=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 5.1 环绕输出至前置、中置、后置和低音炮扬声器 环绕71:卡=HDMI,设备=0 USB 捕获 HDMI、USB 音频 7.1 环绕输出至前置、中置、侧置、后置和低音扬声器 iec958:卡=HDMI,设备=0 USB 捕获 HDMI、USB 音频 IEC958 (S/PDIF) 数字音频输出 dmix:卡=HDMI,设备=0 USB 捕获 HDMI、USB 音频 直接样品混合装置 dsnoop:CARD=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 直接取样装置 硬件:CARD=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 直接使用硬件设备,无需任何转换 plughw:CARD=HDMI,DEV=0 USB 捕获 HDMI、USB 音频 硬件设备及所有软件转换 系统默认值:CARD=C525 高清网络摄像头 C525,USB 音频 默认音频设备 正面:CARD=C525,DEV=0 高清网络摄像头 C525,USB 音频 前置扬声器 环绕21:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 2.1 环绕输出至前置和低音炮扬声器 环绕40:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 4.0 环绕输出至前置和后置扬声器 环绕41:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 4.1 环绕输出至前置、后置和低音炮扬声器 环绕50:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 5.0 环绕输出至前置、中置和后置扬声器 环绕51:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 5.1 环绕输出至前置、中置、后置和低音炮扬声器 surrounded71:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 7.1 环绕输出至前置、中置、侧置、后置和低音扬声器 iec958:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 IEC958 (S/PDIF) 数字音频输出 dmix:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 直接样品混合装置 dsnoop:CARD=C525,设备=0 高清网络摄像头 C525,USB 音频 直接取样装置 硬件:CARD=C525,DEV=0 高清网络摄像头 C525,USB 音频 直接使用硬件设备,无需任何转换 plughw:卡=C525,设备=0 高清网络摄像头 C525,USB 音频 硬件设备及所有软件转换
根据您要捕获的音频,很多设备都可以被排除,例如环绕声以及在我的情况下的其他 HDMI 捕获设备。