/** * 根据视频位置 截取第一帧 */ public Bitmap createVideoThumbnail(String palyUrl, int kind) { Bitmap bitmap = null; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { if (palyUrl.startsWith("http://") || palyUrl.startsWith("https://") || palyUrl.startsWith("widevine://")) { //网络视频 retriever.setDataSource(palyUrl, new Hashtable<String, String>()); } else { //本地视频 retriever.setDataSource(palyUrl); } bitmap = retriever.getFrameAtTime(-1); } catch (Exception ex) { // Assume this is a corrupt video file ex.printStackTrace(); } finally { try { retriever.release(); } catch (RuntimeException ex) { // Ignore failures while cleaning up. ex.printStackTrace(); } } if (bitmap == null) { return null; } if (kind == MediaStore.Images.Thumbnails.MINI_KIND) { // Scale down the bitmap if it's too large. int width = bitmap.getWidth(); int height = bitmap.getHeight(); int max = Math.max(width, height); if (max > 512) { float scale = 512f / max; int w = Math.round(scale * width); int h = Math.round(scale * height); bitmap = Bitmap.createScaledBitmap(bitmap, w, h, true); } } else if (kind == MediaStore.Images.Thumbnails.MICRO_KIND) { bitmap = ThumbnailUtils.extractThumbnail(bitmap, 96, 96, ThumbnailUtils.OPTIONS_RECYCLE_INPUT); } return bitmap; }
视频类App开发相关技术点
最新推荐文章于 2023-04-22 20:40:50 发布