在 Android 上的 AAC 流中查找
我从 HTTP 服务器获取 AAC 流,并将其用作 Android 中 MediaPlayer
的数据源。
它播放得很好,但是当我尝试执行 mediaPlayer.seekTo(intposition)
时,我收到以下错误大约一百万次:WARN/AACDecoder(13889):AAC 解码器返回错误 -1,替代静音
WARN/AACDecoder(13889):AAC 解码器返回错误 10,替换静音
WARN/AACDecoder(13889):AAC 解码器返回错误 1,替换静音
这个错误发生在 Android 2.2 上,但它似乎也不适用于早期版本。 我的应用程序必须支持查找,我希望它适用于 Android 1.5 - 2.2。
关于如何在AAC流中寻找有什么好的解决方案吗?
I'm getting an AAC stream from a HTTP server and using that as the datasource for the MediaPlayer
in Android.
It plays perfectly fine, but when I try to execute mediaPlayer.seekTo(int position)
I get the following errors about a million times:WARN/AACDecoder(13889): AAC decoder returned error -1, substituting silence
WARN/AACDecoder(13889): AAC decoder returned error 10, substituting silence
WARN/AACDecoder(13889): AAC decoder returned error 1, substituting silence
This error happens on Android 2.2 but it does not seem to work on earlier versions either.
Support for seeking is a must in my application, and I would like it to work for Android 1.5 - 2.2.
Is there any good solution on how to seek in AAC streams?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法寻找已提供服务的流。服务器如何处理这个问题?
即使您保存了字节,原始 AAC 流也是不可查找的(它们不包含查找信息)。一些媒体播放器通过解析整个文件并在每次加载文件时对其进行索引来解决此问题。更好的解决方案是将流重新打包到容器中,例如 MP4。以下是使用 MP4Box 的示例:
You cannot seek a served stream. How could the server handle this?
Even if you save the bytes, raw AAC streams are non-seekable (they contain no seek information). Some media players get around this by parsing the whole file and indexing it on the fly every time they load it. A better solution is to repackage the stream into a container, like MP4. Here's an example using MP4Box: