在android有时候要播放一些本地或远程的视频,通常使用如下的代码:
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
在OnPreparedListener的onPrepared(MediaPlayer)方法中回下如下的代码:
Log.d(TAG, "onPrepared called");
mVideoWidth = mMediaPlayer.getVideoWidth();
mVideoHeight = mMediaPlayer.getVideoHeight();
Log.d(TAG, "***********mVideoWidth====="+mVideoWidth+"==mVideoHeight===" + mVideoHeight);
if (mVideoWidth != 0 && mVideoHeight != 0) {
holder.setFixedSize(mVideoWidth, mVideoHeight);
mMediaPlayer.start();
}
//去掉buffer对话框
bufferingDialog.dismiss();
但是有时间得到视频的宽度和高度为0但是视频还是可以播的,也就是视频中没有提供宽和高的数据,那么如果还使用上面的代码则视频不会播放可以在此处使用如下代码:
if (mVideoWidth != 0 && mVideoHeight != 0) {
holder.setFixedSize(mVideoWidth, mVideoHeight);
}
mMediaPlayer.start();
也就是不管获取的长度是否大于0,都将player进行start
本文介绍在Android平台上使用MediaPlayer播放视频的方法,特别关注解决视频尺寸获取问题,确保即使在无法获取视频宽度和高度的情况下也能正常播放。
1035

被折叠的 条评论
为什么被折叠?



