我的应用程序需要很长时间来准备和缓冲音频流。我已阅读此问题 Why does it take so long for Android's MediaPlayer to prepare some live streams for playback? ,但是它只是说人们遇到了这个问题,并没有说明如何改进这个问题。
我在从 2.2 到 4.1.2 测试的所有 Android 版本中都遇到了这种情况。
流的比特率适合移动和 3G 连接。相同的流在等效的 iOS 应用中开始缓冲需要不到一秒的时间。
有没有办法指定应该缓冲的时间量?我知道 Tune In radio 应用程序提供此功能 (https://play.google.com/store/apps/details?id=tunein.player)。
谢谢。
编辑:我再次测试,发现它只发生在运行 Gingerbread 及更高版本 (>=2.3) 的设备上。我知道 Android 将底层框架从 OpenCore 更改为 StageFright。那么如何优化媒体框架呢?旧的 HTC Wildfire 可以准备、流式传输和播放,这似乎是错误的,比全新的 HTC One X 和 Nexus 7 快 10 倍。
最佳答案
几个月来我一直在为这个问题苦苦挣扎。终于找到了解决办法。
真正的问题在于 MediaPlayer 类的实现。特别是 MediaPlayer 缓冲数据的方式。这就是为什么解决方案是创建自己的缓冲,将其保存到临时文件并将其提供给 MediaPlayer。
本教程和源代码详细解释了如何操作。 http://androidstreamingtut.blogspot.nl/2012/08/custom-progressive-audio-streaming-with.html
通过修改此代码,可以轻松创建更好的流媒体播放器。
Google Developers 真的搞砸了。
编辑:这个答案相当陈旧。现在我建议不要使用 MediaPlayer
而是使用 ExoPlayer
。它可扩展、稳定,可以播放多种不同类型的媒体。你可以在这里找到它:https://github.com/google/ExoPlayer/
关于java - Android MediaPlayer 需要很长时间来准备和缓冲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12821216/