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>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, android单位
, 视频
, private
, bitmap
, import
, android 视频
, 单位
, 视频android
, 视频采集android
将view转换为bitmap
android bitmap截取、bitmap截取、c bitmap 截取、bitmap转化为byte、bitmap转化为file,以便于您获取更多的相关知识。

时间: 2025-01-20 15:33:50

Android截取视频帧并转化为Bitmap的相关文章

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

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;

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;

android摄像头-Android摄像头视频帧数据保存

问题描述 Android摄像头视频帧数据保存 用Android手机自带的camera,采集视频信息,得到每帧中心点的像素值,写入到txt文档中,现在出现一个奇怪的问题:在onCreate()方法中,先创建好空的txt文档,用于后面的数据写入,视频处理后的帧率也快些,但是得到的数据与实际的有很大的出入:而在onPreviewFrame()方法中,读取每帧的时候重复创建空的txt文档,帧率是稍微降低些,但是数据更合理,不知道其中什么原因导致的.,各位大神,拜托了!(这个Android底层有关系么?)

php截取视频指定帧为图片_php技巧

截取视频指定帧为图片,php ffmpeg扩展已经完美实现: $movie = new ffmpeg_movie($video_filePath); $ff_frame = $movie->getFrame(1); $gd_image = $ff_frame->toGDImage(); $img="./test.jpg"; imagejpeg($gd_image, $img); imagedestroy($gd_image); 然而问题来了,智能手机拍摄的视频,由于拍摄方向

ffmpeg截取视频指定帧为图片,获取rotation信息并旋转

截取视频指定帧为图片,php ffmpeg扩展已经完美实现: $movie = new ffmpeg_movie($video_filePath); $ff_frame = $movie->getFrame(1); $gd_image = $ff_frame->toGDImage(); $img="./test.jpg"; imagejpeg($gd_image, $img); imagedestroy($gd_image); 然而问题来了,智能手机拍摄的视频,由于拍摄方向

关于java问题-正则表达式怎么截取视频路径

问题描述 正则表达式怎么截取视频路径 如果无法观看视频,请尝试安装最新的 windows media player.暴风影音或迅雷看看 播放器. 我只想要http://123123123.wmv这一部分,请问怎么截取 相关文章 java-求教关于程序开发的一个问题? javascript-js问题关于正则表达式截取字符串 关于javascript正则表达式截取字符串的问题 javascript-通过js我已经实现了截取一定区域的图片(图片一共7张),如何把这些截取的图片保存到本地指定路径下 代码

photoshop截取视频制作成动态海报制作教程

给各位photoshop软件的使用者们来详细的解析分享一下截取视频制作成动态海报的制作教程. 教程分享:     第一步,制作工具,迅雷影音和PS.(能拿到GIF的软件有很多这里就不过多介绍了) 一张动态海报主要由GIF和文案(动.静态文案)组成.迅雷影音生成GIF,PS加文案.特效. 适当的修改些细节. 第二步(得到GIF),选择自己喜欢的视频用迅雷影音打开 右击画面会出现对话框先隐藏字幕然 后选择GIF截取出现下面的对话框.   这些属性都很简单,稍微尝试下就能拿到自己满意的GIF. 第三步

Android异步加载全解析之Bitmap

Android异步加载全解析之Bitmap 在这篇文章中,我们分析了Android在对大图处理时的一些策略--Android异步加载全解析之大图处理  戳我戳我 那么在这篇中,我们来对图像--Bitmap进行一个更加细致的分析,掌握Bitmap的点点滴滴. 引入 Bitmap这玩意儿号称Android App头号杀手,特别是3.0之前的版本,简直就是皇帝般的存在,碰不得.摔不得.虽然后面的版本Android对Bitmap的管理也进行了一系列的优化,但是它依然是非常难处理的一个东西.在Androi

Android 截取手机屏幕两种实现方法

Android 截取手机屏幕两种实现方法 最近在开发的过程中,遇到了一个需要截取屏幕保存为图片的需求,具体为截取webview的视图保存图片. 方法1:首先想到的思路是利用SDK提供的View.getDrawingCache()方法: public void printScreen(View view) { String imgPath = "/sdcard/test.png"; view.setDrawingCacheEnabled(true); view.buildDrawingC