Android 获取缩略图,网络视频,或者本地视频

IM软件发送视频文件,需要显示缩略图:

 

import android.graphics.Bitmap;
import android.media.MediaMetadataRetriever;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;

class VideoUtils {

    /**
     * 给出url,获取视频的第一帧
     */
    static String getVideoThumbnail(String url, String name) {
        Bitmap bitmap = null;
        //MediaMetadataRetriever 是android中定义好的一个类,提供了统一
        //的接口,用于从输入的媒体文件中取得帧和元数据;
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {
            //根据文件路径获取缩略图
            retriever.setDataSource(url, new HashMap());
            //获得第一帧图片
            bitmap = retriever.getFrameAtTime();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } finally {
            retriever.release();
        }
        return saveBitmap(bitmap, name);
    }

    /**
     * 获取本地视频的第一帧
     */
    static String getLocalVideoThumbnail(String filePath, String name) {
        Bitmap bitmap = null;
        //MediaMetadataRetriever 是android中定义好的一个类,提供了统一
        //的接口,用于从输入的媒体文件中取得帧和元数据;
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {
            //根据文件路径获取缩略图
            retriever.setDataSource(filePath);
            //获得第一帧图片
            bitmap = retriever.getFrameAtTime();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } finally {
            retriever.release();
        }
        return saveBitmap(bitmap, name);
    }

    /**
     * 保存方法
     */
    private static String saveBitmap(Bitmap bitmap, String picName) {
        String path = "";
        File file = new File("/sdcard/ys", picName);
        if (!file.exists()) file.mkdir();
        try {
            FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
            out.flush();
            out.close();
            path = file.getAbsolutePath();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return path;
    }
}

效果如下:

Android 获取缩略图,网络视频,或者本地视频_第1张图片

Android 获取缩略图,网络视频,或者本地视频_第2张图片

更多详解:
喜欢可以加Q群号:913934649,点赞,评论;

简书: https://www.jianshu.com/u/88db5f15770d

csdn:https://me.csdn.net/beyondforme

掘金:https://juejin.im/user/5e09a9e86fb9a016271294a7

你可能感兴趣的:(Android)