[英]Android Media Recorder Stop Exception
我正在從Android媒體錄制器錄制視頻和音頻......
我正在檢查剪輯長度,如果不到2秒,刪除它...
但問題是,如果我從文件路徑檢查文件的持續時間,MediaRecorder會在拋出異常后每次拋出異常,即使我錄制了10秒的音頻?
但是當我評論代碼來檢查視頻創建的持續時間時,它會變得很糟糕......
以下是我的代碼
if (prMediaRecorder != null) {
try {
prMediaRecorder.stop();
timer.cancel();
PathNameArray.add(prRecordedFile.getPath());
Log.e("No Exception", "File Added and Saved");
////////////// Check Length and Delete File
if (prRecordedFile != null) {
if (MediaPlayer.create(getApplicationContext(), Uri.fromFile(new File(
prRecordedFile.getPath()))).getDuration() <= 2000) {
File file = new File(prRecordedFile.getPath());
boolean deleted = file.delete();
Toast.makeText(getApplicationContext(),
"Video Clip Length Too Short, Clip Not Added",
Toast.LENGTH_SHORT).show();
PathNameArray.remove(PathNameArray.size() - 1);
}
}
} catch (RuntimeException e) {
Toast.makeText(getApplicationContext(),
"Corrupt Clip, Clip Not Added",
Toast.LENGTH_SHORT).show();
File file = new File(prRecordedFile.getPath());
boolean deleted = file.delete();
timer.cancel();
Log.e("Exception Caught", "File Not Added");
} finally {
try {
prCamera.reconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
prMediaRecorder = new MediaRecorder();
MarkerName = null;
請幫幫我,我的代碼有什么問題或什么?
我解決了這個問題,
問題是我從MediaPlayer
獲得持續時間的方式
相反,我使用此代碼,它已修復...
//////////////// Check Length and Delete File
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(prRecordedFile.getPath());
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long timeInmillisec = Long.parseLong(time);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.