android_usbaudio
基于libusb,实现无驱动获取USBAudio
期望实现的功能:
- 通过libusb获取USBAudio数据,无需SELinux声卡权限
部分摄像头无法获取音频问题解决思路:
- 无法获取音频的原因:当前传过去的采样率在设备当前选择的Audio Interface中不存在!
- 描述:我们打开的设备声卡通道它当前自己有一个固定的采样率,主机这边传过去的采样率和设备当前的端点的采样率不匹配,就会导致拿不到音频数据
- 如:设备当前采样率为32000,主机传过去的采样率为48000,就会导致拿去不到音频数据
- 罗技4K无声音:当前选择bAlternateSetting的Audio Interface中采样率为48000HZ,然而主机传递传递过去想要设置的采样率在当前Audio Interface下不存在;
- RAPOO 4K无声音是因为在当前的Audio Interface下,不存在输入的采样率
获取设备采样率、通道数、bit
- 获取当前libusb_interface_descriptor下的extra
- 解析extra,可获取到当前interface的通道数,采样率等;
- c++ 设置usbAudio采样率,代码如下:
int USBAudio::scan_audio_interface(libusb_device *usbDev) {
int r = 0;
r = libusb_get_config_descriptor(usbDev, 0, &uac_config);
LOGD("scan_audio_int

这篇博客介绍了如何基于libusb库在Android上实现无驱动获取USBAudio数据,特别关注了在处理不同摄像头音频问题时如何设置正确的采样率。作者详细分析了获取设备采样率、通道数、bit的方法,并提供了设置采样率的代码示例,同时记录了在开发过程中遇到的错误,如LIBUSB_ERROR_PIPE问题及其解决方案。资料引用了UAC规范和相关项目,为读者提供参考。
最低0.47元/天 解锁文章
1万+





