gpt4 book ai didi

android - MediaExtractor、MediaMetadataRetriever 与原始/ Assets 文件

转载 作者:可可西里 更新时间:2023-11-01 18:45:15 24 4
gpt4 key购买 nike

我尝试读取 raw/assets 文件夹中的视频文件,我尝试了以下方法,但均无效。我正在测试 API 16。每种方法,我都尝试使用和不使用 mp4 扩展。我真的很感激有人可以帮助我

所有方法都不会崩溃,MediaMetadataRetriever可以设置数据源,但是不能获取宽高和截图。 VideoExtractor 总是返回

06-04 16:44:10.519: E/FileSource(8695): Failed to open file FILE_PATH. (No such file or directory)
06-04 16:44:10.519: E/DecodeActivity(8695): Can't find video info!

方法一:android.resource

String filePath = "android.resource://" + this.activity.getPackageName() + "/raw/green_backhand_slice";
videoExtractor.setDataSource(activity.getApplicationContext(), Uri.parse(filePath), null);
metaRetriever.setDataSource(act.getApplication(), Uri.parse(filePath));

方法二:android_asset

this.filePath = "file:///android_asset/green_backhand_slice";
videoExtractor.setDataSource(activity.getApplicationContext(), Uri.parse(this.filePath), null);
metaRetriever.setDataSource(act.getApplication(), Uri.parse(filePath));

方法 3: Assets 文件描述符

AssetFileDescriptor assetFD = null;
try {
assetFD = getAssets().openFd("green_backhand_slice.mp4");
} catch (IOException e) {
e.printStackTrace();
}

metaRetriever.setDataSource(assetFD.getFileDescriptor());

最佳答案

这里有一些方法可以做到这一点:

1.原始:

final AssetFileDescriptor afd=getResources().openRawResourceFd(R.raw.t);
mediaMetadataRetriever.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

2.raw 作为 uri:

final String uriPath="android.resource://"+getPackageName()+"/raw/t";
final Uri uri=Uri.parse(uriPath);
mediaMetadataRetriever.setDataSource(getApplication(),uri);

3. Assets :

final AssetFileDescriptor afd=getAssets().openFd("t.mp4");
mediaMetadataRetriever.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

关于android - MediaExtractor、MediaMetadataRetriever 与原始/ Assets 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24030756/

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