图片、录音和视频采集

本项目实现的是图片、录音和视频的采集,把具体的实现都在一个项目里面实现,有需要的可以那来看下。仅仅是功能的实现, 可以自己写一些比较绚的UI来组扩充。代码里面注释很详细
代码地址:http://www.eoeandroid.com/thread-252327-1-2.html
 

 
 
TestBasicVideo.java 外部引用原始文档
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package com.video;

import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.SimpleAdapter.ViewBinder;

/**
 * class name:TestBasicVideo<BR>
 * class description:一个简单的录制视频例子<BR>
 * PS:实现基本的录制保存文件 <BR>
 * 
 * @version 1.00 2011/09/21
 * @author CODYY)peijiangping
 */
public class TestBasicVideo extends Activity implements SurfaceHolder.Callback {
	private Button start;// 开始录制按钮
	private Button stop;// 停止录制按钮
	private MediaRecorder mediarecorder;// 录制视频的类
	private SurfaceView surfaceview;// 显示视频的控件
	// 用来显示视频的一个接口,我靠不用还不行,也就是说用mediarecorder录制视频还得给个界面看
	// 想偷偷录视频的同学可以考虑别的办法。。嗯需要实现这个接口的Callback接口
	private SurfaceHolder surfaceHolder;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏
		// 设置横屏显示
		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
		// 选择支持半透明模式,在有surfaceview的activity中使用。
		getWindow().setFormat(PixelFormat.TRANSLUCENT);
		setContentView(R.layout.video);
		init();
	}

	private void init() {
		start = (Button) this.findViewById(R.id.start);
		stop = (Button) this.findViewById(R.id.stop);
		start.setOnClickListener(new TestVideoListener());
		stop.setOnClickListener(new TestVideoListener());
		surfaceview = (SurfaceView) this.findViewById(R.id.surfaceview);
		SurfaceHolder holder = surfaceview.getHolder();// 取得holder
		holder.addCallback(this); // holder加入回调接口
		// setType必须设置,要不出错.
		holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	}

	class TestVideoListener implements View.OnClickListener {

		public void onClick(View v) {
			if (v == start) {
				mediarecorder = new MediaRecorder();// 创建mediarecorder对象
				// 设置录制视频源为Camera(相机)
				mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
				// 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4
				mediarecorder
						.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
				// 设置录制的视频编码h263 h264
				mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
				// 设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错
				mediarecorder.setVideoSize(176, 144);
				// 设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错
				mediarecorder.setVideoFrameRate(20);
				mediarecorder.setPreviewDisplay(surfaceHolder.getSurface());
				// 设置视频文件输出的路径
				File file = new File("/sdcard/" + "SP" +
				new SimpleDateFormat("yyyyMMdd_hhmmss").format(new Date(System.currentTimeMillis()))+".3gp");
				mediarecorder.setOutputFile(file.getAbsolutePath());
				try {
					// 准备录制
					mediarecorder.prepare();
					// 开始录制
					mediarecorder.start();
				} catch (IllegalStateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (v == stop) {
				if (mediarecorder != null) {
					// 停止录制
					mediarecorder.stop();
					// 释放资源
					mediarecorder.release();
					mediarecorder = null;
				}
			}

		}

	}

	public void surfaceChanged(SurfaceHolder holder, int format, int width,
			int height) {
		// 将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder
		surfaceHolder = holder;
	}

	public void surfaceCreated(SurfaceHolder holder) {
		// 将holder,这个holder为开始在oncreat里面取得的holder,将它赋给surfaceHolder
		surfaceHolder = holder;
	}

	public void surfaceDestroyed(SurfaceHolder holder) {
		// surfaceDestroyed的时候同时对象设置为null
		surfaceview = null;
		surfaceHolder = null;
		mediarecorder = null;
	}
}

数据集介绍:垃圾分类检测数据集 一、基础信息 数据集名称:垃圾分类检测数据集 图片数量: 训练集:2,817张图片 验证集:621张图片 测试集:317张图片 总计:3,755张图片 分类类别: - 金属:常见的金属垃圾材料。 - 纸板:纸板类垃圾,如包装盒等。 - 塑料:塑料类垃圾,如瓶子、容器等。 标注格式: YOLO格式,包含边界框类别标签,适用于目标检测任务。 数据格式:图片来源于实际场景,格式为常见图像格式(如JPEG/PNG)。 二、适用场景 智能垃圾回收系统开发: 数据集支持目标检测任务,帮助构建能够自动识别分类垃圾材料的AI模型,用于自动化废物分类回收系统。 环境监测与废物管理: 集成至监控系统或机器人中,实时检测垃圾并分类,提升废物处理效率环保水平。 学术研究与教育: 支持计算机视觉与环保领域的交叉研究,用于教学、实验论文发表。 三、数据集优势 类别覆盖全面: 包含三种常见垃圾材料类别,覆盖日常生活中主要的可回收物类型,具有实际应用价值。 标注精准可靠: 采用YOLO标注格式,边界框定位精确,类别标签准确,便于模型直接训练使用。 数据量适中合理: 训练集、验证集测试集分布均衡,提供足够样本用于模型学习评估。 任务适配性强: 标注兼容主流深度学习框架(如YOLO等),可直接用于目标检测任务,支持垃圾检测相关应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值