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

时间:2017-12-20 08:15:59

标签: java android android-videoview android-video-player video-thumbnails

下面的代码运行良好,生成图像缩略图来自给定网址视频,但我想知道,是可以在假设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);
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用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!");
}