从Android中的MP4文件中提取特定时间的缩略图

我有一个mp4文件列表,我需要为每个文件提取一个缩略图。

缩图标准:

  1. 缩略图必须为Base64格式

  2. 缩略图具有特定大小,将作为方法参数提供

  3. 它必须从文件中间的帧中提取(例如,如果视频时长为10s,则缩略图必须在5秒内从该帧中提取)。

目前已达到1和2,但我不确定该怎么做3。

这是我的代码:

public static String getVideoDrawable(String path, int height, int width) throws OutOfMemoryError{

    try {
        Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path, android.provider.MediaStore.Images.Thumbnails.MINI_KIND);
        bitmap = Bitmap.createScaledBitmap(bitmap, height, width, false);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
        byte[] byteArray = byteArrayOutputStream .toByteArray();

        return Base64.encodeToString(byteArray, Base64.DEFAULT);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
isma3l

您需要使用MediaMetadataRetriever

MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever();
    try {
        metadataRetriever.setDataSource(path);
        String duration=metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
        long time=Long.valueOf(duration)/2;
        Bitmap bitmap = metadataRetriever.getFrameAtTime(time,MediaMetadataRetriever.OPTION_NEXT_SYNC);
    //now convert to base64
    } catch (Exception ex) {
    }

http://developer.android.com/intl/es/reference/android/media/MediaMetadataRetriever.html#getFrameAtTime%28long,%20int%29

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章