2014-09-01 95 views
1

OpenSL的文档说明了 “支持的格式包括WAV PCM,WAV alaw,WAV ulaw,MP3,Ogg Vorbis,AAC LC,HE-AACv1 aacPlus),HE-AACv2(增强型aacPlus),AMR和FLAC [只要它们受到整个平台的支持,并且AAC格式必须位于MP4或ADTS容器内],MIDI不受支持。开源版本,并且与Android OpenSL ES的兼容性尚未得到验证。“使用Android SDK(OpenSL)解码ogg和其他压缩音频文件格式

在其他地方,在论坛上,我读到Android上的OpenSL不支持任何压缩格式的解​​码。由于使用OpenSL API的解码器的实现似乎是一项至少需要几个小时才能实现的任务,我很想了解,如果我可以确定,一旦我为代码解码完成所有必需的boiler-plate代码我不会发现自己无法读取任何压缩格式,尤其是OGG。

回答

2

使用OpenSL工作解码ogg vorbis。它甚至可以进行采样率转换,这很方便。虽然我发现流的末尾没有用事件SL_PLAYEVENT_HEADATEND发信号通知。在mp3wav'解码'的情况下,调度此事件。这不是必要的,可以通过其他方式了解解码的结果。

我最终将ogg vorbis源代码添加到我的项目中,因为我想对解码有更多的控制权:例如,这样我可以预先告知解码的剪辑有多长时间,但是我必须执行采样率自我转换。

+0

谢谢,你有什么源代码可以分享吗? – 2014-09-10 14:39:59

+1

当然,你有钱分享吗? B/c看起来你没有任何技术上的困难,但是想把这个任务外包出去而不花时间......(而且我不想粗鲁,我只是问......) – Tamas 2014-09-11 07:38:15

+0

我希望它是公共项目的一部分。我需要说的是,对于这样耗时,烦人的任务,这些任务不是真正的原创编程思想,但最终可以被认为是所有样板代码,我总是乐于分享。例如创建一个Gist。 – 2014-09-11 08:06:29