如何创建videourl表单服务器的缩略图

如何创建urlvideo表单服务器的图像/缩略图

我尝试不工作(不显示缩略图)

String String url = "http://clips.vorwaerts-gmbh.de/VfE_html5.mp4"; Bitmap thumb = ThumbnailUtils.createVideoThumbnail(url,MediaStore.Images.Thumbnails.MINI_KIND); Glide.with(context).load(thumb).asBitmap() /*.override(convertDpToPx(100), convertDpToPx(100))*/ .placeholder(R.drawable.camera) .override(200, 200) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(new BitmapImageViewTarget(img_view) { protected void setResource(Bitmap resource) { RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(context.getResources(), resource); //circularBitmapDrawable.setCircular(true); img_view.setImageDrawable(circularBitmapDrawable); } }); 

我通过回答1来解决它!

但是它在缩略图方面遇到了一些问题,它的变化颜色就是标准。

在此处输入图像描述

试试这个创建新的AsyncTask

 public class DownloadImage extends AsyncTask { ImageView bmImage; public DownloadImage(ImageView bmImage) { this.bmImage = (ImageView ) bmImage; } protected Bitmap doInBackground(String... urls) { Bitmap myBitmap = null; MediaMetadataRetriever mMRetriever = null; try { mMRetriever = new MediaMetadataRetriever(); if (Build.VERSION.SDK_INT >= 14) mMRetriever.setDataSource(path, new HashMap()); else mMRetriever.setDataSource(path); myBitmap = mMRetriever.getFrameAtTime(); } catch (Exception e) { e.printStackTrace(); } finally { if (mMRetriever != null) { mMRetriever.release(); } } return myBitmap; } protected void onPostExecute(Bitmap result) { bmImage.setImageBitmap(result); } } 

比调用这个AsyncTask

  new DownloadImage(YourImageView).execute("Your URL"); 

编辑

或者您也可以使用Glide从url创建video缩略图

  RequestOptions requestOptions = new RequestOptions(); requestOptions.placeholder(R.drawable.placeholder_card_view); requestOptions.error(R.drawable.placeholder_card_view); Glide.with(getContext()) .load(path) .apply(requestOptions) .thumbnail(Glide.with(getContext()).load(path)) .into(ivVideoThumbnail); 
 inner class LoadVideoThumbnail : AsyncTask() { override fun doInBackground(vararg objectURL: String): Bitmap { //return ThumbnailUtils.createVideoThumbnail(objectURL[0], Thumbnails.MINI_KIND); val m = MediaMetadataRetriever() m.setDataSource(objectURL[0], HashMap()) var bm = m.getFrameAtTime(-1) var decoded: Bitmap? = null if (bm != null) { val stream = ByteArrayOutputStream() bm.compress(Bitmap.CompressFormat.PNG, 20, stream) decoded = BitmapFactory.decodeStream(ByteArrayInputStream(stream.toByteArray())) } return decoded!! } override fun onPostExecute(result: Bitmap) { //img.setImageBitmap(result); Glide.with(this@EditItemsBaseActivity). load(result) .listener(object:RequestListener { override fun onException(e: java.lang.Exception?, model: Bitmap?, target: Target?, isFirstResource: Boolean): Boolean { progresBar!!.visibility = View.GONE return false } override fun onResourceReady(resource: GlideDrawable?, model: Bitmap?, target: Target?, isFromMemoryCache: Boolean, isFirstResource: Boolean): Boolean { progresBar!!.visibility = View.GONE return false } }). into(videoImageView) } } 

LoadVideoThumbnail()。执行(videoUrl)