Sta*_*wer 10 android android-mediaplayer
我正在使用MediaPlayer通过HTTP传输无线电.在Lollipop上,我的流程需要大约一分钟才能启动,这是不可接受的.Kitkat需要大约20秒,这已经很痛,但现在变得无法使用.
这个组件与缓冲有一个众所周知的问题:缓冲区的字节数被编码并且不能被改变.
我的代码非常标准
player.reset();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDataSource(streamUrl);
player.prepareAsync();
Run Code Online (Sandbox Code Playgroud)
我准备好了
player.start();
Run Code Online (Sandbox Code Playgroud)
我听说过替代品,GStreamer但我无法在Windows上运行.
我想知道是否有人有一个有效的解决方案来通过HTTP流式传输无线电启动延迟.
编辑
我测试了ExoPlayer但是我得到的较低开始时间是15秒.玩家停留在"准备"状态(不缓冲,到目前为止,我看到了).
编辑
流的格式是AAC
编辑
我测试了https://code.google.com/p/aacdecoder-android/,但此库唯一的问题是缺少对流暂停的支持.我的应用程序要求支持在线流的暂停.
如果您的用例与GPL/LGPL许可证兼容,那么VLC应该是您所需要的.VLC能够在3G网络上从您的URL流式传输,延迟时间仅为1秒.
步骤1: 下载VLC源代码并按照说明进行编译
第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及其支持类之外,您可以删除所有不必要的代码以减小大小