【问题标题】:Extract Thumbnail for specific second from MP4 file in Android从 Android 中的 MP4 文件中提取特定秒的缩略图
【发布时间】:2016-04-05 23:07:01
【问题描述】:

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

缩略图标准:

  1. 缩略图必须是 Base64 格式

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

  3. 必须从文件中间的帧中提取(例如,如果视频时长为 10 秒,则缩略图必须从第 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;
    }
}

【问题讨论】:

    标签: java android video


    【解决方案1】:

    您需要为此使用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

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2013-12-22
      • 2012-05-08
      • 2020-03-15
      • 1970-01-01
      • 2018-02-02
      • 2014-03-08
      • 2017-03-28
      • 2010-09-30
      相关资源
      最近更新 更多