在Android-16中播放时直播音频延迟?

Nit*_*tin 5 android rtsp media-player android-mediaplayer

我正在开发一个小型的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);
Run Code Online (Sandbox Code Playgroud)

以下是一些测试用例

  1. 中兴通讯N860 - 大约需要4到5分钟才能开始播放收音机.
  2. 三星Galaxy S4 - 音频根本不起作用.它在onprepare方法中调用start方法但没有音频.
  3. 三星SCH1415 - 大约8分钟开始播放收音机
  4. HTC V5 - 音频不能一直工作.它开始播放,但没有音频.行为不一致,这导致更多的挫败感.

小智 3

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

sdrPlayer.prepare();
Run Code Online (Sandbox Code Playgroud)

因为文档说

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