반응형
비디오 파일의 길이를 얻는 방법은 무엇입니까?
저는 Android 프로그래밍의 초보자입니다.
폴더에있는 모든 비디오 파일을 나열하고 폴더에있는 모든 비디오의 정보를 표시하는 응용 프로그램을 작성 중입니다. 그러나 비디오 기간을 얻으려고 할 때 null을 반환하고 그것을 얻을 수있는 방법을 찾을 수 없습니다.
누구든지 나를 도울 수 있습니까?
아래는 내 코드입니다.
Uri uri = Uri.parse("content://media/external/video/media/9");
Cursor cursor = MediaStore.Video.query(res, data.getData(), new String[]{MediaStore.Video.VideoColumns.DURATION});
if(cursor.moveToFirst()) {
String duration = cursor.getString(0);
System.out.println("Duration: " + duration);
}
MediaMetadataRetriever
미디어 특정 데이터를 검색하는 데 사용 합니다.
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//use one of overloaded setDataSource() functions to set your data source
retriever.setDataSource(context, Uri.fromFile(videoFile));
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long timeInMillisec = Long.parseLong(time );
retriever.release()
가장 쉬운 방법은 다음과 같습니다.
MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfFile));
int duration = mp.getDuration();
mp.release();
/*convert millis to appropriate time*/
return String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(duration),
TimeUnit.MILLISECONDS.toSeconds(duration) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
);
미디어 스토어 비디오 쿼리에 URI를 게시하지 않는 것 같습니다.
Uri uri = Uri.parse("content://media/external/video/media/9");
Cursor cursor = MediaStore.Video.query(res, data.getData(), new String[]{MediaStore.Video.VideoColumns.DURATION});
public static long getDurationOfSound(Context context, Object soundFile)
{
int millis = 0;
MediaPlayer mp = new MediaPlayer();
try
{
Class<? extends Object> currentArgClass = soundFile.getClass();
if(currentArgClass == Integer.class)
{
AssetFileDescriptor afd = context.getResources().openRawResourceFd((Integer)soundFile);
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
}
else if(currentArgClass == String.class)
{
mp.setDataSource((String)soundFile);
}
else if(currentArgClass == File.class)
{
mp.setDataSource(((File)soundFile).getAbsolutePath());
}
mp.prepare();
millis = mp.getDuration();
}
catch(Exception e)
{
// Logger.e(e.toString());
}
finally
{
mp.release();
mp = null;
}
return millis;
}
MediaPlayer mpl = MediaPlayer.create(this,R.raw.videoFile);
int si = mpl.getDuration();
이것은 비디오 파일의 길이를 제공합니다
참고 URL : https://stackoverflow.com/questions/3936396/how-to-get-duration-of-a-video-file
반응형
'Development Tip' 카테고리의 다른 글
Emacs에서 창 레이아웃 유지 (0) | 2020.12.11 |
---|---|
Android에서 메모리 사용량 얻기 (0) | 2020.12.10 |
.NET의 Windows 서비스에서 현재 로그인 된 사용자 이름을 얻으려면 어떻게합니까? (0) | 2020.12.10 |
다른 열에서 계산 된 열? (0) | 2020.12.10 |
Bash if 문에서 대괄호는 언제 필요합니까? (0) | 2020.12.10 |