MainActivity如下:

package cn.testmediametadataretriever;

import java.io.File;

import java.io.FileOutputStream;

import android.media.MediaMetadataRetriever;

import android.os.Bundle;

import android.os.Environment;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.Bitmap.CompressFormat;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

/**

* Demo描述:

* 利用MediaMetadataRetriever按照时间截取视频

* 并转换为Bitmap存放于SDCard

*

* 特别注意:

* getFrameAtTime()方法第一个参数的单位是微秒 (us)

*

*/

public class MainActivity extends Activity {

private Button mButton;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

init();

}

private void init(){

mButton=(Button) findViewById(R.id.button);

mButton.setOnClickListener(new ClickListenerImpl());

}

private class ClickListenerImpl implements OnClickListener{

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.button:

getBitmapsFromVideo();

default:

break;

}

}

}

public void getBitmapsFromVideo() {

String dataPath = Environment.getExternalStorageDirectory()+ "/testVideo.mp4";

MediaMetadataRetriever retriever = new MediaMetadataRetriever();

retriever.setDataSource(dataPath);

// 取得视频的长度(单位为毫秒)

String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);

// 取得视频的长度(单位为秒)

int seconds = Integer.valueOf(time) / 1000;

// 得到每一秒时刻的bitmap比如第一秒,第二秒

for (int i = 1; i <= seconds; i++) {

Bitmap bitmap = retriever.getFrameAtTime(i*1000*1000,MediaMetadataRetriever.OPTION_CLOSEST_SYNC);

String path = Environment.getExternalStorageDirectory()+ File.separator + i + ".jpg";

FileOutputStream fos = null;

try {

fos = new FileOutputStream(path);

bitmap.compress(CompressFormat.JPEG, 80, fos);

fos.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

————————————————————————————————————————————————————————————

main.xml如下:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

<Button 
android:id="@+id/button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="获取视频的帧图片" 
android:layout_centerInParent="true" 
/> 
</RelativeLayout>

Android截取视频帧并转化为Bitmap示例相关推荐

  1. python快速检测视频跳过帧_使用Python实现跳帧截取视频帧

    本文实例为大家分享了Python跳帧截取视频帧的具体代码,供大家参考,具体内容如下 可以自由设定时长来截取视频,经实测效果理想.期间遇到的一个麻烦是我的视频文件在D:盘,在原视频D盘目录上不能保存截取 ...

  2. 视频抽帧并存图 python_使用Python实现跳帧截取视频帧

    本文实例为大家分享了Python跳帧截取视频帧的具体代码,供大家参考,具体内容如下 可以自由设定时长来截取视频,经实测效果理想.期间遇到的一个麻烦是我的视频文件在D:盘,在原视频D盘目录上不能保存截取 ...

  3. 制作视频数据集(一):截取视频帧

    ** 制作视频数据集(一):截取视频帧 ** 1.smart player截取视频帧 直接下载smart player截取即可,我是觉得这个软件截取更简单一些,但我下载之后截取页面显示不了文件,搞不了 ...

  4. python OpenCV 按(帧数/时间)间隔截取视频帧

    帧率(FPS):每秒钟播放的帧数 1.如果你想直接通过帧数间隔截取视频帧,那直接使用可以使用下面的代码: import cv2cap = cv2.VideoCapture("./query_ ...

  5. Java图片,视频上传,截取视频帧以及文件下载和视频IO获取

    public class FileUtil { @Value("${img.url}") public String imgUrl; @Value("${video.ur ...

  6. python按时间截取视频,python使用opencv按一定间隔截取视频帧

    python如何用opencv把一个视频按每10秒一小段切下来一个人的记忆就是一座城市,时间腐蚀着一切建筑,把高楼和道路一切沙化.如果你不往前走,就会被沙子掩埋.沙城就是一个人的记忆. 视频共计30秒 ...

  7. java截取视频生成图片_Java截取视频帧,生成图片

    1.pom依赖 org.bytedeco.javacpp-presets opencv-platform 3.4.1-1.4.1 org.bytedeco javacpp 1.4.1 org.byte ...

  8. Android 将图片网址url转化为bitmap,drawable转bitmap,file转bitmap,bitmap转file

    file转bitmap File param = new File(); Bitmap bitmap= BitmapFactory.decodeFile(param.getPath()); drawa ...

  9. android截取视频为gif图片大小,视频编辑器实验室:修剪,裁剪,转换为GIF

    视频编辑器实验室:修剪,裁剪,转换为GIF 介绍 视频编辑器实验室:修剪,裁剪,转换为GIF 通过我们的高清质量的视频编辑器,每天精简您的视频.用户可以裁剪,修剪,增加速度并转换为不同的视频格式,并从 ...

最新文章

  1. python 对话框的创建及调用_Python 使用 PyQt 自定义对话框
  2. notepad++ 设置编辑区域背景色为黑色
  3. 20211205 Nussbaum函数实例
  4. linux 中 id指令,Linux id 命令
  5. 项目回顾-PopupWindow
  6. 服务器消除报警信息,巧妙设置让故障服务器自动报警的小技巧
  7. mysql检索整数_MyBatis从MySql DB中检索整数为Enum
  8. 3个开源TTS(二)eSpeak的简要分析使用
  9. 【6.24-AppCan移动开发大会倒计时】科大讯飞来了!
  10. SQL常用语句(普通查询+条件查询)
  11. 【详细】MySQL之游标
  12. MAYA安装包+安装教程
  13. Ubuntu16.04下网易云音乐点击图标打不开——已解决
  14. SPR EAD NET 6
  15. antd 表单通过form.getFieldsValue获取不全tabs组件下表单数据的问题
  16. 机器学习读书笔记(四)朴素贝叶斯基础篇之网站账号分类
  17. 大数据就业前景如何?大数据时代,马云这样说...
  18. 2022年云南最新建筑八大员(市政)模拟考试题库及答案
  19. 数据安全评估体系建设
  20. 实现抖音霓虹灯效果---OpenCV-Python开发指南(55)

热门文章

  1. 如何理性地看待减半行情
  2. 微信小程序Url传参
  3. 两种叙事:货币加密派 vs. 技术加密派
  4. 词嵌入之 Word2Vec
  5. Python每日一记69异步加载网站与图片爬虫
  6. 适用于旧计算机的10款最佳轻量级Linux发行版
  7. 剖析劳动维权难在哪儿
  8. 人工智能和机器学习之间的差异及其重要性,一定要分清楚
  9. 记录学习Android基础的心得05:常用控件(基础篇)
  10. Linux USB U盘热插拔挂载和卸载