사용자 지정 비디오 컨트롤이 필요하기 때문에 사용자 지정 비디오 플레이어를 구현하고 있습니다. 시작시 동영상을 바로 재생하기 시작하는 하나의 액티비티가있는 앱이 있습니다. 나는 비디오가 처음부터 시작하지 않으mediaplayer 및 seekTo의 이상한 동작
하지만 나중에 위치에서 :
지금 내가 가지고있는 문제입니다. 그러므로 나는 seekTo (16867)를한다. seekTo는 비동기식이므로 onSeekCompleteListener의 onSeekComplete에 mediaplayer (player.start())의 시작 호출을 배치합니다.
내가 경험 한 이상한 행동은 내가 실제로 찾은 위치로 /에서 점프하기 전에 몇 밀리 초 동안 처음부터 재생되는 비디오를 보거나들을 수 있다는 것입니다. 그러나 - 반면에 - player.start가 내가 찾은 올바른 위치 16867을 반환하기 전에 호출하는 로그 출력. 다음은
는 관련 코드 섹션, 전체 클래스는 http://pastebin.com/jqAAFsuX
나는 또한 어떠한 회신을 받았다하지 않았으므로
private void playVideo(String url) {
try {
btnVideoPause.setEnabled(false);
if (player==null) {
player=new MediaPlayer();
player.setScreenOnWhilePlaying(true);
}
else {
player.stop();
player.reset();
}
url = "/sdcard/myapp/main/videos/main.mp4"; // <--- just for test purposes hardcoded here now
player.setDataSource(url);
player.setDisplay(holder);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnCompletionListener(this);
player.setOnPreparedListener(this);
player.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
public void onSeekComplete(MediaPlayer mediaPlayer) {
Log.d("APP", "current pos... "+ player.getCurrentPosition());
player.start(); // <------------------ start video on seek completed
player.setOnSeekCompleteListener(null);
}
});
player.prepareAsync();
}
catch (Throwable t) {
Log.e(TAG, "Exception in btnVideoPause prep", t);
}
}
public void onPrepared(MediaPlayer mediaplayer) {
width=player.getVideoWidth();
height=player.getVideoHeight();
if (width!=0 && height!=0) {
holder.setFixedSize(width, height);
progressBar.setProgress(0);
progressBar.setMax(player.getDuration());
player.seekTo(16867); // <------------------ seeking to position
}
btnVideoPause.setEnabled(true);
}
btw : 내 자신의 미디어 플레이어 + 서페이스 구현 대신 SDK의 VideoView를 사용할 때도 동일한 경험을합니다. 또한 seekTo를 제공하더라도 왜 VideoView가 setOnSeekCompletionListener를 제공하지 않는지 궁금합니다. seekTo async도 아닌가? –
http://code.google.com/p/android/issues/detail?id=9135 –
에서 버그 신고 접수 지금까지 해결 방법이 있습니까? 나는 2 년을 알고 있지만, 이제는 내 응용 프로그램에서 나를 귀찮게하고있다. – Slartibartfast