gpt4 book ai didi

android - 有人可以提供 Android Native 的 AAudio (Android O) 写函数的例子吗?

转载 作者:行者123 更新时间:2023-11-30 00:19:17 25 4
gpt4 key购买 nike

由于 Android O 和​​ AAudio 相对较新,除了 Android NDK API(不如 Android SDK API 好)和 AAudio 的 googlesamples 示例之外,没有太多的文档或示例。我一直在查看谷歌的示例,但我想使用这个 AAudioStream_write() 函数,但他们没有给出任何示例。

有没有人以前使用过这个写函数,并且可以举例说明如何将它与正弦波或文件(例如.wav)一起使用?目前我刚刚创建了一个流,但我需要数据来输出声音。我在Java层用AudioTrack做了这个,但它和原生的不太一样。

最佳答案

AAudio 中的 write() 是一个阻塞 I/O 函数。这意味着您可以只写入数据,并在数据被消耗后返回。

如果您在没有指定回调函数的情况下创建一个 AAudio 流,那么 AAudio 将期望您对流进行 read() 或 write()。

您可能应该创建一个专用于生成音频数据和写入流的线程。基本流程是:

timeout = 1000000000; // one second, for example
open_stream
while(result >= 0 && whatever) {
generate_audio_data()
result = AAudioStream_write(stream, data, numFrames, timeout)
}
close_stream

generate_audio_data() 函数可以是合成器,也可以是从文件中读取等。

建议将回调用于合成器,因为回调线程具有高优先级并且合成器往往具有可预测的性能。如果您从网络或文件流式传输,那么阻止 read/write() 可能更好。请务必使您的缓冲区足够大以应对网络延迟。否则,您会因下溢而出现音频故障。

更多信息在这里: https://developer.android.com/ndk/guides/audio/aaudio/aaudio#reading-writing-streams

关于android - 有人可以提供 Android Native 的 AAudio (Android O) 写函数的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com