안드로이드 개발 질문/답변
(글 수 45,052)
비디오 재생이
----
----
----
----
이런식으로 재생 됩니다. (직관적으로 이게 더 이해하시기 쉬울 것 같아서 ㅠㅠ)
재생이 실시간으로 진행 되긴 하는데 이미 재생된 부분을 다시 재생하면서 진행이 됩니다.
유명 오디오 스트리밍 튜토리얼인 다음 웹사이트에 있는 코드를 참고하여 비디오 플레이어를 만들려고 합니다.
소스코드의 내용은 거의 달라지지 않았고 다만 영상을 재생하기 위하여 serfaceview를 생성하고 surfaceholder를 넘겨주어
mediaplayer.setDisplay(surfaceholder) 형식을 이용하여 재생하도록 하였습니다.
구체적으로는
int curPosition = mediaPlayer.getCurrentPosition(); // 현재 위치 저장
mediaPlayer.pause(); // 멈춤
mediaPlayer.release(); // 없앰 <- 안없애면 영상이 안나옵니다.
mediaPlayer = createMediaPlayer(bufferedFile);
mediaPlayer.seekTo(curPosition); // 다시 포지션 을 찾고
mediaPlayer.start(); // 재생..
private MediaPlayer createMediaPlayer(File mediaFile)
MediaPlayer mPlayer = new MediaPlayer();
FileInputStream fis = new FileInputStream(mediaFile);
mPlayer.setDisplay(holder);
mPlayer.setLooping(false);
mPlayer.setDataSource(fis.getFD());
mPlayer.prepare();
return mPlayer;
}
혹시 조언을 구할 수 있을까 해서 이렇게 여쭈어 봅니다.
2.1updataed 버전에서 작업하고 있습니다.
공지사항을 다 읽었습니다
seekTo하는데 그게 계산식을 거치면서 결국 버림되어 약간 앞으로 가는현상 아닌가 싶습니다.
예를 들어 2.5초 재생했는데 2초로 가면 어쩔수 없겠죠.
만약 1초 이상 앞으로 가면 소스 구성에 조금 문제가 있거나
애초에 파일 조각이 약간 중첩 부분이 있거나... 그런것으로 보입니다.
저 소스는 저도 본적이 있는데요. 결국 동영상을 조각조각내서 재생하는거죠...
근데 조각이 중첩이 있었던거 같기도 하네요...
좀 오래되서 가물가물....