Obtener imagen en miniatura del video de la url del video

¿Es posible obtener la imagen en miniatura de un URL de vídeo? Necesito miniaturas de videos en una vista de lista.

Sí es posible obtener la miniatura de un video usando ThumbnailUtils.

FileOutputStream out; File land=new File(Environment.getExternalStorageDirectory().getAbsoluteFile() +"/portland.jpg");// image file use to create image u can give any path. Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(filePath, MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);//filePath is your video file path. ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] byteArray = stream.toByteArray(); out=new FileOutputStream(land.getPath()); out.write(byteArray); out.close(); 

Si usted está preguntando específicamente sobre los videos de youtube entonces hay automáticamente 4 imágenes generadas por Youtube.

 http://img.youtube.com/vi/video_url_here/0.jpg http://img.youtube.com/vi/video_url_here/1.jpg http://img.youtube.com/vi/video_url_here/2.jpg http://img.youtube.com/vi/video_url_here/3.jpg 

Tamaños de imagen estándar

Fondo del jugador Miniatura (480×360 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

Inicio de la miniatura (120×90 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

Miniatura media (120×90 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

Fin Miniatura (120×90 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

Miniatura de alta calidad (480×360 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

Miniatura de calidad media (320×180 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

Calidad Normal Miniatura (120×90 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

Miniatura de definición estándar (640×480 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

Miniatura de resolución máxima (1920×1080 píxeles) http://i1.ytimg.com/vi/G0wGs3useV8/maxresdefault.jpg

Pruebe ThumbnailUtils , para obtener el mapa de bits de vídeo desde la ruta del archivo

 ThumbnailUtils.createVideoThumbnail(filePath,MediaStore.Video.Thumbnails.MINI_KIND); 

Está funcionando en mi caso

 Uri videoUri = data.getData(); String selectedPathVideo=""; selectedPathVideo = ImageFilePath.getPath(getApplicationContext(), videoUri); Log.i("Image File Path", ""+selectedPathVideo); try { Bitmap thumb = ThumbnailUtils.createVideoThumbnail(selectedPathVideo, MediaStore.Video.Thumbnails.MICRO_KIND); imgFarmerVideo.setImageBitmap(thumb); } catch (Exception e) { e.printStackTrace(); } 

El archivo de soporte

 public class ImageFilePath { /** * Method for return file path of Gallery image * * @param context * @param uri * @return path of the selected image file from gallery */ public static String getPath(final Context context, final Uri uri) { //check here to KITKAT or new version final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; // DocumentProvider if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider if (isExternalStorageDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; if ("primary".equalsIgnoreCase(type)) { return Environment.getExternalStorageDirectory() + "/" + split[1]; } } // DownloadsProvider else if (isDownloadsDocument(uri)) { final String id = DocumentsContract.getDocumentId(uri); final Uri contentUri = ContentUris.withAppendedId( Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); return getDataColumn(context, contentUri, null, null); } // MediaProvider else if (isMediaDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final String type = split[0]; Uri contentUri = null; if ("image".equals(type)) { contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else if ("video".equals(type)) { contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else if ("audio".equals(type)) { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } final String selection = "_id=?"; final String[] selectionArgs = new String[] { split[1] }; return getDataColumn(context, contentUri, selection, selectionArgs); } } // MediaStore (and general) else if ("content".equalsIgnoreCase(uri.getScheme())) { // Return the remote address if (isGooglePhotosUri(uri)) return uri.getLastPathSegment(); return getDataColumn(context, uri, null, null); } // File else if ("file".equalsIgnoreCase(uri.getScheme())) { return uri.getPath(); } return null; } /** * Get the value of the data column for this Uri. This is useful for * MediaStore Uris, and other file-based ContentProviders. * * @param context The context. * @param uri The Uri to query. * @param selection (Optional) Filter used in the query. * @param selectionArgs (Optional) Selection arguments used in the query. * @return The value of the _data column, which is typically a file path. */ public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { Cursor cursor = null; final String column = "_data"; final String[] projection = { column }; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null && cursor.moveToFirst()) { final int index = cursor.getColumnIndexOrThrow(column); return cursor.getString(index); } } finally { if (cursor != null) cursor.close(); } return null; } /** * @param uri The Uri to check. * @return Whether the Uri authority is ExternalStorageProvider. */ public static boolean isExternalStorageDocument(Uri uri) { return "com.android.externalstorage.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is DownloadsProvider. */ public static boolean isDownloadsDocument(Uri uri) { return "com.android.providers.downloads.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is MediaProvider. */ public static boolean isMediaDocument(Uri uri) { return "com.android.providers.media.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is Google Photos. */ public static boolean isGooglePhotosUri(Uri uri) { return "com.google.android.apps.photos.content".equals(uri.getAuthority()); } } 

Es muy importante identificar los componentes de un problema. De hecho, diría que tiene dos problemas separados:

  1. Descarga de un archivo desde una URL.

  2. Creación de una imagen en miniatura a partir de un archivo de vídeo incompleto.

Mire en esos dos por separado, usted encontrará la abundancia de información.

Es posible obtener una miniatura de un archivo de vídeo o url utilizando FFMPEG .

FFMPEG debe ser construido utilizando el NDK (o puede encontrar algunos binarios FFMPEG construidos con Android). Aquí está un proyecto de GitHub para construir FFMPEG:

https://github.com/guardianproject/android-ffmpeg

A continuación, puede incluir los archivos binarios de FFMPEG con su aplicación y ejecutar FFMPEG desde el código de su aplicación para generar una imagen desde el vídeo (local o URL) mediante un comando como:

 ffmpeg -i videosite.com/video.flv -ss 00:00:15.000 -vframes 1 thumbnail_out.png 

Una cosa a considerar es en qué tiempo de la búsqueda (opción -ss) usted toma la miniatura para que sea una imagen significativa que represente el vídeo.

Para obtener una miniatura de la URL, sólo tengo una solución hasta ahora, tienes que usar esta biblioteca

Soporta los protocolos de archivo, http, https, mms, mmsh y rtmp

y

¡Apoya aac, acc +, avi, flac, mp2, mp3, mp4, ogg, 3gp y más! Formatos (audio y video):

Es posible obtener la imagen en miniatura de vídeo de url de vídeo.

Si su tipo de video es Vimeo siga los siguientes pasos:

1) Suponga que su URL de video es: http://player.vimeo.com/video/17314292

2) Obtener la ID de video desde Url: eg. 17314292

3) Llame a WS con id Video y formato XMl http://vimeo.com/api/v2/video/17314292.xml

Obtendrás "thumbnail_small", "thumbnail_medium", "thumbnail_large" en formato xml para video thumb from video id

Si su tipo de video es YouTube, siga los siguientes pasos:

1) URL de vídeo: http://www.youtube.com/embed/Nl2iMF0yKW8

2) Obtener la ID de video desde Url: eg. Nl2iMF0yKW8

3) Reemplazar id de vídeo en este url http://i3.ytimg.com/vi/Nl2iMF0yKW8/default.jpg

NOTA : Simplemente reemplace su ID aquí.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.