我正在开发一个小型的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);
以下是一些测试用例
onprepare
方法中,但没有音频。答案 0 :(得分:3)
播放rtsp链接时,您应使用sdrPlayer.prepareAsync();
代替
sdrPlayer.prepare();
因为文档说
它准备播放器以异步方式播放。设置数据源和显示表面后,您需要调用prepare()
或prepareAsync()
。 对于流,您应该调用prepareAsync()
,它会立即返回,而不是阻塞,直到缓冲了足够的数据。