1. 程式人生 > >視訊類App開發相關技術點

視訊類App開發相關技術點

/**
 * 根據視訊位置 擷取第一幀
 */
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; }