Android 根据视频地址获取视频的第一帧画面做为封面

一、前言:

1. 代码一:

public Bitmap getBitmapFormUrl(String url) {
    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    retriever.setDataSource(url);
    //getFrameAtTime()--->在setDataSource()之后调用此方法。 如果可能,该方法在任何时间位置找到代表性的帧,
    // 并将其作为位图返回。这对于生成输入数据源的缩略图很有用。
    Bitmap bitmap = retriever.getFrameAtTime();
    retriever.release();
    return bitmap;
}

就这么几行代码还是给我抛了个IllegalArgumentException异常,最后查看文档发现在api14以后又增加了个参数。传了个空的HashMap进去就获取到了第一帧的画面….

image.png

最后整理的代码就长下面这个样子了

2. 代码二:

public static Bitmap getBitmapFormUrl(String url) {    
      Bitmap bitmap = null;   
      MediaMetadataRetriever retriever = new MediaMetadataRetriever();   
       try {       
               if (Build.VERSION.SDK_INT >= 14) {            
                   retriever.setDataSource(url, new HashMap());        

         } else {           
                 retriever.setDataSource(url);        

         }        

       /*getFrameAtTime()--->在setDataSource()之后调用此方法。 如果可能,该方法在任何时间位置找到代表性的帧,         并将其作为位图返回。这对于生成输入数据源的缩略图很有用。**/        

     bitmap = retriever.getFrameAtTime();    

    } catch (IllegalArgumentException e) {   
           e.printStackTrace();    
     } finally {      
            try {         
                      retriever.release();      
            } catch (IllegalArgumentException e) {        
              e.printStackTrace();       
          }    
   }    
             return bitmap;
}

总结:我在使用时,代码一正常,代码二报错,你们看看遇到的有问题吗?


参考链接:https://blog.csdn.net/suyimin2010/article/details/81270325

你可能感兴趣的:(Android 根据视频地址获取视频的第一帧画面做为封面)