使用下面的代码我捕获了视频,但如何在Android中获取捕获的视频的持续时间? 并且当有时用户丢弃视频并录制新视频时,则获得新视频的持续时间。
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent, TAKE_VIDEO);
答案 0 :(得分:8)
使用游标可以获得持续时间,光标中有duration
列,你可以得到一个字符串。
Cursor cursor = MediaStore.Video.query(getContentResolver(),data.getData(),
new String[] { MediaStore.Video.VideoColumns.DURATION });
System.out.println(">>>>>>>>>>"+cursor.getCount());
cursor.moveToFirst();
String duration = cursor.getString(cursor.getColumnIndex("duration"));
答案 1 :(得分:7)
我认为最简单的方法是:
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))
);
答案 2 :(得分:0)
MediaPlayer 是一个重物。改用 MediaMetadataRetriever
fun getMediaDurationMs(context: Context, fileUri: Uri): Int? {
val mmr = MediaMetadataRetriever()
mmr.setDataSource(context, fileUri)
return mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)?.toInt()
}