5

我正在开发一个小型 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);

以下是一些测试用例

  1. ZTE N860 – 开始播放收音机大约需要 4 到 5 分钟。
  2. 三星 Galaxy S4 – 音频根本不起作用。它在方法中调用 start 方法,onprepare但没有音频。
  3. 三星 SCH1415 - 开始播放收音机大约需要 8 分钟
  4. HTC V5 – 音频无法始终正常工作。它开始播放,但没有音频。这种行为是不一致的,这导致了更多的挫败感。
4

1 回答 1

3

对于播放 rtsp 链接,您应该使用sdrPlayer.prepareAsync();而不是

sdrPlayer.prepare();

因为文档说

它异步准备播放器进行播放。设置数据源和显示界面后,您需要调用prepare()prepareAsync()对于流,您应该调用prepareAsync()立即返回,而不是阻塞直到缓冲了足够的数据。

于 2013-06-19T04:08:52.460 回答