2015-11-06 2 views
2

Я пытаюсь получить миниатюру видео. Но, к сожалению, я не могу получить эскизы.Как получить миниатюру видео в Android?

 itmap bmThumbnail; 

     // MICRO_KIND: 96 x 96 thumbnail 
     bmThumbnail = ThumbnailUtils.createVideoThumbnail("file://" + catBean.tempImage, 
       MediaStore.Video.Thumbnails.MICRO_KIND); 
     img_icon.setImageBitmap(bmThumbnail); 
+0

взгляд на эту ссылку HTTP: // stackoverflow.com/questions/1334694/android-is-it-possible-to-display-video-thumbnails –

ответ

2

создать миниатюру видео, как это в моем приложении

Bitmap myBitmap = BitmapFactory.decodeFile(pathOfFile); 
    if(myBitmap == null) { 
     myBitmap = ThumbnailUtils.createVideoThumbnail(pathOfFile, Thumbnails.MICRO_KIND); 

} 
+0

Я пробовал, но он не работал для видео, которые находятся на SD-карте (External Storage) на Android 5.0 +. Он возвратил нулевую битовую карту – Dante

+0

Если вы получаете видео с SD-карты, то сначала проверьте: видео находится во внешнем хранилище или в каком-то облачном хранилище. Потому что, если видео находится в облачном хранилище, вы получите растровое значение null. –

+0

Это не имеет ничего общего с облаком. Это новая платформа доступа к хранилищу, которая закручивает ее. Это не будет работать с SD-картой с Android 5.0 – Dante

0

Попробуйте

Bitmap bMap = ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(), MediaStore.Video.Thumbnails.MICRO_KIND); 

и для более подробной информации см это ThumbnailUtils

0

Это не так уж трудно сделать. Что-то вроде этого:

int id = **"The Video's ID"** 
ImageView iv = (ImageView) convertView.findViewById(R.id.imagePreview); 
ContentResolver crThumb = getContentResolver(); 
BitmapFactory.Options options=new BitmapFactory.Options(); 
options.inSampleSize = 1; 
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, id, MediaStore.Video.Thumbnails.MICRO_KIND, options); 
iv.setImageBitmap(curThumb); 

Подробнее о MediaStore по адресу: http://developer.android.com/reference/android/provider/MediaStore.Video.html

1

В Xml:

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <ImageView 
       android:id="@+id/thumbnail" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical|center_horizontal" /> 
</LinearLayout> 

В Java:

long id = ""; //Video Id 

ImageView thumbnail = (ImageView) findViewById(R.id.thumbnail); 
ContentResolver crThumb = getContentResolver(); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 2; 
Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb, id, 
          MediaStore.Video.Thumbnails.MINI_KIND, options); 
thumbnail.setImageBitmap(curThumb); 
0

Следующий код работает отлично:

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(file.getAbsolutePath(), MediaStore.Video.Thumbnails.MICRO_KIND); 

Если вы не проходят через CURSOR или если у вас есть только PATH или FILE ОБЪЕКТОВ, вы можете использовать:

public static Bitmap createVideoThumbnail (String filePath, int kind) 

Ссылка: http://developer.android.com/reference/android/media/ThumbnailUtils.html#createVideoThumbnail%28java.lang.String,%20int%29

Смежные вопросы