2

我正在编写一个 Android 应用程序,该应用程序需要能够以高精度查找大型 mp3 音频文件(约 90 分钟)中的特定点。

目前,我正在使用 OpenSL 方法和音频播放器对象,该对象具有指定 mp3 文件和 MIME 信息的 URI 数据源。

为了测试这一点,我使用播放器上的 SLSeekITF 接口来寻找特定点(以毫秒为单位)。但是,我发现搜索性能很差且不一致。通常,音频与应有的位置相差 1-10 秒。有时领先,有时落后。使用较短的 mp3 文件时性能稍好一些,但还远远不够接近。

Seek 模式(“准确”和“快速”)似乎对 SLSeekITF 没有任何影响。

在其他平台上,我可以让搜索位置非常准确 < 50 毫秒,这几乎看不到,所以我知道这是可能的。

- 有谁知道如何从 OpenSL 音频播放器中获得更好的准确性?- 此实施是否存在已知问题?- 是否有其他 mp3 解码器可以提供更好的性能?

谢谢

4

1 回答 1

0

我还在 Google NDK 组上发布了这个问题: https ://groups.google.com/forum/#!topic/android-ndk/rzVr3A0DjBs

虽然我从未从 Google 的任何人那里得到官方答复,但我收到的反馈似乎表明媒体播放器和/或使用 OpenSL ES 从 URI 播放音频是有问题的。

我最终通过使用具有搜索能力的第 3 方 mp3 解码器和 OpenSL ES 中的 Buffer Queue Audio Player 对象来播放音频样本来解决这个问题。

很难做到,但它确实有效。

于 2013-09-30T21:02:35.700 回答