如何使用MediaStore获取特定持续时间(或小于该视频)的视频路径

时间:2017-09-24 05:12:33

标签: android video media-queries mediastore

我可以使用MediaStore获取文件系统中所有视频的路径。有没有办法使用MediaStore获取特定持续时间(或小于该视频)的视频。比如视频持续时间不到15分钟。

这些是获取视频路径的代码

public void getVideoPaths(Context context) {
    Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
    String[] projection = {MediaStore.Video.VideoColumns.DATA};
    Cursor c = context.getContentResolver().query(uri, projection, null, null, null);
    if (c != null) {
        while (c.moveToNext()) {
            filesNames.add(c.getString(0));
        }
        c.close();
    }
}

2 个答案:

答案 0 :(得分:2)

String duration = Integer.toString(15*60*1000);
Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Video.VideoColumns.DURATION + " < ?", new String[] {duration}, null);

这将只查询短于15分钟的文件

答案 1 :(得分:0)

MediaStore是一个媒体提供商,其中包含内部和外部存储设备上所有可用媒体的元数据。您只需要使用该视频文件的uri,而不是使用以下代码来保持持续时间

MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfYourFile));
int duration = mp.getDuration();

然后检查特定的持续时间。您可以使用另外一个选项以及下面提到的

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//use one of overloaded setDataSource() functions to set your data source
retriever.setDataSource(context, Uri.fromFile(videoFile));
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long timeInMillisec = Long.parseLong(time );

retriever.release()

希望对你有所帮助。