Android 獲取視訊第一幀縮圖
乾貨
從API 8開始,新增了一個類:
android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。
public static Bitmap createVideoThumbnail (String filePath, int kind)
第一個引數是視訊檔案的路徑,第二個引數是指定圖片的大小,有兩種選擇Thumbnails.MINI_KIND與Thumbnails.MICRO_KIND。
- 第一種文件上說大小是512 x 384 ,我用一個MP4格式檔案測試得到544 x 960,用一個wmv格式檔案測試得到160 x 120。明顯不靠譜。
- 第二種引數兩種格式檔案得到的大小都是 96 x 96,這個才是縮圖。
extractThumbnail(Bitmap source, int width, int height, int options) extractThumbnail(Bitmap source, int width, int height)
這兩種方法都是用來處理Bitmap的大小的,第一個引數是要處理的Bitmap,第二個引數是處理後寬度,第三個是高度,第四個引數options,如果options定義為OPTIONS_RECYCLE_INPUT,則回收資源。也就是說可以用第三種方法把擷取到的視訊第一幀的Bitmap轉成任意想要的大小,第三個方法還可以獲取記憶體卡內圖片的縮圖。
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path1, Thumbnails.MINI_KIND);
bitmap = ThumbnailUtils.extractThumbnail(bitmap, 210, 210);
從API 10開始新增一類MediaMetadataRetriever可以用來獲取媒體檔案的資訊
MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource("/sdcard/33.mp4"); Bitmap bitmap= mmr.getFrameAtTime(); image.setImageBitmap(bitmap); System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE)+""); System.out.println(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)+""); mmr.release();
MediaMetadataRetriever可以獲取視訊任何一幀的縮圖。
public static Bitmap createVideoThumbnail(String filePath) { // MediaMetadataRetriever is available on API Level 8 // but is hidden until API Level 10 Class<?> clazz = null; Object instance = null; try { clazz = Class.forName("android.media.MediaMetadataRetriever"); instance = clazz.newInstance(); Method method = clazz.getMethod("setDataSource", String.class); method.invoke(instance, filePath); // The method name changes between API Level 9 and 10. if (Build.VERSION.SDK_INT <= 9) { return (Bitmap) clazz.getMethod("captureFrame").invoke(instance); } else { byte[] data = (byte[]) clazz.getMethod("getEmbeddedPicture").invoke(instance); if (data != null) { Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); if (bitmap != null) return bitmap; } return (Bitmap) clazz.getMethod("getFrameAtTime").invoke(instance); } } catch (IllegalArgumentException ex) { // Assume this is a corrupt video file } catch (RuntimeException ex) { // Assume this is a corrupt video file. } catch (InstantiationException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (InvocationTargetException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (ClassNotFoundException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (NoSuchMethodException e) { Log.e(TAG, "createVideoThumbnail", e); } catch (IllegalAccessException e) { Log.e(TAG, "createVideoThumbnail", e); } finally { try { if (instance != null) { clazz.getMethod("release").invoke(instance); } } catch (Exception ignored) { } } return null; }
相關推薦
Android 獲取視訊第一幀縮圖
乾貨 從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。 public static Bitmap createVideoThumbna
Android -- 獲取視訊第一幀縮圖
從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。 public static Bitmap createVideoThumbnail (
Android視訊處理 --處理視訊第一幀縮圖
從API 8開始,新增了一個類: android.media.ThumbnailUtils這個類提供了3個靜態方法一個用來獲取視訊第一幀得到的Bitmap,2個對圖片進行縮略處理。 ? 1 public static Bitmap createVi
android獲取圖片原始長寬,獲取視訊第一幀的縮圖
public static Bitmap getVideoThumbnail(String videoPath) { MediaMetadataRetriever media =new MediaMetadataRetriever(); media.setDataSource(videoPat
獲取視訊的第一幀縮圖(本地視訊、網路視訊)
public static Bitmap createVideoThumbnail(String filePath, int kind) { Bitmap bitmap = null; MediaMetadataRetriever retriever = new MediaMetadataRetrie
Java獲取視訊第一幀做縮圖
Java使用FFmpeg獲取視訊的縮圖 ffmpegPath為FFmpeg.exe所在路徑 upFilePath為視訊的所在路徑(本地路徑) mediaPicPath為縮圖的儲存路徑(D:/test.jpg) private void handler(String ffm
windows下PHP獲取視訊第一幀圖片作為背景圖
我在網上找了很多這方面的資料,總結如下:一般用ffmpeg獲取視訊第一幀圖片作為背景圖; ffmpeg的下載連結 http://ffmpeg.org/download.html ; 下載好包,包裡面在
Android之使用MediaMetadataRetriever類獲取視訊第一幀
一.首先,來介紹一下MediaMetadataRetriever類,此類位於android.media包下,這裡,先附上可檢視此類的API地址:MediaMetadataRetriever類,大家可以自行檢視。 1.MediaMetadataRetriever類概述:Med
Android 獲取最近應用的縮圖
最近有項需求是獲取應用的縮略,用於在動畫時顯示。因此就對此塊知識簡要了解了一下。 在android中獲取視訊檔案的縮圖有三種方法: 1.從媒體庫中查詢新視訊增加後需要SDCard重新掃描才能給新增加
android 獲取video列表和縮圖 親測()
廢話不多說,有效果圖: 由於時間關係,只貼出獲得video 資料的程式碼,請自行去做適配gridview 的工作 (紅色字型是關鍵點) class MyRunnable implements Runnable { @Override
[Android] 本地視訊檔案的縮圖實現方案
【需求說明】 最近在實現公司專案時,遇到的需求之一就是顯示本地視訊檔案的縮圖。參考了一下網上提供的各種方案, 最終選取了ThumbnailUtils這個類來實現(這個是Android2.2系統以後提供的一個ThumbNail幫助類)鑑於專案 中sdk的最低版本已經是16,所
檔案上傳至oss後,獲取圖片縮率圖、獲取視訊截幀等後續操作
上一篇文章說了一下檔案上傳至oss:https://blog.csdn.net/new_programmer_h/article/details/84307005 這裡說一下上傳後的一些後續操作:常用的獲取圖片縮率圖、獲取視訊截幀生成封面圖。自我感覺阿里oss對於這些處理封裝的很好,只要根據:"%s|sys
ffmpeg處理視訊獲取第一幀截圖
<?php //使用PHP SDK,並且使用自定義配置檔案 require app_path().'/include/BaiduBce.phar'; require app_path().'/include/SampleConf.php'; require app_path().'
Android在Adapter中獲取網路視訊第一幀(優化)
獲取成功以後使用的是map儲存,key為adapter的position 避免銷燬再次載入 @SuppressLint("UseSparseArrays") private Map<Integer, Bitmap> bitmapMap = new Hash
android 獲取視訊縮圖終極解決方案(ffmpeg)
前些天有個師弟(在做一個仿LinkInEyes行車記錄儀的app)問我怎麼獲取視訊縮圖,起初以為很簡單,就找了個常用的解決方案(使用者獲取正常的視訊檔案的縮圖): 方案1: private void initView() { imgPic = (
Android 獲取視訊縮圖以及獲取視訊解析度
今天遇到一個問題,視訊播放不能居中。 在設定VideoView的Layout時候,把整個螢幕分配給VideoView。 不過Video在播放的時候,對於成寬比和螢幕不一樣的視訊,卻沒有把視訊播放到中央。 採用相同的策略,ImageView就可以把影象放到螢幕最中央,感覺是V
Android中如何獲取視訊檔案的截圖、縮圖
背景 公司最近要求給我負責的APP加上視訊錄製和釋出的功能,我簡單的完成了基本的錄製和視訊壓縮功能,後來發現釋出介面需要上傳視訊的截圖,網上搜索了一下資料,在這裡整理一下。 程式碼實現 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
在檔案管理器中顯示圖片的縮圖和視訊第一幀的縮圖
首先在vender/mediatek/properties/packags/apps/FileManager/src/com/mediatek/filemanager/IconManager.java中匯入兩個類import android.media.ThumbnailU
Android 獲取視訊(本地和網路)縮圖的解決方案
在Android 開發視訊的時候,通常都需要顯示視訊列表,而視訊列表通常都有一張視訊縮圖,那麼它是怎麼獲取的呢, 關於網路視訊的縮圖的實現方案主要有兩種: 1、後臺返回視訊時順便連縮圖的路徑都返回給你了,這樣前端壓力輕鬆。 2、後臺是返回視訊路徑,關於縮圖
android 獲取視訊某一時間的幀,並獲取bitmap
最近要做一個為視訊設定封面的功能,這裡展示一下簡單的demo。 demo效果 這裡直接將選取的視訊某一時間的bitmap顯示在視訊下方。上面是視訊,下面是所獲取那一幀的截圖。 具體程式碼 這裡的話主要是靠videoView來顯示視訊內容,seekBar來控制視訊的進