现在Android视频的处理越来越多,下面介绍的是Android获取在线/网络视频的缩略图:

1、方式一,使用Android原生API,MediaMetadataRetriever,代码如下:

MediaMetadataRetriever retr = new MediaMetadataRetriever();retr.setDataSource(newsItem.getUrl(),new HashMap());Bitmap bitmap =  retr.getFrameAtTime();holder.imageView.setImageBitmap(bitmap);Log.e("图片",bitmap.toString());

上面标红的地方是关键,如果是获取本地视频的缩略图就不用后面的参数;

此种方式经过验证:耗时3秒左右

2、方式二 :创建FFmpegMediaMetadataRetriever对象

 FFmpegMediaMetadataRetriever mm=new FFmpegMediaMetadataRetriever();
 mm.setDataSource(path);//获取文件缩略图    Bitmap bitmap=mm.getFrameAtTime(); 

此种方式没有亲测过耗时,不过应该和方式一差不多;

3、方式三:集成FFMPEG,调用FFMPEG命令获取视频缩略图:

给大家推荐一个比较简单集成FFMPEG的方法,

(1)、直接在builid文件中 添加下面的依赖:

compile 'com.writingminds:FFmpegAndroid:0.3.2'

(可能有最新版本,大家可以去尝试下)

(2)、新建一个application类,在onCreat()方法中初始化:

private void initFFmpegBinary(Context context) {   try {      FFmpeg.getInstance(context).loadBinary(new LoadBinaryResponseHandler() {         @Override         public void onFailure() {         }      });   } catch (FFmpegNotSupportedException e) {      e.printStackTrace();   }}

(3)新建工具类调用FFMPEG命令行去获取缩略图,代码如下:

/sdcard/test.MOV:标明的是视频源,可以是在线视频地址,也可以是本地视频地址

/sdcard/a.jpg :标明的是获取视频缩略图之后保存的地址

0.001:表示的是获取视频第1秒的缩略图352x240:表示的是获取到的缩略图的大小String cmd = "i /sdcard/test.MOV -y -f image2 -t 0.001 -s 352x240 /sdcard/a.jpg "String[] command = cmd.split(" ");try {    FFmpeg.getInstance(context).execute(command, new ExecuteBinaryResponseHandler() {        @Override        public void onFailure(String s) {                 Log.e("失败",s);        }        @Override        public void onSuccess(String s) {                      Log.e("成功",s);        }        @Override        public void onStart() {                       Log.e("开始","1");        }        @Override        public void onFinish() {            Log.e("完成","3");        }    });} catch (FFmpegCommandAlreadyRunningException e) {    e.printStackTrace();}
方式3,使用FFMPEG命令可以获取绝大多数视频格式缩略图,如:MP4、MOV、TS、AVI 等一些主流视频格式,而且速度很快。上面介绍了3种获取缩略图的方法,不过大家要注意下,如果获取的图片较大、很多的话就得处理了,防止OOM等一些基本问题。
 

 

更多相关文章

  1. Android中的多媒体编程-黄俊东-专题视频课程
  2. Android XML解析学习——Sax方式(续)
  3. Android计时器正确应用方式解析
  4. android控件的对齐方式详解
  5. 传智播客Android视频教程——第六天
  6. Android studio中相对布局组件排列方式
  7. 转载:android 各种xml资源的引用方式
  8. Android――全屏显示的两种方式
  9. android view的几种布局方式

随机推荐

  1. Android UI开发第二十五篇——分享一篇自
  2. 安卓开发入门-与java关系
  3. Android 如何在关于手机界面添加个图片
  4. Android 进程保活,Service进程常驻
  5. Android context 文件模式
  6. Android四大组件之Service调优及进程保活
  7. Android Studio 学习笔记(一)环境搭建、
  8. Android之Inflate()方法用途
  9. Android上的resample处理
  10. Android 图表应用 解决方案