Android截取视频帧并转化为Bitmap示例

ajie198226

ajie198226

2016-02-19 09:05

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Android截取视频帧并转化为Bitmap示例,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
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
展开更多 50%)
分享

猜你喜欢

Android截取视频帧并转化为Bitmap示例

编程语言 网络编程
Android截取视频帧并转化为Bitmap示例

Android Bitmap详细介绍

编程语言 网络编程
Android Bitmap详细介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

汉字转化为拼音

ASP
汉字转化为拼音

PPT如何转化为WORD PPT转化为WORD的教程

PPT 软件教程
PPT如何转化为WORD PPT转化为WORD的教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

怎样将Excel转化为PDF

excel
怎样将Excel转化为PDF

汉字转化为拼音(php版)

Web开发
汉字转化为拼音(php版)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Java+MySql图片数据保存与读取的具体实例

Java+MySql图片数据保存与读取的具体实例

让PowerPoint文档中的蜜蜂跳起8字舞

让PowerPoint文档中的蜜蜂跳起8字舞
下拉加载更多内容 ↓