如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片

在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放。这时,服务器会先给我们返回视频的url,这个时候就需要通过视频url去获取第一帧图片进行展示了!具体代码实现如下:

  • 获取网络视频第一帧图片代码:
 /**  
     *  服务器返回url,通过url去获取视频的第一帧  
     *  Android 原生给我们提供了一个MediaMetadataRetriever类
     *  提供了获取url视频第一帧的方法,返回Bitmap对象
     * 
     *  @param videoUrl  
     *  @return  
     */  
    public static Bitmap getNetVideoBitmap(String videoUrl) {  
        Bitmap bitmap = null;  

        MediaMetadataRetriever retriever = new MediaMetadataRetriever();  
        try {  
            //根据url获取缩略图  
            retriever.setDataSource(videoUrl, new HashMap());  
            //获得第一帧图片  
            bitmap = retriever.getFrameAtTime();  
        } catch (IllegalArgumentException e) {  
            e.printStackTrace();  
        } finally {  
            retriever.release();  
        }  
        return bitmap;  
    } 

其中函数getFrameAtTime()有其他重载函数,该函数会随机选择一帧抓取,如果想要指定具体时间的缩略图,可以用函数getFrameAtTime(long timeUs), getFrameAtTime(long timeUs, int option),具体如何使用可以查doc。

当用户点击播放过该视频后,这时候一般都会对该视频进行缓存操作,下次用户播放的时候,直接获取本地视频播放即可,不需要再去请求服务器获取资源,这个时候我们就可以获取本地视频的第一帧图片进行展示

  • 获取本地视频第一帧图片代码:
/**  
     * 获取本地视频的第一帧  
     *  
     * @param localPath  
     * @return  
     */  
    public static Bitmap getLocalVideoBitmap(String localPath) {  
        Bitmap bitmap = null;   
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();  
        try {  
            //根据文件路径获取缩略图  
            retriever.setDataSource(localPath);  
            //获得第一帧图片  
            bitmap = retriever.getFrameAtTime();  
        } catch (IllegalArgumentException e) {  
            e.printStackTrace();  
        } finally {  
            retriever.release();  
        }  
        return bitmap;  
    }  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值