如何创建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)
- SQLiteDatabase getWritableDatabase(){throw new RuntimeException(“Stub!”); }
- Android – 事实上REST / JSON客户端的实现?
- Apple的pListforms的XML可以通过Android Java解析吗?
- 读取并显示传入的消息文本android
- 如何在android中安排一些代码执行或者:android中的守护程序线程究竟是什么?
- 单击第1项时的Android CarouselPicker
- Android内部类内存泄漏和上下文泄漏?
- 按钮function中的空指针exception
- 如何在Android的OpenCV中在Touch上的框架上绘制多个矩形?