wake-up-neo.net

Ist es möglich, ein Miniaturbild aus einer Video-URL in Android zu erstellen

Ich arbeite an einer Video-App. Ich streame ein Video von einem Server-Link. Ist es mir möglich, ein Video-Miniaturbild aus der URL zu generieren, ohne das Video herunterzuladen.

24
DKV

Es ist nicht möglich, ein Miniaturbild von einem Steaming-Link zu erstellen. Sie müssen es vom Server anzeigen. Laden Sie am besten ein Miniaturbild entlang des Videos hoch. Verwenden Sie den folgenden Code, um ein Miniaturbild zu erstellen

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

Ohne das Herunterladen eines Videos können Sie ein Thumbnail aus dem folgenden Code erzeugen:

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;
}

HINWEIS: Video wird als Intra und nicht Intra (Bilderrahmen) gespeichert. GetFrameAtTime gibt den nächsten Nicht-Intra-Frame als Bitmap zurück. Im Grunde wird also nicht das gesamte Video heruntergeladen.

69
KishuDroid

Hier ist dein Link:

  1. Android: Ist es möglich, Video-Miniaturen anzuzeigen?
  2. http://developer.Android.com/reference/Android/media/ThumbnailUtils.html

Meiner Meinung nach sollte der Server eine Miniaturansicht aus einem Video erstellen und Miniaturbildvideobilder über Ihren Dienst übertragen. 

5
koyot3

Ich habe dies mit Glide versucht und es hat funktioniert, Glide Version 4.3.1

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

Edit: Glide arbeitete für mich langsam

Die Top-Antwort gab für einige Videos kein Ergebnis, wie ich es gemacht habe

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
4
Manohar Reddy

versuchen Sie es mit diesem 

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

1
lost veteran

Auf diese Weise erhalten Sie Miniaturansichten aller Videodateien in Ihrem Telefon. Fragen Sie einfach

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;
    }
0
lost veteran