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

标签 android media-player android-mediaplayer rtsp

我正在开发一个小型 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 分钟才能开始播放 radio 。
  2. Samsung Galaxy S4 – 音频完全不工作。它调用启动方法 在 onprepare 方法中,但没有音频。
  3. 三星 SCH1415 - 大约需要 8 分钟才能开始播放 radio
  4. HTC V5 – 音频一直不工作。它开始播放但是 没有音频。行为不一致,这导致 更多的挫败感。

最佳答案

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

sdrPlayer.prepare();

因为文档说

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

关于android - 在 android-16 中播放时直播音频延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146617/

相关文章:

ios - 如何让iPhone/iPad完全忘记某个应用的媒体授权状态?

java - Android MediaPlayer 链接

database - 媒体播放器:从数据库流

java - 如何在Android中弯曲源文件的音调?

android - 在 LaTeX 中包含 Android 代码的最简单方法是什么?

php - 我不想使用 openfire ofUser,而是想使用我的用户表

android - 如何返回错误值并使用计时器重试

android - 如何在父 fragment 简历上恢复子 fragment

java - 出错时触发 VideoView onCompletion 事件

android - 如何管理 MediaPlayer.setVolume() + SeekBar 来设置它 + 设备音量控制