gpt4 book ai didi

android - 每秒检索帧数 - Android/MediaMetadataRetriever

转载 作者:行者123 更新时间:2023-11-29 01:55:57 26 4
gpt4 key购买 nike

我希望使用 MediaMetadataRetriever 在 5 秒视频上每秒检索 10 帧并将它们存储到 Arraylist 中。我对使用 ffmpeg 不感兴趣。

目前,我的应用程序正在创建 50 个静止图像 - 每秒间隔 10 个相同的帧,而不是每秒 10 个不同的帧。

public class FrameCollector {

MediaMetadataRetriever mmr;

double fps;
double duration;
long counter = 0;
long incrementer;

public FrameCollector(String path, Context context)
{
try
{
mmr = new MediaMetadataRetriever();
mmr.setDataSource(path);

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
String fpsString = pref.getString("prefFPS", "10");
fps = Double.parseDouble(fpsString);
incrementer = (long) (1000000 / fps);

String stringDuration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
duration = Double.parseDouble(stringDuration) * 1000;
}
catch(Exception ex)
{
ex.printStackTrace();
}
}

public ArrayList<Bitmap> getBitmaps()
{
try
{
ArrayList<Bitmap> bitFrames = new ArrayList<Bitmap>();

Bitmap b = mmr.getFrameAtTime(counter);

while (counter < duration && b != null)
{
bitFrames.add(b);
counter += incrementer;
b = mmr.getFrameAtTime(counter);
}
return bitFrames;
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
}
}
}

最佳答案

根据@Michael 的评论

“getFrameAtTime(counter) 是 getFrameAtTime(counter, OPTION_CLOSEST_SYNC) 的包装器,这意味着它将只读取关键帧。尝试改用 getFrameAtTime(counter, OPTION_CLOSEST)”

关于android - 每秒检索帧数 - Android/MediaMetadataRetriever,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15135537/

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