Win10 x64下USB-UAC虚拟麦克风的实现

2021-10-13 1715 0

对于虚拟的UAC设备,实现了虚拟的UAC扬声器,总是想着再一个USB虚拟的UAC麦克风。因为这样,才算完美。
本着完了完美的结果,自己又忍不住给自己找了一个活-USB虚拟麦克风

虚拟麦克风的大体开发和USB虚拟扬声器类似,只是一个是输入设备,另一个是输出设备而已。所以参考UAC规范,基于UAC虚拟扬声器的代码,我们做的更改如下:

对于UAC虚拟麦克风的演示,可以使用从应用层写入PCM数据到驱动,驱动再将数据交给虚拟的设备。这样在应用层通过监听该麦克风实现UAC虚拟扬声器的演示。

驱动编译虚拟麦克风的工程,生成的文件如下:
虚拟麦克风的工程文件

安装该驱动文件,然后在设备管理器中看到的设备如下:
设备管理器中看到的虚拟麦克风

在音频控制面板中的设备如下:
音频控制面板

我们使用audacity工具截取一首歌的部分PCM数据并存储为二进制文件,然后在应用层通过读取该文件并定时间要求每隔10ms(可以稍快一点)定时写一包PCM数据,并监听该数据,这样可以通过系统自带的扬声器听到我们的写入的歌曲。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB-UAC麦克风 音频控制接口
音频控制接口描述符描述了设备的结构(拓扑结构),并通过特定类请求对音频的控制。UAC麦克风 音频控制接口描述符偏移地址字段长度值描述0bLength10x09接口描术符的长度1bDescriptorType10x04描述符的类型接口描述符2bInterfaceNumber10x00接口ID号3bA......
Windows下UVC虚拟摄像头的实现
最近在Windows10 x64环境下,开发了一个虚拟UVC摄像头驱动。确切的来说这不是摄像头驱动,而是一个虚拟USB总线驱动。使用该虚拟总线驱动使用应用软件通过IOCTL控制总线子设备的创建与卸载。驱动安装完成后,是一个单纯的USB虚拟总线。应用软件通过发送自定义IOCTL码IOCTL_BUSEN......
USB-UAC麦克风 配置描述符
UAC麦克风采用的配置描述符结构和USB配置描述符的结构一致.偏移地址字段长度值描述0bLength10x09配置描述符的长度1bDescriptorType10x02描述符类型,配置描述符类型2wTotalLength20x0064配置描述符的总长度(包括后续的UAC音频控制和UAC音频流接口描述......
华为UAC麦克风的工作过程数据分析
看完了耳机的数据分析,再来分析麦克风,就相对来说很简单了,这是因为:第一:麦克风没有音频控制特效单元描述符,所以少了很多特定类请求。第二:麦克风只有一个音频流转换接口,且只支持采样率为48000HZ 16位。具体的过程见下:Length Phase Data-------- --......
USB-UAC麦克风 功能简介
这里描述的设备是一个USB麦克风。这是一个非常简单的设备,没有音频控制合并等其它功能。它通过音频流接口向主机提供单声道音频数据流。这个使用的音频数据格式是16位8KHz PCM。同步类型为异步源。它使用内部时钟作为参考源。本章要介绍的是UAC1.0规范附录B自带的USB麦克风的内容。从拓年图上可以看......
USB-UAC麦克风 字符串描述符
偏移地址字段长度值描述0bLength10x18描述符长度1bDescriptorType10x03描述符类型:字符串描述符2bString10x00540x00480x00450x00200x00430x004F0x004D0x00500x00410x004E0x0059“THE COMPANY”......
USB通用父驱动usbccgp.sys的过滤UVC摄像头、UAC麦克风和HID设备硬件ID
激动的心情,无溢言表。。虽然只是一个很简单的东西。。但相于折腾了这么久,还是很开心的了。最近有个需求,功能是这样的:有一个USB复合设备,连接到windows系统中它在windows下的设备树如下:USB Composite Device(usbccgp.sys)UVC CameraUAC ......
USB-UAC麦克风 音频流接口
音频流接口有2个转换接口。UAC麦克风 零带宽转换接口转换接口0是零带宽设置,用于在麦克风未使用。这是通电后的默认设置。实现了零带宽通过指定接口的此备用设置没有与之关联的端点(bNumEndpoints=0)。偏移地址字段长度值描述0bLength10x091bDescriptorType10x04......
UVC 静止图像触发控制
静止图像触发控制通知设备开始通过相关的同步或大容量管道发送静态图像数据。专用的静态图像大容量管道仅用于静态图像捕获的方法3。此控制只能在流式传输时设置,并且在发送静态图像后,硬件应将其重置为“正常操作”模式。仅当设备支持静态图像检索的方法2或方法3时,才需要此控件。控制选择子VS_STILL_IMA......
USB-UAC麦克风 设备描述符
UAC麦克风采用的设备描述符结构和USB设备描述符的结构一致,只是有些字段的值有所要求。偏移地址字段长度值描述0bLength10x12设备描述符的总和长度1bDescriptorType10x01设备描述符类型2bcdUSB 20x01001.00使用的USB版本号4bDeviceClass10x......
UAC 类特定音频流接口描述符
类特定音频流接口描述符:Class-Specific AS Interface Descriptor.UAC类特定音频流接口描述符 - UVC1.0结构体定义如下:typedef struct _USB_ASI_DESCRIPTOR{ UINT8 bLength; UINT8......
UAC麦克风拓扑图
UAC麦克风是UAC规范中的USB音频输入设备,它的拓扑图如下:可以看到,在UAC域内,这个拓扑图是一个最简单的UAC麦克风拓扑图,只包括一个输入终端和一个输出终端,输入终端对应的是拾音端,而输出终端将最终的音频数据打包通过USB端点传输给主机。当然,不管是不是最简单的麦克风,最基本的东西都是......
UAC麦克风设备描述符
所有的USB设备第一个要设计的描述符基本都是设备描述符。这里的UAC音频设备描述符数据配置如下:结构体定义如下:/* USB_DT_DEVICE: Device descriptor */struct usb_device_descriptor { __u8 bLength; ......
UAC麦克风配置描述符
配置描述符包含了设备的配置信息,随配置描述符一起返回给主机的其它描述符代表了该设备的特性。UAC麦克风配置描述符的数据配置如下:数据结构定义如下:struct usb_config_descriptor { __u8 bLength; __u8 bDescriptorType; ......
UAC麦克风音频控制的接口描述符
UAC麦克风包含一个音频控制接口,其以接口描述符为起始描述符。描述符的关系如下:接口描述符 //音频控制接口类特定音频流接口描述符输入终端描棕符输出终端描述符接口描述符的内容详见:USB接口描述符 http://www.usbzh.com/article/detail-64.ht......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!