createVideoThumbnail类[转]

private Bitmap createVideoThumbnail(String filePath) {
        Bitmap bitmap = null;
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {
            retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
            retriever.setDataSource(filePath);
            bitmap = retriever.captureFrame();
        } catch(IllegalArgumentException ex) {
            // Assume this is a corrupt video file
        } catch (RuntimeException ex) {
            // Assume this is a corrupt video file.
        } finally {
            try {
                retriever.release();
            } catch (RuntimeException ex) {
                // Ignore failures while cleaning up.
            }
        }
        return bitmap;
    }
private void getVideoFile(final List<videoItem> list)
{
  Bitmap bitmap = null;
  ContentResolver mContentResolver = this.getContentResolver();
        Cursor cursor = mContentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null,  
                null, null, MediaStore.Video.DEFAULT_SORT_ORDER);
        if (cursor.moveToFirst())
        {
            do {
                //ID:MediaStore.Audio.Media._ID
                int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));  
                //名称 :MediaStore.Audio.Media.TITLE
                String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));  
                //专辑名:MediaStore.Audio.Media.ALBUM
                String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.ALBUM));  
                //歌手名: MediaStore.Audio.Media.ARTIST
                String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.ARTIST));  
                //路径 :MediaStore.Audio.Media.DATA
                String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));  
                //总播放时长 :MediaStore.Audio.Media.DURATION
                int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));  
                //大小 :MediaStore.Audio.Media.SIZE
                int size = (int)cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
                //拍摄时间
                int dateTaken = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATE_TAKEN));
                String datetime = DateFormat.format("yyyy-MM-dd kk:mm:ss", dateTaken).toString();
                bitmap = createVideoThumbnail(url);
   }

转载于:https://www.cnblogs.com/healthy-tree/archive/2011/08/04/2127459.html

要在RecyclerView中只显示视频的缩略图,你可以使用VideoThumbnail来获取视频的缩略图,并将其显示在ImageView中。以下是实现的步骤: 1. 在RecyclerView的适配器中,在ViewHolder中添加一个ImageView来显示视频的缩略图。 2. 在获取视频数据的时候,使用VideoThumbnail来获取每个视频的缩略图,然后将其设置到ImageView中。 3. 如果你只想显示视频文件,可以在获取视频数据的时候过滤掉其他型的文件。 以下是一个示例代码片段,可以帮助你实现这个功能: ```java public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoViewHolder> { private List<File> mVideoList; public VideoAdapter(List<File> videoList) { mVideoList = videoList; } @Override public VideoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_item, parent, false); return new VideoViewHolder(itemView); } @Override public void onBindViewHolder(VideoViewHolder holder, int position) { File videoFile = mVideoList.get(position); Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoFile.getAbsolutePath(), MediaStore.Images.Thumbnails.MINI_KIND); holder.thumbnailImageView.setImageBitmap(thumbnail); } @Override public int getItemCount() { return mVideoList.size(); } public static class VideoViewHolder extends RecyclerView.ViewHolder { public ImageView thumbnailImageView; public VideoViewHolder(View itemView) { super(itemView); thumbnailImageView = (ImageView) itemView.findViewById(R.id.thumbnail_image_view); } } } ``` 在上面的代码中,我们使用了ThumbnailUtils.createVideoThumbnail()方法来获取视频的缩略图,并将其设置到ImageView中。注意,这个方法需要传入视频文件的路径,以及所需缩略图的尺寸。 希望这能帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值