/** * 播放视频第一帧图片的异步任务 */ class MyVideoAsyncTask extends AsyncTask<String, Void, Bitmap> { @Override protected Bitmap doInBackground(String... strings) { String path = strings[0]; //视频文件 File videoImageFile = new File(path); MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(String.valueOf(videoImageFile)); String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); // 播放时长单位为毫秒 Log.i("aaa", duration); mBitmap = compressImage(mmr.getFrameAtTime()); try { //第一帧图片保存 File imageFile = new File(photoPath + "/video.jpg"); if (imageFile.exists()) { imageFile.delete(); } FileOutputStream out = new FileOutputStream(imageFile); mBitmap.compress(Bitmap.CompressFormat.PNG, 90, out); out.flush(); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return mBitmap; } @Override protected void onPostExecute(Bitmap bitmap) { ivFirst.setImageBitmap(bitmap); lLayoutLoading.setVisibility(View.GONE); } } /** * 压缩图片 * * @param image * @return */ public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); int options = 90; while (byteArrayOutputStream.toByteArray().length / 1024 > 100) { byteArrayOutputStream.reset(); image.compress(Bitmap.CompressFormat.JPEG, options, byteArrayOutputStream); options -= 10; } ByteArrayInputStream isBm = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null); return bitmap; }
Android中获取视频的第一帧图片(记录)
最新推荐文章于 2024-04-29 18:58:32 发布