`
jacky-zhang
  • 浏览: 315672 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

为多媒体文件生成缩略图

阅读更多
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后也需要缩小处理。
转载于http://blog.csdn.net/zhjp4295216/archive/2010/08/25/5838466.aspx
分享到:
评论

相关推荐

    SWF生成缩略图预览软件

    SWF生成缩略图预览软件是一款专门针对SWF(Shockwave Flash)文件设计的工具,旨在帮助用户快速批量地创建SWF文件的缩略图。这款软件的主要功能是提取SWF文件中的某一特定帧,将其转换成 BMP、JPG 或 GIF 三种常见...

    JSP上传图片并生成缩略图

    生成缩略图的基本步骤包括读取原始图片,设置缩放比例,然后进行重采样和缩放,最后保存为新的图片文件。缩略图的生成不仅可以减少网络传输的负担,还能在展示大量图片时提高用户体验。 具体实现时,JSP页面可能有...

    java视频生成图片(缩略图)-实例-(指定时间)

    6. **Java bindings for FFmpeg:** 如果不希望通过命令行接口,还可以使用Java对FFmpeg的绑定库,如JAVE(Java Audio Video Encoder),它提供了一个友好的API来执行FFmpeg的任务,包括生成缩略图。 7. **处理步骤...

    如何在Delphi中生成图片缩略图的例子.rar

    在Delphi中,可以使用`TImage`组件来显示图像,但生成缩略图则需要更底层的图像处理函数。Windows API 提供了`GDI+`库,它包含了一系列用于图像处理的函数,如`Graphics`和`Bitmap`类,可以用来创建和操作缩略图。 ...

    C#批量生成缩略图,指定位置图片位置

    在实际应用中,例如在网站开发、照片库管理软件或者多媒体应用程序中,都需要对大量图片进行预览处理,生成缩略图以节省显示资源和提高用户体验。 批量生成缩略图的核心在于读取原始图片文件,根据设定的尺寸比例...

    批量生成缩略图工具

    生成缩略图的过程通常包括读取视频文件、选择合适的帧并将其转换为图片格式。 "源码"表示这是可编辑的程序代码,开发者可以查看和修改其内部逻辑,以适应特定的需求。对于学习和理解视频处理的C#开发者来说,这是一...

    flv 视频生成缩略图 mpplay

    2. **时间戳选择**:确定要生成缩略图的时间点。这可以是视频的开始、中间或结束,或者根据特定的时间戳列表生成多个缩略图。对于用户交互的场景,可能需要提供自定义时间点选择的功能。 3. **帧提取**:从视频流中...

    多功能高精度生成缩略图

    在IT行业中,生成缩略图是一项常见的任务,特别是在网页开发、图像处理以及多媒体应用中。本文将详细探讨“多功能高精度生成缩略图”的C#.Net实现,通过提供的标签“高精度”和“生成缩略图”,我们可以了解到这是一...

    录制视频生成缩略图

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

    批量生成静态缩略图或gif动画缩略图

    7. **批量生成缩略图.exe**: 这是一个可执行文件,可能是为Windows操作系统设计的批量生成缩略图的工具。用户只需运行此程序,并按照界面提示选择输入图片目录、输出目录、缩略图尺寸和模式,即可自动处理指定的图片...

    php 使用ffmpeg 视频转换,截图,生成缩略图

    4. **生成缩略图**:`generateThumbnail()`方法可能会被用来创建视频的预览图像,通常是一个小尺寸的图片。这个方法可能允许设置缩略图的数量、间隔时间以及输出尺寸。 使用这个类的示例可能如下: ```php $ffmpeg...

    android 录制视频并生成缩略图

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

    ThumbNail_continued9l2_缩略图生成_

    在生成缩略图的场景下,GDI+通过其内置的图像处理功能,可以轻松实现对原始图像的缩小、裁剪等操作,同时保持图像的质量。 生成缩略图的基本步骤通常包括以下几个环节: 1. **加载原始图像**:使用GDI+的`Image`类...

    JAVA获取视频缩略图

    这里我们只保留了第一帧作为缩略图,并将其保存为JPEG格式的文件。 需要注意的是,由于FFmpeg库的体积较大,可能不适合某些轻量级应用。在这种情况下,可以考虑使用更轻便的解决方案,如使用`ffmpeg`命令行工具,...

    生成并保存视频缩略图

    在生成视频缩略图方面,FFmpeg提供了丰富的参数选项,使得我们可以灵活地指定生成缩略图的时间点、数量、质量等。 首先,我们需要下载并安装FFmpeg。在这个例子中,我们看到提供的压缩包文件名为"ffmpeg-4.1-win64-...

    上传图片文件到数据库并以缩略图读出vs2005+MsSql2000

    3. **图片处理**:为了生成缩略图,我们需要在服务器端进行图像处理。可以使用如System.Drawing命名空间下的类,如`Image`和`Bitmap`,它们提供了裁剪、缩放等图像处理功能。缩略图的生成通常是通过调整原图的尺寸,...

    .net生成缩略图和水印

    在.NET框架中,生成缩略图和添加水印是一项常见的图像处理任务,广泛应用于网站、应用程序和各种多媒体项目。以下是一些关于这个主题的关键知识点: 1. **图像处理库**: - .NET Framework和.NET Core都提供了...

    .Net生成缩略图、水印图片

    在.NET框架中,生成缩略图和添加水印是常见的图像处理任务,广泛应用于网站、应用程序和各种多媒体项目。下面将详细介绍如何使用.NET来实现这些功能,并探讨如何优化图像大小,使其更适合网络传输。 首先,生成缩略...

    C#视频上传时自动截缩略图_例

    4. 集成到视频上传流程:在用户上传视频文件时,调用上述方法生成缩略图。通常,这个过程可以在后台异步进行,以避免阻塞用户界面。同时,确保处理异常并返回合适的反馈信息。 5. 存储与展示:生成的缩略图可以存储...

    视频截取缩略图

    使用Xuggler,我们可以方便地获取视频的关键帧,将其转换为图像,进而生成缩略图。 2. **FFmpeg**:FFmpeg是一个强大的跨平台多媒体处理工具,其提供了JAVA绑定库(JAVE或JavaAV)。通过这些库,JAVA程序员可以直接...

Global site tag (gtag.js) - Google Analytics