我正在使用MediaPlayer通过HTTP流式传输.在棒棒糖我的流需要大约一分钟开始是不能接受的. Kit Cat需要大约20秒钟,屁股已经疼了,但现在变得无法使用了.
有一个well known problem与该组件相关的缓冲:缓冲区的字节数量被编码并且不能被更改.
我的代码是非常标准的
player.reset(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); player.setDataSource(streamUrl); player.prepareAsync();
准备好了
player.start();
我听说过GStreamer
的替代品,但是我无法使其在Windows上工作.
我想知道有没有人有一个工作的解决方案,通过HTTP流式播放通过一个体面的开始延迟.
编辑
我测试了ExoPlayer,但是我得到的较低的开始时间是15秒.玩家被困在“准备”状态(不缓冲,那是我到目前为止看到的).
编辑
流的格式是AAC
编辑
我测试了https://code.google.com/p/aacdecoder-android/,但是这个库所面临的唯一问题是缺少对流暂停的支持.我的应用程序需要支持在线流量暂停.
解决方法
如果您的用例与GPL / LGPL许可证兼容,那么VLC应该是您所需要的. VLC能够在3G网络上从您的网址流出,延迟时间只有1秒.
步骤1:
下载VLC源代码并编译instruction
第2步:最重要的类是org.videolan.vlc.audio.AudioServiceController,它是从org.videolan.vlc.gui.MRLPanelFragement.processUri()调用的 – > org.videolan.vlc.util.Util.openStream(Context,String) – > AudioServiceController.load(String,boolean).您可以删除除AudioServiceController及其支持类之外的所有不必要的代码以减小大小