1.win+r打开运行。
2.在运行中键入services.msc回车,打开服务。
3.右边下拉找到VMware Authorization Service。
4.双击打开属性,启动类型->自动,点击驱动,点击应用,点击确定。这个时候已经授权虚拟机能访问到摄像头了。
5.打开虚拟机,点击"虚拟机"->可移动设备,找到声卡,点击链接。此时虚拟机完成对麦克风的接管。
查看总共有几个设备,笔者这里就一个音频设备,是AudioPCI设备,这个设备就是PC自带的麦克风。
arecord -l
**** CAPTURE 硬體裝置清單 ****
card 0: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371 DAC2/ADC]
子设备: 0/1
子设备 #0: subdevice #0
查看这个设备具体的设备名,可以看到有很多设备名(后附)
arecord -L
或者
aplay -l
**** PLAYBACK 硬體裝置清單 ****
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [VA2462-H]
子设备: 0/1
子设备 #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [Lontium semi ]
子设备: 1/1
子设备 #0: subdevice #0
其中card x device y,设备就是hw:x,y
或者
cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0x6001110000 irq 138
1 [HID ]: USB-Audio - USB Audio and HID
CSCTEK USB Audio and HID at usb-0000:00:14.0-1, full speed
2 [MS2109 ]: USB-Audio - MS2109
MacroSilicon MS2109 at usb-0000:00:14.0-2, high speed
3 [MS2109_1 ]: USB-Audio - MS2109
MacroSilicon MS2109 at usb-0000:00:14.0-3.1, high speed
或者
aplay -L
或者
ffmpeg -sources alsa
其中有些可以用来打开运行,可以一个个试试,比如第一个:
ffplay -f alsa default
查看支持的参数,采样率,位深,通道数等默认值。
ffmpeg -h demuxer=alsa
ffmpeg -h muxer=alsa
注意,音频设备类型是alsa ,视频设备类型是video4linux2,v4l2,见另一篇文章:虚拟机使用pc摄像头
因为声道数,采样率,位身固定,在ffmpeg代码中,用av_read_frame读取以下各个设备每次读取返回的packet中存储的音频数据大小分别是:
null:131072 sysdefault:3760 pulse:512 default:512 front:64 dsnoop:4096(有高频噪声) hw:64(有高频噪音) plughw:64(有高频噪音)
av_dict_set(&options, “sample_rate”, “48000”, 0);
av_dict_set(&options, “channels”, “2”, 0);
注:笔者计算机为小新pro13 2020 虚拟机为16.04
查看每次能读取的采样数
cat /proc/asound/Video_1/pcm0c/sub0/sw_params
avail_min: 1024
查看参数信息
cat /proc/asound/Video_1/pcm0c/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE subformat:
STD channels: 2
rate: 48000 (48000/1)
period_size: 1024
buffer_size: 16384
通过audio名字查看它对应哪个卡
cat /proc/asound/Video/usbmixer
Card: MACROSILICON SDI Video at usb-0000:00:14.0-1, super speed
cat /proc/asound/Video_1/usbmixer
Card: MACROSILICON HDMI Video at usb-0000:00:14.0-4.1, super speed
通过audio名字查看它对应哪个卡
arecord -l
这里的名字是按照上电顺序排序的,上电顺序多次开机后偶发错乱,因此在打开音频设备前可以根据名字查看对应的哪一张卡。
**** List of CAPTURE Hardware Devices ****
card 1: HID [USB Audio and HID], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Video [SDI Video], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 3: Video_1 [HDMI Video], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
default
Playback/recording through the PulseAudio sound server
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
sysdefault:CARD=AudioPCI
Ensoniq Audi
oPCI, ES1371 DAC2/ADC
Default Audio Device
front:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
Front speakers
surround40:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
4.0 Surround output to Front and Rear speakers
iec958:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
Direct sample mixing device
dsnoop:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
Direct sample snooping device
hw:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
Direct hardware device without any conversions
plughw:CARD=AudioPCI,DEV=0
Ensoniq AudioPCI, ES1371 DAC2/ADC
Hardware device with all software conversions
补充: ALSA (Advanced Linux Sound
Architecture(高级Linux声音体系)的缩写)是为声卡提供驱动的Linux内核组件