視訊類App開發相關技術點
阿新 • • 發佈:2018-12-31
/** * 根據視訊位置 擷取第一幀 */ 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; }