5

こんにちは、韓国の開発者です。質問があるので、このサイトに入ります。

    InputStream is;
    URL url = 
         new URL("http://112.216.25.58:8888/VOD_LAUNCHER/media/youtube_sample3.mp4");
    Uri uri = Uri.parse(url.toURI().toString());
    is = getContentResolver().openInputStream(uri);
    Bitmap bitmap = BitmapFactory.decodeStream(is);
    //Bitmap bitmap = BitmapFactory.decodeFile(url.toString());
    //MediaMetadataRetriever ret = new MediaMetadataRetriever();
    //ret.setDataSource(url.toString());
    //Bitmap bitmap = ret.getFrameAtTime(0);
    //mImageView.setImageURI(uri);

    //Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(uri.toString(), Thumbnails.MICRO_KIND);
    mImageView.setImageBitmap(bitmap);

private Bitmap getPreview(URI uri) {
        File image = new File(uri);

    BitmapFactory.Options bounds = new BitmapFactory.Options();
    bounds.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(image.getPath(), bounds);
    if ((bounds.outWidth == -1) || (bounds.outHeight == -1))
        return null;

    int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight
            : bounds.outWidth;

    BitmapFactory.Options opts = new BitmapFactory.Options();
    //opts.inSampleSize = originalSize / THUMBNAIL_SIZE;
    return BitmapFactory.decodeFile(image.getPath(), opts);     
}

private String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(getApplicationContext(), 
                                              contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

ThumbnailUtil などを使用しようとしましたが、うまくいきませんでした。Android 4.0でThumbnailImageを取得するには? 返信ありがとうございます。

4

4 に答える 4

20

API レベル 8 から、これを行うことができます。

String path = /*get video path*/;
Bitmap thumb = ThumbnailUtils.createVideoThumbnail(path,
                MediaStore.Images.Thumbnails.MINI_KIND);

素敵でシンプル:)

于 2014-02-17T14:46:56.190 に答える
7

ビデオのフレームを抽出したい場合は、このクラスを使用する必要があります。コードは次のようになります。

MediaMetadataRetriever media = new MediaMetadataRetriever();
media.setDataSource(path);
Bitmap extractedImage = media.getFrameAtTime(time, option);

役に立つことを願っています

于 2013-10-15T15:26:01.300 に答える
1

とても簡単です!!! グライドライブラリを使用できます。

最初に videoView に imageView を追加し、以下のコードを使用します。

>

 GlideApp.with(getApplicationContext()).load("empty")
    .thumbnail(GlideApp.with(getApplicationContext()).load("videoURL"))
    .into(imageView);

このコードは画像をダウンロードし、最終的にインターネットの消費量を減らします。

于 2020-04-29T06:37:03.397 に答える
1

ビデオのサムネイルを取得するには、これを試してください。

ImageView videoview;
 Bitmap thumb = ThumbnailUtils.createVideoThumbnail("YOUR VIDEO STRING PATH",   MediaStore.Images.Thumbnails.MINI_KIND);
 Matrix matrix = new Matrix();
 Bitmap bmThumbnail = Bitmap.createBitmap(thumb, 0, 0,
 thumb.getWidth(), thumb.getHeight(), matrix, true);
 videoview.setImageBitmap(bmThumbnail);

編集済み: このメソッドを使用して、ビデオ URI の文字列パスを取得します。

/**
     * Try to return the absolute file path of the Gallery video.
     * 
     * @param context
     * @param uri
     * @return the file path or null
     */
    public static String getVideoPathFromGallary(final Context context,Uri contentUri) {
        String[] proj = {  MediaStore.Video.Media.DATA, MediaStore.Video.Media.SIZE, MediaStore.Video.Media.DURATION};
        Cursor cursor = ((Activity) context).managedQuery(contentUri, proj, null, null, null);
        if (cursor == null)
            return null;
        cursor.moveToFirst();
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        int fileSize = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
        long duration = TimeUnit.MILLISECONDS.toSeconds(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)));
        System.out.println("size: " + fileSize);
        System.out.println("duration: " + duration);
        return cursor.getString(column_index);
    }
于 2013-10-15T06:59:05.543 に答える