【发布时间】:2013-04-22 11:59:18
【问题描述】:
我正在开发一个小型 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 分钟。
- 三星 Galaxy S4 – 音频根本不起作用。它调用启动方法
在
onprepare方法中但没有音频。 - Samsung SCH1415 - 开始播放收音机大约需要 8 分钟
- HTC V5 – 音频始终无法正常工作。它开始播放,但是 没有音频。行为不一致,这导致 更多的挫败感。
【问题讨论】:
-
Nitin,如果可以的话,我建议您嗅探到服务器的流量并比较两个 RTSP 交换。我记得在某处读到某些 Android 版本上的 RTSP 实现更新破坏了许多现有应用程序。如果是这种情况,您应该会在 RTSP 交换中看到一些不同。
-
首先感谢@Ralf 的评论,但是当我们第一次加载链接时,android 16 总是需要时间来加载链接,有时会随机加载。媒体播放器的播放方法也给出了 true.so我无法显示进度。但有时它可以正常工作。服务器是否有可能在开始和某些时候总是发送一些损坏的位。
-
等待时间是由音频缓冲区大小引起的。我相信 Android 16+ 会增加大小。你的问题是什么?由于您无法控制缓冲区大小,因此如果您想使用 MediaPlayer,那么您就不走运了。我的应用程序使用基于 FFmpeg 的播放器,因此我可以控制缓冲区大小。
标签: android media-player android-mediaplayer rtsp