`
xiaoboss
  • 浏览: 648167 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android为多媒体文件生成缩略图

 
阅读更多

1、Video
对于视频,取第一帧作为缩略图,也就是怎样从filePath得到一个Bitmap对象。

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;
    }

 

Android提供了MediaMetadataRetriever,由JNI(media_jni)实现。
看得出MediaMetadataRetriever主要有两个功能:MODE_GET_METADATA_ONLY和MODE_CAPTURE_FRAME_ONLY
这里设mode为MODE_CAPTURE_FRAME_ONLY,调用captureFrame取得一帧。
另外还有两个方法可以用:
extractMetadata 提取文件信息,ARTIST、DATE、YEAR、DURATION、RATING、FRAME_RATE、VIDEO_FORMAT
和extractAlbumArt 提取专辑信息,这个下面的音乐文件可以用到。

2、Music
对于音乐,取得AlbumImage作为缩略图,还是用MediaMetadataRetriever

private Bitmap createAlbumThumbnail(String filePath) {
        Bitmap bitmap = null;
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        try {
            retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY);
            retriever.setDataSource(filePath);
            byte[] art = retriever.extractAlbumArt();
            bitmap = BitmapFactory.decodeByteArray(art, 0, art.length);
        } catch(IllegalArgumentException ex) {
        } catch (RuntimeException ex) {
        } finally {
            try {
                retriever.release();
            } catch (RuntimeException ex) {
                // Ignore failures while cleaning up.
            }
        }
        return bitmap;
    }

 

retriever.extractAlbumArt()得到的是byte数组,还需要一步用BitmapFactory编码得到Bitmap对象。

3、Image
图片就很简单了

        Bitmap bm = null;
        Options op = new Options();
        op.inSampleSize = inSampleSize;
        op.inJustDecodeBounds = false;
        bm = BitmapFactory.decodeFile(mFile.getPath(), op);

 

能直接得到Bitmap对象,把图片缩小到合适大小就OK。
同样上面的Video和Music,retrive到Bitmap后也需要缩小处理。

分享到:
评论

相关推荐

    android 录制视频并生成缩略图

    在Android平台上,录制视频并生成缩略图是常见的多媒体处理功能,广泛应用于各种应用程序,如社交分享、视频编辑等。本文将深入探讨如何在Android应用中实现这一功能,包括视频录制的基本步骤、生成缩略图的方法以及...

    录制视频生成缩略图

    在IT行业中,录制视频生成缩略图是一项常见的需求,特别是在多媒体应用、视频分享平台和社交媒体等领域。这个过程涉及到视频处理和图像操作,是数字媒体技术的重要组成部分。在Android平台上,我们可以利用内置的API...

    Android项目实现获取视频的缩略图(ThumbnailUtils),并且播放.rar

    3. **生成缩略图**:调用`ThumbnailUtils.createVideoThumbnail()`方法,将得到的缩略图保存为Bitmap对象。 4. **显示缩略图**:将生成的Bitmap对象设置到ImageView或者其他视图组件中。 至于视频播放,Android...

    android 根据指定路径获取本地视频列表显示,点击缩略图调用系统播放器进行播放

    8. **性能优化**:考虑到可能存在的大量视频文件,为提高性能,可以在后台线程(如使用`AsyncTask`)中进行文件扫描和缩略图生成,避免阻塞UI线程。同时,可以使用`LruCache`或`BitmapPool`缓存缩略图,减少内存消耗...

    Android获取图片、视频缩略图

    2. **BitmapFactory.Options**: 如果我们不希望使用`MediaStore`,也可以直接读取图片文件并使用`BitmapFactory`来生成缩略图。通过设置`BitmapFactory.Options`的`inSampleSize`参数,我们可以控制图片的缩放比例,...

    android录制视频,缩略图播放视频

    在Android平台上,录制和播放视频以及生成缩略图是常见的功能需求,对于开发者来说,理解和掌握这些技术至关重要。本文将详细讲解如何实现这些功能,并提供相关的编程知识点。 首先,我们来探讨如何录制视频。...

    thumbnails-android 获取视频还有图片的缩略图

    这个类提供了一种从多媒体文件中提取元数据的方法,包括获取视频帧作为缩略图。以下是一个基本示例: ```java MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource...

    Android 缩略图

    - `Bitmap.createScaledBitmap`: 如果已经有一个完整的Bitmap对象,但需要调整大小以生成缩略图,可以使用这个方法。它接受原始Bitmap、目标宽度和高度以及是否保持原比例作为参数。 2. **缩略图类型** - `MINI_...

    缩略图显示

    Android还提供了一个叫做`BitmapFactory`的类,它包含了一些处理位图的方法,比如`decodeStream()`、`decodeFile()`等,可以用来从文件流或者文件路径中加载图片,并且可以通过`Options`参数来指定加载的位图大小,...

    Android6.0 获取手机视屏路径 转换成缩略图

    - Android提供了`MediaMetadataRetriever`类,用于从多媒体文件中提取元数据,包括生成缩略图。调用`getFrameAtTime()`方法可以获取指定时间点的视频帧作为缩略图。 - 另一个方法是使用`MediaExtractor`类配合`...

    扫描本地视频并获取缩略图Demo

    在IT行业中,尤其是在移动应用开发或者多媒体处理领域,获取视频的缩略图是一项常见的需求。这个"扫描本地视频并获取缩略图Demo"提供了一个很好的示例,它可以帮助开发者了解如何在自己的应用程序中实现类似的功能。...

    Android生成视频预览缩略图播放指定视频.rar

    Android生成视频预览缩略图播放指定视频,学习一下如何获取界面上VideoView组件,如何创建MediaController对象,设置videoView与mController建立关联,设置mController与videoView建立关联,让VideoView获取焦点等...

    图片缩略图展开

    在IT领域,图片缩略图展开是一个常见的操作,特别是在网页设计、图像处理和多媒体应用中。这个过程涉及到从一个小尺寸的预览图像(缩略图)恢复到原始的大尺寸图片,以便用户可以查看细节或者进行编辑。下面我们将...

    图片视频缩略图

    - 保存图片到设备的存储,可以使用`ContentResolver`的`insert()`方法将`Uri`转换为文件路径,并使用`BitmapFactory`的`decodeStream()`来读取图片。 2. **视频录制与保存**: - 启动`MediaRecorder`类来录制视频...

    视频缩略图 和显示的缓存异步机制

    在用户界面中,如果进行耗时操作,如生成缩略图,可能会导致界面卡顿,影响用户体验。因此,缩略图的生成和加载通常会在后台线程进行,不影响主线程的更新。Android中可以使用Handler、AsyncTask或者Java的...

    2011.09.27——— android 视频缩略图之MediaMetadataRetriever

    `MediaMetadataRetriever`是Android SDK提供的一种工具类,专门用于从多媒体文件中提取元数据,包括视频帧作为缩略图。这个类自Android 2.2(API级别8)起就已经存在,对于开发者来说是个非常实用的工具。 首先,...

    基于Android的实现获取视频的缩略图(ThumbnailUtils),并且播放.zip

    `ThumbnailUtils`是Android的`android.media`包中的一个静态工具类,它提供了从视频文件生成缩略图的方法。主要方法有`createVideoThumbnail()`,它可以创建一个指定视频文件的缩略图。 2. **`...

    【计算机专业-Andorid项目源码100套之】实现获取视频的缩略图(ThumbnailUtils),并且播放

    这个类位于`android.media`包下,它的核心方法是`createVideoThumbnail()`,可以根据传入的视频文件路径和选项生成缩略图。 以下是`ThumbnailUtils.createVideoThumbnail()`的基本使用方法: ```java Bitmap ...

    实现获取视频的缩略图(ThumbnailUtils),并且播放.zip

    需要注意的是,生成缩略图可能会消耗一定资源,因此在处理大量视频时,要合理控制并优化性能。例如,可以考虑异步执行此操作,或者将生成的缩略图缓存起来,避免重复生成。 此外,Android还提供了其他获取视频缩略...

Global site tag (gtag.js) - Google Analytics