Java Android-MediaPlayer';在Android 4.0+;
我面临的问题是,每当我的应用程序在Android 4.0+上播放流时,Java Android-MediaPlayer';在Android 4.0+;,java,android,video-streaming,media-player,android-4.2-jelly-bean,Java,Android,Video Streaming,Media Player,Android 4.2 Jelly Bean,我面临的问题是,每当我的应用程序在Android 4.0+上播放流时,MediaPlayer中的OnPrepare方法会在流加载之前调用OnPreparedListener,因此我无法向用户指出流下载/缓冲正在进行中。 下面是我正在做的事情 @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); pl
MediaPlayer中的OnPrepare
方法会在流加载之前调用OnPreparedListener
,因此我无法向用户指出流下载/缓冲正在进行中。
下面是我正在做的事情
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
playVideo(someRtspUrl);
}
private void playVideo(String url) {
// if app is running on Google TV then change RTSP link to HLS
if (url.contains("rtsp")) {
// split the RTSP URL and make it as HLS
String videoUrlParts[] = url.split("\\?");
url = videoUrlParts[0].replace("rtsp", "http") + "/playlist.m3u8";
if (videoUrlParts.length > 1)
url += "?" + videoUrlParts[1];
} mVideoView.setVideoURI(Uri.parse(url));
mVideoView.requestFocus();
mVideoView.setOnCompletionListener(this);
mVideoView.setOnPreparedListener(this);
}
@Override
public void onPrepared(MediaPlayer player) {
dismissProgressDialog();
mVideoView.start();
}
这段代码在谷歌电视和其他安卓3.0+和<4.0+设备上运行良好我对媒体播放器没有太多经验。但我这边有几个建议/疑问
您只需要确保正确处理状态并使用MediaPlayer的prepareAsync()调用。这是安卓<4.3的.m3u8的一个已知问题
他们在4.3中修正了这个问题。值得比较不同平台的MediaPlayer或VideoView代码,即4.3和<4.3,感谢@gvmani的建议/查询。对于第二个,我会说我正在播放原始/主要对象。第一次。同步准备也在起作用。问题在于具体情况,但事实并非如此。。我也检查了rtsp和其他流。对于小于4.3的情况,它可以在4.0.4之前的3.0及以上正常运行时间工作,如问题中所述。问题是,如果视频视图不知道其状态,那么它在Android 3.1及以上的情况下如何工作良好。