안드로이드 개발 질문/답변
(글 수 45,052)
video file의 duration 정보를 받아 오는 방법으로 mediaplayer의 getDuration api를 사용하면 되지만,
getDuration의 사용하기 위한 MediaPlayer의 valid state는 {Prepared, Started, Paused, Stopped, PlaybackCompleted} 입니다.
따라서 MediaPlayer를 생성하고 setDataSource 하고 setDisplay처리 해주고 prepare를 해주어야 duration를 가지고 올 수 있습니다.
비디오 파일의 경우 setDisplay를 해 주지 않으면 prepare시에 Error가 발생하여 getDuration시 쓰레기 값이 들어오는 것 같습니다.
위와 같은 과정없이 media file의 duration 정보를 받아오는 방법이 있을까요?
2010.11.10 14:48:18
MediaStore.Video.VideoColumns.DURATION 있구요.
다른 방법으로는 다음 페이지에 있는 MediaMetadataRetriever 를 사용해서도 읽어올 수 있습니다.
단, 비디오파일에 metadata duration 정보가 있어야겠지요
MediaStore 에 들어있지 않은 비디오파일 일 경우 밑에 방법이 유용하겠네요
2010.11.24 02:28:15
위에 페이지 내용 보시면
In your src folder, you need a new subdirectory android/media which will house the class (MediaMetadataRetriever)
라고 되어있쟎아요. 그렇게 하시면 다음과 같이 사용하실 수 있습니다.
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(filepath);
String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
String durationstr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);