4

使用下面的代码我捕获了视频,但是如何在 android 中获取捕获的视频的持续时间?并且有时用户丢弃视频并录制新视频然后获得新视频的持续时间。

Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(cameraIntent, TAKE_VIDEO);
4

3 回答 3

9

我认为最简单的方法是:

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))
    );
于 2013-07-30T10:40:06.560 回答
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"));
于 2012-06-04T14:59:43.677 回答
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()
}
于 2021-01-13T00:03:08.910 回答