【问题标题】:Android: How do I get thumbnail from a Video (Uri)Android:如何从视频 (Uri) 中获取缩略图
【发布时间】:2019-12-19 14:20:28
【问题描述】:

我想要视频中任何特定位置的缩略图。我正在使用 ThumbnailUtils 从视频 uri 中获取缩略图并分配给位图,但我在位图上得到了空值。

发生这种情况的任何原因以及如何解决此问题?

selectedVideoUri = data.getData();

bitmap = ThumbnailUtils.createVideoThumbnail(getRealPathFromURI(videoUri),
                        MediaStore.Images.Thumbnails.MINI_KIND);

public String getRealPathFromURI(Uri contentUri) {
        String res = null;
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
        if(cursor.moveToFirst()){;
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            res = cursor.getString(column_index);
        }
        cursor.close();
        return res;
    }

【问题讨论】:

  • 这个问题是有效的,但仍然没有答案,哈哈

标签: android android-thumbnail


【解决方案1】:

您可以使用 Glide 将 thumb 直接加载到 imageview

Glide.with(activity).load(videoPath).into(imageview);

【讨论】:

    【解决方案2】:

    首先使用以下方法在您的数组列表中加载视频列表及其路径

     private void loadData(String currentAppPath) {
        hiddenpath = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + currentAppPath);
        String[] fileName = hiddenpath.list();
        try{
    
                for(String f : fileName){
                    if(HelpperMethods.isVideo(f)){
                        videoFiles.add(hiddenpath.getAbsolutePath()+"/"+f);
                    }
                }
                new Loader().loadImages(Environment.getExternalStorageState());
    
        }catch (Exception e){
    
        }
    }
    

    您需要 Loader().loadImages 方法,所以我在单独的类文件中声明此方法。见下面的代码

    public class Loader {
    String[] imagieFiles;
    
    public void loadImages(String path){
    
        Log.e("path",path);
        System.out.println(path);
    }  }
    

    然后你可以使用下面的代码来获取视频缩略图。默认每个视频存储两个大小的缩略图。

    1) MINI -- MediaStore.Images.Thumbnails.MINI_KIND 和

    2) MICRO -- MediaStore.Images.Thumbnails.MICRO_KIND

      Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath,
                        MediaStore.Images.Thumbnails.MINI_KIND);
                BitmapDrawable bitmapDrawable = new BitmapDrawable(thumb);
                contentViewHolder.videoView.setImageBitmap(thumb);
    

    【讨论】:

      【解决方案3】:

      Android 原生支持使用 MediaPlayer SeekTo 方法

      如果您只想显示要显示的视频占位符,则可以使用以下代码:

      video_view.setVideoPath(videoPath);
      video_view.seekTo(3000); // in milliseconds i.e. 3 seconds
      

      【讨论】:

        猜你喜欢
        • 2017-10-21
        • 1970-01-01
        • 2014-12-04
        • 1970-01-01
        • 2011-10-19
        • 2013-06-05
        • 2018-11-29
        • 2020-05-16
        • 2015-11-09
        相关资源
        最近更新 更多