如何从Android中的视频文件中获取特定的时间帧图像?

时间:2014-05-19 13:55:19

标签: android video time frame

实际上我需要使用Mediameatdatareteriver从视频中获取特定的时间帧图像 但我对使用FFMPEG不感兴趣。

如果有人对此有任何想法请帮助我们。

1 个答案:

答案 0 :(得分:1)

尝试使用此代码(从Android的android.media.ThumbnailUtils类中提取)。

    Bitmap bitmap = null;
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    try {
        retriever.setDataSource(filePath);
        bitmap = retriever.getFrameAtTime(time);
    } catch (IllegalArgumentException ex) {
        // Assume this is a corrupt video file
    } catch (RuntimeException ex) {
        // Assume this is a corrupt video file.
    } finally {
        try {
            retriever.release();
        } catch (RuntimeException ex) {
            // Ignore failures while cleaning up.
        }
    }

请注意time值以微秒为单位。

编辑这些是another overload for getFrameAtTime(),您可以在其中传入选项,以便所选框架更接近指定时间(尽管它可能不是关键帧)。例如,使用:

bitmap = retriever.getFrameAtTime(time, MediaMetadataRetriever. OPTION_CLOSEST);

文档指出此选项的性能成本虽然更高,但请注意这一点。