如何使用方形毕加索库加载视频缩略图?

Moh*_*Ali 19 android picasso

目前我正在使用picasso将MediaStore图像缩略图加载到ListView以下代码片段中:( video.getData()返回图像的实际路径,如mnt/sdcard/...)

Picasso.with(this.context)
       .load(new File(photo.getData()))
       .resize(50, 50).config(config)
       .centerCrop()
       .into(viewHolder.imageViewItem);
Run Code Online (Sandbox Code Playgroud)

现在我无法通过传递video.getData()而不是加载MediaStore视频缩略图photo.getData()

Ram*_*Ram 38

首先,您需要创建VideoRequestHandler

public class VideoRequestHandler extends RequestHandler{
    public String SCHEME_VIDEO="video";
    @Override
    public boolean canHandleRequest(Request data) 
    {
        String scheme = data.uri.getScheme();
        return (SCHEME_VIDEO.equals(scheme));
    }

    @Override
    public Result load(Request data, int arg1) throws IOException 
    {
         Bitmap bm = ThumbnailUtils.createVideoThumbnail(data.uri.getPath(), MediaStore.Images.Thumbnails.MINI_KIND);
         return new Result(bm,LoadedFrom.DISK);  
    }
}
Run Code Online (Sandbox Code Playgroud)

之后

 VideoRequestHandler videoRequestHandler;
 Picasso picassoInstance;
Run Code Online (Sandbox Code Playgroud)

只构建一次

 videoRequestHandler = new VideoRequestHandler();
 picassoInstance = new Picasso.Builder(context.getApplicationContext())
  .addRequestHandler(videoRequestHandler)
  .build();
Run Code Online (Sandbox Code Playgroud)

然后从路径加载文件

 picassoInstance.load(VideoRequestHandler.SCHEME_VIDEO+":"+filepath).into(holder.videoThumbnailView);
Run Code Online (Sandbox Code Playgroud)

  • @ Lion789 [查看持有者]中的`ImageView`(http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder). (2认同)
  • 仍然显示黑屏...我尝试在videoViewItem之前和之后放置videoThumbnailView项目...并且它不会改变结果仍然是黑屏 (2认同)

Ren*_* C. 0

之前,您有两个选择:

1) 预先调用,例如当您检索视频并存储位图时:

Bitmap thumbnailBitmap = MediaStore.Video.Thumbnails.getThumbnail(content, id, MediaStore.Video.Thumbnails.MINI_KIND, options);
Run Code Online (Sandbox Code Playgroud)

2) 创建自定义下载器(未针对本地媒体进行验证)

但现在,使用 Picasso 2.4,您可以创建 RequestHandler。您可以查看此页面,例如: http: //blog.jpardogo.com/requesthandler-api-for-picasso-library/

在我当前的使用中,我获取缩略图路径,然后使用该路径调用 Picasso。为了获取缩略图路径,我参考了:android get video thumbnail PATH ,而不是 Bitmap