1. 程式人生 > >安卓擷取視訊第一幀的方法

安卓擷取視訊第一幀的方法

視訊app大多是需要有一張相關視訊的圖片做封面展示的。下面是可以直接從視訊的url取到視訊的第一幀圖片的方法:

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(context,url  //url的引數, MediaStore.Video.Thumbnails.MINI_KIND);

這樣取到的是一個bitmap的物件,可以直接將圖片的view物件設定進去。

不過這個方法只適用於放在單頁中,如果是做list的話是很卡的,原因是bitmap在取到圖片後市需要佔用很大記憶體的,有人說那一個頁面只有一兩張圖片也卡啊,那是因為在擷取視訊圖片時候需要解析視訊,這一步很耗記憶體的,下面給出的程式碼是很容易解決使用list展示圖片記憶體消耗的問題的:

在activity中:

mVideoFrameImageLoader = new VideoFrameImageLoader(getActivity(), listView,list);   //第三個引數為你的視訊地址,走完這裡後邊跟上setAdapter就ok

在apapter的getview中:

if(convertView==null){
    if (!LibsChecker.checkVitamioLibs(context))
        return null;
convertView= LayoutInflater.from(context).inflate(R.layout
.video_item,null); //初始化顯示資料 mVideoFrameImageLoader.initList(); viewHolder=new ViewHolder(convertView); convertView.setTag(viewHolder); }else { viewHolder= (ViewHolder) convertView.getTag(); }
Bitmap bitmap=mVideoFrameImageLoader.showCacheBitmap(VideoFrameImageLoader.formatVideoUrl(mImageUrl));//裡面的引數是視訊地址
viewHolder.pic.setImageBitmap(bitmap);
就這幾行程式碼就搞定了,其中的兩個類給給大家下載的地址(完整的程式碼,直接複製就能用)。