C++ Android NDK应用程序上使用蓝牙扬声器的性能问题
在我的Android应用程序中,我使用Android NDK通过执行以下操作来播放音乐:C++ Android NDK应用程序上使用蓝牙扬声器的性能问题,c++,android-ndk,android-bluetooth,C++,Android Ndk,Android Bluetooth,在我的Android应用程序中,我使用Android NDK通过执行以下操作来播放音乐: 使用从OGG文件提取音频样本 处理音频样本 使用将处理过的样本重定向到音频输出 为了避免运行不足,我在一个单独的线程中执行前两个步骤,提前一点提取和处理声音(这会增加一点延迟,但这对我的应用程序来说不是问题)。到目前为止,该解决方案在我测试过的所有设备上都非常有效 但由于某些原因,当我将设备与蓝牙扬声器配对并播放音乐时,我在一些设备上,如三星S7或诺基亚1(但不是在所有设备上)似乎都有不足之处 这个bu
- 使用从OGG文件提取音频样本
- 处理音频样本
- 使用将处理过的样本重定向到音频输出
感谢您的帮助。Android+蓝牙音频是一个痛苦的世界。关于蓝牙,最值得欣赏的是音频接收器以独立于其他音频设备的速率运行,这就是为什么本机mediaplayer会根据所连接的音频设备消耗样本的速率来显示视频,这本质上是为了满足BT音频设备的时钟。如果你想从Android(即SystemClock timebase)上提高速度,你需要使用时间伸缩音轨。(这是可以做到的,但驾驶员支持不稳定,且系统整体稳定性较差) 首先,您希望消除设备本身存在的问题。您能否从S7或诺基亚1将媒体播放器中的ogg文件播放到蓝牙扬声器,而不会出现问题?如果是这样,那就是你的代码 在我看来,无论出于何种原因,扬声器消耗样本的速度都快于设备产生样本的速度。基本上检查您的回调,以确保每当音频子系统请求更多数据时,您实际上正在提供这些数据。确保根据正在进行的回调来驱动解码管道,而不是系统时钟或任何其他关于定时的假设
最后,蓝牙音频,至少是A2DP,与直接流式MP3不同,在音频发送时需要一些处理来重新压缩音频,但是这些设备应该有足够的空间,甚至可能是特殊的DSP。我以前在同一时间播放过1080P视频,但一次播放两个视频就开始崩溃 谢谢你的回答。我试着用普通播放器在诺基亚1上使用BT扬声器播放ogg文件,效果很好。所以,我想我的代码中有一些事情要做,但是什么呢?因为没有BT设备,我的播放器工作得非常好(没有欠载),而且令人惊讶的是,它与华硕Zenfone 2上的BT设备也工作得非常好……而且,当设备连接到BT扬声器时,当应用程序同时提取和处理2首歌曲时,情况不会变得更糟。这对我来说毫无意义。。。