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;//整型,缩放到1/x
op.inJustDecodeBounds = false;
bm = BitmapFactory.decodeFile(mFile.getPath(), op);
能直接得到Bitmap对象,把图片缩小到合适大小就OK。
同样上面的Video和Music,retrive到Bitmap后也需要缩小处理。
转自:
http://blog.csdn.net/fhy_2008/article/details/6777923
分享到:
相关推荐
在Android平台上,录制视频并生成缩略图是常见的多媒体处理功能,广泛应用于各种应用程序,如社交分享、视频编辑等。本文将深入探讨如何在Android应用中实现这一功能,包括视频录制的基本步骤、生成缩略图的方法以及...
在IT行业中,录制视频生成缩略图是一项常见的需求,特别是在多媒体应用、视频分享平台和社交媒体等领域。这个过程涉及到视频处理和图像操作,是数字媒体技术的重要组成部分。在Android平台上,我们可以利用内置的API...
这个类提供了一种从多媒体文件中提取元数据的方法,包括获取视频帧作为缩略图。以下是一个基本示例: ```java MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource...
3. **生成缩略图**:调用`ThumbnailUtils.createVideoThumbnail()`方法,将得到的缩略图保存为Bitmap对象。 4. **显示缩略图**:将生成的Bitmap对象设置到ImageView或者其他视图组件中。 至于视频播放,Android...
8. **性能优化**:考虑到可能存在的大量视频文件,为提高性能,可以在后台线程(如使用`AsyncTask`)中进行文件扫描和缩略图生成,避免阻塞UI线程。同时,可以使用`LruCache`或`BitmapPool`缓存缩略图,减少内存消耗...
- Android提供了`MediaMetadataRetriever`类,用于从多媒体文件中提取元数据,包括生成缩略图。调用`getFrameAtTime()`方法可以获取指定时间点的视频帧作为缩略图。 - 另一个方法是使用`MediaExtractor`类配合`...
- `Bitmap.createScaledBitmap`: 如果已经有一个完整的Bitmap对象,但需要调整大小以生成缩略图,可以使用这个方法。它接受原始Bitmap、目标宽度和高度以及是否保持原比例作为参数。 2. **缩略图类型** - `MINI_...
2. **BitmapFactory.Options**: 如果我们不希望使用`MediaStore`,也可以直接读取图片文件并使用`BitmapFactory`来生成缩略图。通过设置`BitmapFactory.Options`的`inSampleSize`参数,我们可以控制图片的缩放比例,...
Android还提供了一个叫做`BitmapFactory`的类,它包含了一些处理位图的方法,比如`decodeStream()`、`decodeFile()`等,可以用来从文件流或者文件路径中加载图片,并且可以通过`Options`参数来指定加载的位图大小,...
在Android平台上,录制和播放视频以及生成缩略图是常见的功能需求,对于开发者来说,理解和掌握这些技术至关重要。本文将详细讲解如何实现这些功能,并提供相关的编程知识点。 首先,我们来探讨如何录制视频。...
- 保存图片到设备的存储,可以使用`ContentResolver`的`insert()`方法将`Uri`转换为文件路径,并使用`BitmapFactory`的`decodeStream()`来读取图片。 2. **视频录制与保存**: - 启动`MediaRecorder`类来录制视频...
`ThumbnailUtils`是Android的`android.media`包中的一个静态工具类,它提供了从视频文件生成缩略图的方法。主要方法有`createVideoThumbnail()`,它可以创建一个指定视频文件的缩略图。 2. **`...
在IT领域,图片缩略图展开是一个常见的操作,特别是在网页设计、图像处理和多媒体应用中。这个过程涉及到从一个小尺寸的预览图像(缩略图)恢复到原始的大尺寸图片,以便用户可以查看细节或者进行编辑。下面我们将...
在IT行业中,尤其是在移动应用开发或者多媒体处理领域,获取视频的缩略图是一项常见的需求。这个"扫描本地视频并获取缩略图Demo"提供了一个很好的示例,它可以帮助开发者了解如何在自己的应用程序中实现类似的功能。...
在用户界面中,如果进行耗时操作,如生成缩略图,可能会导致界面卡顿,影响用户体验。因此,缩略图的生成和加载通常会在后台线程进行,不影响主线程的更新。Android中可以使用Handler、AsyncTask或者Java的...
`MediaMetadataRetriever`是Android SDK提供的一种工具类,专门用于从多媒体文件中提取元数据,包括视频帧作为缩略图。这个类自Android 2.2(API级别8)起就已经存在,对于开发者来说是个非常实用的工具。 首先,...
Android生成视频预览缩略图播放指定视频,学习一下如何获取界面上VideoView组件,如何创建MediaController对象,设置videoView与mController建立关联,设置mController与videoView建立关联,让VideoView获取焦点等...
这个类位于`android.media`包下,它的核心方法是`createVideoThumbnail()`,可以根据传入的视频文件路径和选项生成缩略图。 以下是`ThumbnailUtils.createVideoThumbnail()`的基本使用方法: ```java Bitmap ...
关键帧提取是生成缩略图的核心步骤。关键帧是在视频中没有依赖于前一帧信息的帧,因此可以独立展示画面内容。FFmpeg的`avformat_find_stream_index_by_type`和`avpacket_get_side_data`函数可以帮助我们找到关键帧。...