tomar snapseed profesionales para mejor fotos efectos editar con celular bonitas app aplicaciones aplicacion android thumbnails android-video-player

snapseed - mejor aplicacion para editar fotos android



¿Es posible generar una miniatura de una url de video en Android? (7)

Aquí está su enlace:

  1. Android: ¿Es posible mostrar miniaturas de video?
  2. http://developer.android.com/reference/android/media/ThumbnailUtils.html

En mi opinión, el lado del servidor debe crear una miniatura de un video y transferir las imágenes de video en miniatura a través de su servicio.

Estoy trabajando en una aplicación de video. Estoy transmitiendo un video desde el enlace del servidor, ¿puedo generar una miniatura de video desde la URL sin descargar el video?


Este método le dará miniaturas de todos los archivos de video en su teléfono ... no dude en hacer preguntas

public static Bitmap[] getThumbnail(Context context){ Uri uri=MediaStore.Video.Media.EXTERNAL_CONTENT_URI; String[] projection=new String[] { MediaStore.Video.Thumbnails._ID }; Cursor ca = context.getContentResolver().query(uri, projection, null, null, null); Bitmap[] b=new Bitmap[ca.getCount()]; int i=0; ca.moveToFirst(); while(i<ca.getCount()) { int id = ca.getInt(ca.getColumnIndex(MediaStore.Video.Thumbnails._ID)); b[i++]=MediaStore.Video.Thumbnails.getThumbnail(context.getContentResolver(),id, MediaStore.Images.Thumbnails.MINI_KIND, null ); ca.moveToNext(); } ca.close(); return b; }


No es posible crear una miniatura desde el enlace de Steaming, debe mostrarla desde el servidor. Mejor subir una miniatura a lo largo del video. Usa el siguiente código para generar miniaturas

Bitmap ThumbnailUtils.createVideoThumbnail("picturePath", MediaStore.Video.Thumbnails.MINI_KIND);


Obtenemos todos los videos en el teléfono Android. http://sunilkmrnishad.blogspot.in/2017/03/read-files-apps-photos-media-from.html

public class ThumbnailExtract extends AsyncTask<String, long[], Bitmap> { private final String videoUrl; private final ImageView mThumbnail; private final boolean mIsVideo; private MediaMetadataRetriever mmr; public ThumbnailExtract(String videoLocalUrl, ImageView thumbnail, boolean isVideo) { this.videoUrl = videoLocalUrl; mThumbnail = thumbnail; mIsVideo = isVideo; if (!isVideo) { mmr = new MediaMetadataRetriever(); } } @Override protected Bitmap doInBackground(String... params) { if (!mIsVideo) { return getBitmap(videoUrl); } else { return ThumbnailUtils.createVideoThumbnail(videoUrl, MediaStore.Images.Thumbnails.MINI_KIND); } } @Override protected void onPostExecute(Bitmap thumb) { if (thumb != null) { mThumbnail.setImageBitmap(thumb); } } private Bitmap getBitmap(String fileUrl) { mmr.setDataSource(fileUrl); byte[] data = mmr.getEmbeddedPicture(); Bitmap bitmap = null; // convert the byte array to a bitmap if (data != null) { bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); } return bitmap != null ? ScalingUtilities.createScaledBitmap(bitmap, 40, 40, ScalingUtilities.ScalingLogic.FIT) : bitmap; } }


Probé esto con Glide y funcionó, Glide versión 4.3.1

GlideApp.with(context) .asBitmap() .load(FILE_URL) .diskCacheStrategy(DiskCacheStrategy.DATA) .into(iv_picture);

Edit: Glide estaba trabajando lento para mí

La respuesta principal no fue dar resultado para algunos videos, aquí está cómo lo hice

MediaMetadataRetriever retriever = new MediaMetadataRetriever(); //give YourVideoUrl below retriever.setDataSource("YourVideoUrl", new HashMap<String, String>()); // this gets frame at 2nd second Bitmap image = retriever.getFrameAtTime(2000000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC); //use this bitmap image


Sin descargar el video, puedes generar una miniatura desde el siguiente código:

public static Bitmap retriveVideoFrameFromVideo(String videoPath) throws Throwable { Bitmap bitmap = null; MediaMetadataRetriever mediaMetadataRetriever = null; try { mediaMetadataRetriever = new MediaMetadataRetriever(); if (Build.VERSION.SDK_INT >= 14) mediaMetadataRetriever.setDataSource(videoPath, new HashMap<String, String>()); else mediaMetadataRetriever.setDataSource(videoPath); // mediaMetadataRetriever.setDataSource(videoPath); bitmap = mediaMetadataRetriever.getFrameAtTime(); } catch (Exception e) { e.printStackTrace(); throw new Throwable("Exception in retriveVideoFrameFromVideo(String videoPath)" + e.getMessage()); } finally { if (mediaMetadataRetriever != null) { mediaMetadataRetriever.release(); } } return bitmap; }

NOTA: El video se almacena como Intra y no Intra (Marcos de imagen). GetFrameAtTime devolverá el fotograma no Intra más cercano como mapa de bits. Así que básicamente no se descargará el video completo.


intenta usar este

Bitmap bitmap=ThumbnailUtils.createVideoThumbnail("VIDEO FILE ADDRESS",MediaStore.Video.Thumbnails.MINI_KIND);