zoukankan      html  css  js  c++  java
  • Android加载视频封面的两种方式

    package com.z.z.utils;
    
    /*
     * :Created by z on 2020-08-31
     */
    
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.media.MediaMetadataRetriever;
    import android.util.Log;
    import android.widget.ImageView;
    
    import androidx.annotation.NonNull;
    
    import com.bumptech.glide.Glide;
    import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
    import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
    import com.bumptech.glide.load.resource.bitmap.VideoDecoder;
    import com.bumptech.glide.request.RequestOptions;
    
    import java.security.MessageDigest;
    import java.util.HashMap;
    
    public class VideoFrameTool {
    
        private static VideoFrameTool instance;
    
        public static VideoFrameTool getInstance() {
            if (instance == null) {
                instance = new VideoFrameTool();
            }
            return instance;
        }
    
        /**
         * 获取网络视频第一帧
         *
         * @param videoUrl
         * @return
         */
        public void loadFirst(String videoUrl, @NonNull ImageView cover) {
            Bitmap bitmap = null;
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            try {
                //根据url获取缩略图
                retriever.setDataSource(videoUrl, new HashMap());
                //获得第一帧图片
                bitmap = retriever.getFrameAtTime();
            } catch (IllegalArgumentException e) {
                //e.printStackTrace();
                Log.e("zhu", e.toString());
            } finally {
                retriever.release();
            }
            if (bitmap != null) {
                cover.setImageBitmap(bitmap);
            }
        }
    
        /**
         *   context 上下文
         *   uri 视频地址
         *   imageView 设置image
         *   frameTimeMicros 获取某一时间帧
         */
        public void loadFirstWithGlide(final Context context, String uri, ImageView imageView, long frameTimeMicros) {
            RequestOptions requestOptions = RequestOptions.frameOf(frameTimeMicros);
            requestOptions.set(VideoDecoder.FRAME_OPTION, MediaMetadataRetriever.OPTION_CLOSEST);
            requestOptions.transform(new BitmapTransformation() {
                @Override
                protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
                    return toTransform;
                }
    
                @Override
                public void updateDiskCacheKey(MessageDigest messageDigest) {
                    try {
                        messageDigest.update((context.getPackageName() + "RotateTransform").getBytes("utf-8"));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            Glide.with(context).load(uri).apply(requestOptions).into(imageView);
        }
    
        /**
         * 获取本地视频的第一帧
         *
         * @param localPath
         * @return
         */
        public Bitmap getLocalVideoBitmap(String localPath) {
            Bitmap bitmap = null;
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            try {
                //根据文件路径获取缩略图
                retriever.setDataSource(localPath);
                //获得第一帧图片
                bitmap = retriever.getFrameAtTime();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } finally {
                retriever.release();
            }
            return bitmap;
        }
    
    }
  • 相关阅读:
    TypeWonder – 在任何网站上实时预览字体效果
    16例美丽的国外服务和应用程序网站设计欣赏
    25款响应式,支持视网膜显示的 Wordpress 主题
    扁平化设计的最新趋势 – 长阴影(Long Shadow)
    HTML5 Maker – 在线轻松制作 HTML5 动画效果
    经典设计:30个另类的 404 not found 页面设计
    字体大宝库:设计师必备的专业免费英文字体
    小伙伴们惊呆了!10行 JavaScript 实现文本编辑器
    Glyphish – 精心打造的 iPhone & iPad 应用程序图标
    精品资源:40个实用的 PSD 贴纸模板《下篇》
  • 原文地址:https://www.cnblogs.com/Oldz/p/13725644.html
Copyright © 2011-2022 走看看