用SurfaceView播放视频时,遇到的出声音但前面会黑频一段时间,求解释。
下面是主要的代码。点击开始会出声音 ,视频开始播放,但是黑频。待会儿(可能要几秒到几十秒不等)就会出画面。 但是我加入了Thread.sleep()之后就没这个问题了(当时以为这样可以让界面刷新,但是不确定),试求解释。
//初始化
mSurfaceHolder01 = mSurfaceView01.getHolder();
mSurfaceHolder01.addCallback(this);
mSurfaceHolder01.setFixedSize(300, 200);
//按播放开始播放
mPlay.setOnClickListener(new ImageButton.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (checkSDCard()) {
playVideo(strVideoPath);
}
}
});
//播放方法
private void playVideo(String strPath) {
mMediaPlayer01 = new MediaPlayer();
mMediaPlayer01.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer01.setDisplay(mSurfaceHolder01);
try {
mMediaPlayer01.setDataSource(strPath);
} catch (Exception e) {
mTextView01.setText("setDataSource Exception:" + e.toString());
}
try {
mMediaPlayer01.prepare();
} catch (Exception e) {
mTextView01.setText("prepare Exception:" + e.toString());
}
mMediaPlayer01.start();
// try {
// Thread.sleep(100);
// } catch (InterruptedException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
// }
bIsReleased = false;
mTextView01.setText("play in..");
mMediaPlayer01
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mTextView01.setText("play over...");
}
});