Android 获取缩略图,网络视频,或者本地视频
16lz
2021-01-23
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; }}
效果如下:
更多详解:
喜欢可以加Q群号:913934649,点赞,评论;
简书: https://www.jianshu.com/u/88db5f15770d
csdn:https://me.csdn.net/beyondforme
掘金:https://juejin.im/user/5e09a9e86fb9a016271294a7
更多相关文章
- Android中View(视图)绘制不同状态背景图片原理深入分析以及State
- android bitmap(图片)旋转90度
- 《android上传图片》
- android图片下载工具类
- Android 自定义显示图片Dialog
- Android之给图片添加水印效果
- Ijkplayer视频播放
- Android 图片手势缩放自定义View
- Android 视频编辑问题记录