VideoBitmapDecoder不接受int(Android-Glide)

问题描述 投票:0回答:1

我正在尝试使用以下从here找到的代码来保存特定时间的视频缩略图,但VideoBitmapDecoder不接受int参数。它只接受Context或BitmapPool。我该怎么办?

BitmapPool bitmapPool = Glide.get(getApplicationContext()).getBitmapPool(); 
int microSecond = 6000000;// 6th second as an example 
VideoBitmapDecoder videoBitmapDecoder = new VideoBitmapDecoder(microSecond); 
FileDescriptorBitmapDecoder fileDescriptorBitmapDecoder = new FileDescriptorBitmapDecoder(videoBitmapDecoder, bitmapPool, DecodeFormat.PREFER_ARGB_8888); 
Glide.with(getApplicationContext()) .load(yourUri)
  .asBitmap()
  .override(50,50)//
  .videoDecoder(fileDescriptorBitmapDecoder)       .into(yourImageView);
java android kotlin bitmap android-glide
1个回答
2
投票

根本原因:从Glide v4他们更改了API,因此我将为您提供2个选项来解决您的问题。 选项1:保留当前代码并更改app.gradle文件中的Glide依赖项版本。

// implementation 'com.github.bumptech.glide:glide:4.8.0'
// annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
implementation 'com.github.bumptech.glide:glide:3.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:3.8.0'

选项2:在app.gradle文件中保留当前的Glide依赖项并更改代码。

int microSecond = 6000000;// 6th second as an example
RequestOptions options = new RequestOptions().frame(microSecond).override(50, 50);

Glide.with(getApplicationContext())
        .asBitmap()
        .load(videoUri)
        .apply(options)
        .into(yourImageView);

更新:如果要处理位图不在视图上显示

Glide.with(getApplicationContext())
                .asBitmap()
                .load(videoUri)
                .apply(options)
                .listener(new RequestListener<Bitmap>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Bitmap bitmap, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                        // TODO: Process your bitmap here
                        return false;
                    }
                })
                .submit();
© www.soinside.com 2019 - 2024. All rights reserved.