我正在尝试使用C库(Aubio)对Android中MediaPlayer
播放的某些音乐进行节拍检测。为了捕获原始音频数据,我使用Visualizer
,它定期向回调函数发送一个字节缓冲区,然后回调函数通过JNI将其发送到C库。
我得到了不一致的结果(即几乎没有检测到节拍,并且唯一的节拍与音频不一致)。我已经多次检查了,虽然我不能完全排除我自己在做什么,但我想知道Android Visualizer
的行为究竟如何,因为它在{{{ 3}}
setCaptureSize
设置缓冲区大小,这是否意味着捕获的缓冲区在整个音频样本上取平均值?例如,如果我将捕获大小除以2,它是否仍然代表相同的捕获声音,但在时间轴上的精度的次数减少2倍?感谢您的见解!
答案 0 :(得分:0)
确保回调函数获取整个音频信号,例如通过计算从中获取的帧以及到达回调的帧。
有助于指出Visualizer
文档。