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
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 AudioPCI, 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内核组件