2012-06-04 42 views
3

使用下面的代碼捕獲視頻,但如何獲得捕獲的視頻在Android的持續時間? 也有時用戶丟棄視頻和錄製新視頻,然後獲得新視頻的持續時間。如何獲取在android中捕獲的視頻的持續時間?

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

可能重複:http://stackoverflow.com/q/3936396/1012284 –

+0

@PadmaKumar它不是重複,也有剛剛光標也沒有持續時間 –

回答

7

使用遊標就可以得到持續時間和有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

1)以上建議正在從錄製的視頻獲取持續時間。 2)但是,當我試圖從庫中選擇的視頻檢索持續時間時,它拋出IllegalArgumentException。 – Harish

6

我認爲最簡單的方法是:

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)) 
    ); 
+0

通過uriOfFile,你的意思是附加了'file://'前綴的文件路徑嗎? –

+0

請不要創建MediaPlayer實例來獲取文件長度。在android中有一個專用的MediaMetadataRetriever類。更多詳細信息請參閱以下答案:stackoverflow.com/a/33247728/1713920 –

相關問題