基于libusb库、uac协议,获取Audio声音数据

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

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
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻猪oo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值