如何从Android中的视频文件的帧视频文件、Android

2023-09-07 08:37:45 作者:恶女通杀

的MediaMetadataRetriever.getFrameAtTime()总是返回相同的帧时,曾经打电话。 看看我的code

The MediaMetadataRetriever.getFrameAtTime() always returns same frames when ever call. Have a look my code

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;

    }
}

此方法总是返回相同的帧

This method always return same frames

推荐答案

您将不得不使用类似FFMPEG来获取帧。

You are going to have to use something like FFMPEG to fetch the frames.

您必须使用NDK,并编译FFMPEG为Android;不幸的是它不会是很容易的。

You will have to use the NDK, and compile FFMPEG for Android; unfortunately it's not going to be very easy.

这两个出发点:

http://ffmpeg.org/

ffmpeg对于一款Android(使用教程:&QUOT; ffmpeg的和Android.mk&QUOT;)

祝你好运!