gpt4 book ai didi

Android MediaMetadataRetriever setDataSource 失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:32 25 4
gpt4 key购买 nike

我正在尝试使用 Android MediaMetadataRetriever 获取 mp4 格式的录制视频的长度 - 但出现异常:

07-13 13:54:32.686: E/AndroidRuntime(19790): FATAL EXCEPTION: main
07-13 13:54:32.686: E/AndroidRuntime(19790): java.lang.RuntimeException: setDataSource failed: status = 0x80000000

我的代码是:

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(video.getMediaUrl());
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long timeInmillisec = Long.parseLong(time);

video.getMediaUrl() 路径与此类似:

file:///storage/emulated/0/Foldername/Videos/VID_20130713_135318.mp4

我不知道我做错了什么 - 请任何人帮助我!此代码也适用于音频文件,但不适用于视频。

最佳答案

public static String getFileDuration(Context context, File file) {
String result = null;
MediaMetadataRetriever retriever = null;
FileInputStream inputStream = null;

try {
retriever = new MediaMetadataRetriever();
inputStream = new FileInputStream(file.getAbsolutePath());
retriever.setDataSource(inputStream.getFD());
long time = Long.parseLong(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
result = String.format(context.getResources().getString(R.string.player_time_format),
AppUtil.getPlayerMinutes(time), AppUtil.getPlayerSoconds(time));

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
} finally{
if (retriever != null){
retriever.release()
}if (inputStream != null){
inputStream.close()
}
}
return result;
}

关于Android MediaMetadataRetriever setDataSource 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17629995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com