web-dev-qa-db-ja.com

androidのビデオURLからサムネイルを生成することは可能ですか?

私はビデオアプリに取り組んでいます。サーバーリンクからビデオをストリーミングしていますが、ビデオをダウンロードせずにURLからビデオサムネイルを生成することは可能ですか?.

26
DKV

ストリーミングリンクからサムネイルを作成することはできません。サーバーから表示する必要があります。動画に沿っ​​てサムネイルをアップロードしてください。以下のコードを使用してサムネイルを生成します

Bitmap bitmap = ThumbnailUtils.createVideoThumbnail("picturePath", MediaStore.Video.Thumbnails.MINI_KIND);
13
DKV

ビデオをダウンロードせずに、以下のコードからサムネイルを生成できます。

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

注:ビデオはイントラとして保存され、非イントラ(ピクチャフレーム)getFrameAtTimeは、最も近い非イントラフレームをビットマップとして返​​します。したがって、基本的にはビデオ全体をダウンロードすることはありません。

76
KishuDroid

私はグライドでこれを試してみましたが、うまくいきました、グライドバージョン4.3.1

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

編集:グライドは私のために遅く働いていた

トップの答えはいくつかのビデオで結果を出していない、ここに私がそれをやった方法がある

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

リンクは次のとおりです。

  1. Android:ビデオのサムネイルを表示できますか?
  2. http://developer.Android.com/reference/Android/media/ThumbnailUtils.html

私の意見では、サーバー側はビデオからサムネイルを作成し、サービスを通じてサムネイルビデオ画像を転送する必要があります。

5
koyot3

これを使ってみて

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

1
lost veteran

この方法では、携帯電話のすべての動画ファイルのサムネイルが表示されます...気軽に質問してください

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