Android AudioTrack是否使用自动缓冲?

时间:2018-05-14 13:53:34

标签: android audio audiotrack

创建新AudioTrack时,设置其缓冲区大小。然后将write()音频数据指定给音频流,指定其长度。

就我而言,getMinBufferSize()给了我8192 B,我的音频为22050 B

自动发声的AudioTrack缓冲区也是如此,或者我应该将音频数据的short[]拆分成每个等于缓冲区大小的块?

(或者,在最后一种情况下,只需动态更改offsetInShortssizeInShorts write()参数即可将声音数据的相应部分提供给曲目?)

感谢。

1 个答案:

答案 0 :(得分:1)

考虑到我一直只是将我的整个音频写入AudioTrack并且到目前为止还没有任何问题,我会说是的,那里有'某种自动缓冲填充魔法。

深入挖掘,AudioTrack的写调用最终调用AudioFlinger::PlaybackThread::OutputTrack::write,它似乎写入第一个非填充缓冲区,然后如果有更多数据则继续写入新缓冲区。