在给定位置为 ImageView 中的视频生成缩略图

Generating thumbnail for videos in ImageView at a given position

下面的代码运行良好,其生成图像缩略图 来自 给定的 视频 [=21] =],但我想知道,是否有可能在假设 100 毫秒时生成视频缩略图,因为默认情况下它在开始位置生成缩略图,所以如果开始时视频屏幕是黑色的,那么缩略图也会显示黑色所以看起来很奇怪。那么有没有可能通过跳过几毫秒来获得缩略图

public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;
        String path;

        public DownloadImage(ImageView bmImage, String path) {
            this.bmImage = (ImageView ) bmImage;
            this.path=path;
        }

        protected Bitmap doInBackground(String... urls) {
            Bitmap myBitmap = null;
            MediaMetadataRetriever mMRetriever = null;
            try {
                mMRetriever = new MediaMetadataRetriever();
                if (Build.VERSION.SDK_INT >= 14)
                    mMRetriever.setDataSource(path, new HashMap<String, String>());
                else
                    mMRetriever.setDataSource(path);
                myBitmap = mMRetriever.getFrameAtTime();
            } catch (Exception e) {
                e.printStackTrace();


            } finally {
                if (mMRetriever != null) {
                    mMRetriever.release();
                }
            }
            return myBitmap;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }
    }

您可以使用 MediaMetadataRetriever 的其他重载方法来获取特定时间的帧。

public Bitmap getFrameAtTime(long timeUs, int option) {
    throw new RuntimeException("Stub!");
}

public Bitmap getFrameAtTime(long timeUs) {
    throw new RuntimeException("Stub!");
}

public Bitmap getFrameAtTime() {
    throw new RuntimeException("Stub!");
}