【发布时间】:2020-05-08 14:03:35
【问题描述】:
我正在尝试使用 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
我不知道我在做什么错 - 请任何人帮助我!此代码也适用于音频文件,但不适用于视频。
【问题讨论】:
-
MediaMetadataRetriever 可能只是出于某种原因无法读取该特定视频文件。你试过github.com/wseemann/FFmpegMediaMetadataRetriever吗?
-
它无法读取我给他的每个文件,这些文件是从我的相机记录下来的......所以不 - 没有测试图书馆,但也许稍后会测试它 - 在此先感谢
-
我的意思是,问题可能与相机使用的编解码器或它如何写出元数据有关。另外,你能发布一个示例文件吗?
-
我只是想读取从我自己的相机录制的文件 - 通过以下方式启动相机:Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); Uri fileUri = CameraFileHelper.getOutputMediaFileUri(CameraFileHelper.MEDIA_TYPE_VIDEO); intent.putExtra(MediaStore.EXTRA_OUTPUT,fileUri); intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, VIDEO_QUALITY_HIGH);