MediaMetadataRetriever.getFrameAtTime()始终在呼叫时返回相同的帧。 看看我的代码
private ArrayList<Bitmap> getFrames(String path){
try {
ArrayList<Bitmap> bArray = new ArrayList<Bitmap>();
bArray.clear();
MediaMetadataRetriever mRetriever = new MediaMetadataRetriever();
mRetriever.setDataSource(getDataSource(path));
for (int i = 3000; i <60000; i=i+5000) {
bArray.add(mRetriever.getFrameAtTime(i, MediaMetadataRetriever.OPTION_CLOSEST_SYNC));
}
return bArray;
} catch (Exception e) {
// TODO: handle exception
return null;
}
}
此方法始终返回相同的帧
答案 0 :(得分:10)
我不知道您的视频有多长时间,但是getTimeAtFrame
的时间必须用 MICRO 秒来表示在long var中使用的时间
ex:1秒的视频有1000000 USeconds,如果使用的时间很短(像你一样),你必须非常幸运地检索出你视频的第一帧!!!
答案 1 :(得分:3)
你将不得不使用像FFMPEG这样的东西来获取帧。
您必须使用NDK,并为Android编译FFMPEG;不幸的是,这不会很容易。
有两个起点:
ffmpeg for a android (using tutorial: "ffmpeg and Android.mk")
祝你好运!答案 2 :(得分:0)