我正在开发一个小型 android 应用程序,我在其中使用 android 媒体播放器播放 rtsp 链接。它在低于 android 16 的 api 上正常工作。但问题是,当我在 android 16 上运行时,它需要很多时间来播放,有时甚至不播放。以下是我正在使用的代码
sdrPlayer = new MediaPlayer();
sdrPlayer.setDataSource(url);
sdrPlayer.prepare();
sdrPlayer.setOnCompletionListener(video.this);
sdrPlayer.setOnPreparedListener(video.this);
sdrPlayer.setOnBufferingUpdateListener(video.this);
sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
下面是一些测试用例
- ZTE N860 – 大约需要 4 到 5 分钟才能开始播放 radio 。
- Samsung Galaxy S4 – 音频完全不工作。它调用启动方法
在
onprepare
方法中,但没有音频。 - 三星 SCH1415 - 大约需要 8 分钟才能开始播放 radio
- HTC V5 – 音频一直不工作。它开始播放但是 没有音频。行为不一致,这导致 更多的挫败感。
最佳答案
要播放 rtsp 链接,您应该使用 sdrPlayer.prepareAsync();
而不是
sdrPlayer.prepare();
因为文档说
它让播放器异步准备播放。设置数据源和显示表面后,您需要调用 prepare()
或 prepareAsync()
。 对于流,您应该调用 prepareAsync()
,它会立即返回,而不是阻塞直到缓冲了足够的数据。
关于android - 在 android-16 中播放时直播音频延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146617/