创建新AudioTrack
时,设置其缓冲区大小。然后将write()
音频数据指定给音频流,指定其长度。
就我而言,getMinBufferSize()
给了我8192 B
,我的音频为22050 B
。
自动发声的AudioTrack
缓冲区也是如此,或者我应该将音频数据的short[]
拆分成每个等于缓冲区大小的块?
(或者,在最后一种情况下,只需动态更改offsetInShorts
和sizeInShorts
write()
参数即可将声音数据的相应部分提供给曲目?)
感谢。
答案 0 :(得分:1)
考虑到我一直只是将我的整个音频写入AudioTrack
并且到目前为止还没有任何问题,我会说是的,那里有'某种自动缓冲填充魔法。
深入挖掘,AudioTrack
的写调用最终调用AudioFlinger::PlaybackThread::OutputTrack::write,它似乎写入第一个非填充缓冲区,然后如果有更多数据则继续写入新缓冲区。