2015-09-11 3 views

ответ

27

Вы можете использовать класс ThumbnailUtils, чтобы получить видеоролик Video Video.

createVideoThumbnail() - метод, который возвращает битмап (уменьшенное изображение) видео с пути видеофайла.

С Android Docs:

общественности статической Bitmap createVideoThumbnail (String Filepath, внутр вид)

Создать миниатюру видео для видео. Может вернуть значение null, если видео повреждено или формат не поддерживается.

Вы можете создать VideoThumbnail из SDK-пути следующим образом.

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(filePath, Thumbnails.MINI_KIND); 

Используя ThumbnailUtils, вы можете создать эскиз двух типов.

  1. MediaStore.Images.Thumbnails.MICRO_KIND тип будет генерировать миниатюру размером 96 х 96.

  2. MediaStore.Images.Thumbnails.MINI_KIND тип будет генерировать миниатюру размером 512 х 384.

Я надеюсь, что это помогает!

+0

Большое вам спасибо. Это работает :) –

+0

это работает для видео uri от JSON –

+0

Нет, нет. он работает только с видеофайлами, хранящимися в памяти – Rajesh

1

Пожалуйста, проверьте мой код надеюсь, что это поможет вам

/** 
    * Retrieve video frame image from given video path 
    * 
    * @param p_videoPath 
    *   the video file path 
    * 
    * @return Bitmap - the bitmap is video frame image 
    * 
    * @throws Throwable 
    */ 
    @SuppressLint("NewApi") 
    public static Bitmap retriveVideoFrameFromVideo(String p_videoPath) 
      throws Throwable 
    { 
     Bitmap m_bitmap = null; 
     MediaMetadataRetriever m_mediaMetadataRetriever = null; 
     try 
     { 
      m_mediaMetadataRetriever = new MediaMetadataRetriever(); 
      m_mediaMetadataRetriever.setDataSource(p_videoPath); 
      m_bitmap = m_mediaMetadataRetriever.getFrameAtTime(); 
     } 
     catch (Exception m_e) 
     { 
      throw new Throwable(
        "Exception in retriveVideoFrameFromVideo(String p_videoPath)" 
          + m_e.getMessage()); 
     } 
     finally 
     { 
      if (m_mediaMetadataRetriever != null) 
      { 
       m_mediaMetadataRetriever.release(); 
      } 
     } 
     return m_bitmap; 
    } 

Modify выше способа в соответствии с вашими потребностями

1

Если вы непосредственно создавать эскизы следующим

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(path, 
    MediaStore.Images.Thumbnails.MINI_KIND); 

Тогда это проблема с этим методом, если вы создаете миниатюры для большого набора видео (для большого количества видео). приложение замерзает, пока все миниатюры не будут загружены, потому что весь процесс выполняется в основном потоке.


Использование SuziLoader

Этот загрузчик загружает эскизы для видео, которые локально хранятся в файловой системе в фоновом режиме.

String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/video.mp4"; 
ImageView mThumbnail = (ImageView) findViewById(R.id.thumbnail); 

SuziLoader loader = new SuziLoader(); //Create it for once 
loader.with(MainActivity.this) //Context 
    .load(path) //Video path 
    .into(mThumbnail) // imageview to load the thumbnail 
    .type("mini") // mini or micro 
    .show(); // to show the thumbnail 

Чтобы получить эту зависимость использовать следующие шаги

Шаг 1. Добавить репозиторий JitPack в файл сборки
Добавьте его в корневой build.gradle в конце репозиториев:

allprojects { 
    repositories { 
     ... 
     maven { url 'https://jitpack.io' } 
    } 
} 

Шаг 2. Добавить зависимость

dependencies { 
    compile 'com.github.sushinpv:SuziVideoThumbnailLoader:0.1.0' 
} 

ADD READ ВНЕШНЕЕ ХРАНЕНИЕ Разрешение в манифесте

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
Смежные вопросы