gpt4 book ai didi

java - 如何获取视频文件详细信息,例如。在 Android 中持续时间?

转载 作者:行者123 更新时间:2023-11-30 09:32:59 26 4
gpt4 key购买 nike

我很难从之前录制的文件中获取特定的视频文件详细信息,例如持续时间等。我目前所能做的就是获取所有文件的 cursor ,然后一个一个地循环。

Cursor cursor = MediaStore.Video.query(getContext().getContentResolver(), MediaStore.Video.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME});


if(cursor.moveToFirst())
while(!cursor.isLast()){

if(cursor.getString(3)==fight.filename)
{
// do something here
}

cursor.moveToNext();
}

但是,我需要访问特定文件的详细信息,因此我尝试创建 URI,但运气不好,因为返回的 cursor 始终为 null。我哪里出错了?

                Uri uri = Uri.parse(Environment.DIRECTORY_DCIM+"/FightAll_BJJ_Scoring/"+(fight.filename));

Cursor cursor = MediaStore.Video.query(getContext().getContentResolver(), uri, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME});

// cursor is always null here

编辑:多亏了下面的 zapl 回答,我在下面得到了这段代码(注意我修改了游标行),但是现在返回的游标不为空,但它仍然是空的,当我尝试读取 cursor.getString(2) 时,我得到了没有什么。

Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String selection = MediaColumns.DATA + "=?";
String[] selectionArgs = { Environment.DIRECTORY_DCIM+"/FightAll_BJJ_Scoring/"+(fight.filename) };
Cursor cursor = getContext().getContentResolver().query(uri, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME}, selection, selectionArgs, null);

任何帮助将不胜感激。

最佳答案

你的uri是错误的。媒体数据库不知道如何解析路径,因此您必须使用您期望的路径查询项目。就像下面的代码一样工作(可能包含错误,因为我直接在这里写的)。

Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String selection = MediaColumns.DATA + "=?";
String dcim = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();

String[] selectionArgs = { dcim+"/FightAll_BJJ_Scoring/"+(fight.filename) };

Cursor cursor = MediaStore.Video.query(getContext().getContentResolver(), uri, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME}, selection, selectionArgs, null);

关于java - 如何获取视频文件详细信息,例如。在 Android 中持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396413/

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