如何使用 MediaStore 获取特定持续时间(或更短)的视频路径
How to get a specific duration ( or less than that ) video paths using 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();
}
}
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()
希望对你有所帮助。
String duration = Integer.toString(15*60*1000);
Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Video.VideoColumns.DURATION + " < ?", new String[] {duration}, null);
这将只查询短于 15 分钟的文件
我可以使用 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();
}
}
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()
希望对你有所帮助。
String duration = Integer.toString(15*60*1000);
Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Video.VideoColumns.DURATION + " < ?", new String[] {duration}, null);
这将只查询短于 15 分钟的文件