Android视频录制
public class MainActivity extends Activity {
private MediaRecorder videoRecorder=null;
private Button recorder=null;
private Button stop=null;
private SurfaceView surface=null;
@SuppressWarnings("deprecation")
protected 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);//设置屏幕横向全屏显示
setContentView(R.layout.main);
videoRecorder=new MediaRecorder();
surface=(SurfaceView) this.findViewById(R.id.surface);
recorder=(Button) this.findViewById(R.id.recorder);
stop=(Button) this.findViewById(R.id.stop);
surface.getHolder().setKeepScreenOn(true);
surface.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surface.getHolder().setFixedSize(320, 240);
}
public void RecordVideo(View v)
{
switch (v.getId()) {
case R.id.recorder:
stop.setEnabled(true);
recorder.setEnabled(false);
try {
videoRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置音频的来源
videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //设置视频的来源
videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置视频的输出格式3gp
videoRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设音频的解码方式
videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设视频的解码方式
videoRecorder.setVideoFrameRate(5);//设置每秒捕获画面的个数
videoRecorder.setVideoSize(480, 320);//设置视频的大小
File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath(),System.currentTimeMillis()+".3gp");
videoRecorder.setOutputFile(f.getAbsolutePath());//设置保存的路径
videoRecorder.setPreviewDisplay(surface.getHolder().getSurface());//吧捕获的画面显示到surfaceView控件中
videoRecorder.prepare();
videoRecorder.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.stop:
stop.setEnabled(false);
recorder.setEnabled(true);
if(videoRecorder!=null)
{
videoRecorder.stop();
videoRecorder.release();
videoRecorder=null;
}
break;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
this.findViewById(R.id.btnLayout).setVisibility(View.VISIBLE);
}
return super.onTouchEvent(event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
注意:activity设置好之后必须在Mainfest.xml文件中配置权限
80 <uses-permission android:name="android.permission.CAMERA"/>
81 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
82 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
83 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
Android视频录制的更多相关文章
- android视频录制、另一部手机实时观看方案
最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...
- Android视频录制从不入门到入门系列教程(一)————简介
一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...
- Android视频录制从不入门到入门系列教程(三)————视频方向
运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子 ...
- 利用FFmpeg玩转Android视频录制与压缩(二)<转>
转载出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女 ...
- android 视频录制 混淆打包 之native层 异常的解决
原文地址:http://www.cnblogs.com/linguanh/ (滑至文章末,直接看解决方法) 问题起因: 前5天,因为项目里面有个类似 仿微信 视频录制的功能, 先是上网找了个 开 ...
- Android视频录制从不入门到入门系列教程(四)————Camera Parameter
Camera提供了一个叫做setParameters的方法帮助开发者设置相机的相关参数. 通过Camera的getParameters方法可以获取到当前为相机设置的相关参数. 下面简单介绍下,视频录制 ...
- Android视频录制命令screenrecord
不管是教学,还是为了演示,如果能将Android手机(或平板)的屏幕录制成视频文件,那是一件非常酷的事(iOS8已经提供了这一功能,能通过OS X直接在Mac上录制iPad.iPhone的屏幕,win ...
- Android拓展系列(9)--Android视频录制screenrecord命令
在Android4.4 Kitkat上集成了一个比较好用的视频录制功能.参考:http://forums.androidcentral.com/android-4-4-kitkat/329674-ho ...
- 我的Android进阶之旅------>Android视频录制小例子
============================首先看看官网上关于视频捕捉的介绍================================ Capturing videos Video ...
随机推荐
- URL具体解释
浏览器因特网资源:URL是浏览器寻找信息时所需的资源位置.通过URL.应用程序才干找到并使用共享因特网上大量的数据资源. 大部分URL都遵循一种标准的格式: ①HTTP协议(http://或者http ...
- apache利用.htaccess实现部分页面301
由于网站改版,对访问url进行了改进 原:http://www.tutufu.com/w_weifenlei/DeHaiZi_38251/ 现:http://www.tutufu.com/unclas ...
- UITableViewStyleGrouped顶部留白问题
我这样创建, ? 1 2 self.tableView = [[UITableView alloc] initWithFrame: CGRectMake(0 ...
- 去除jquery.min.map 404错误信息
调试中出现了 jquery.min.map 404 (Not Found) 的js错误信息: 那么jquery.min.map到底是个什么呢? JQuery 官方解释 从 jQuery 1.9.0 版 ...
- Android(java)学习笔记251:ContentProvider使用之添加数据到联系人(掌握)
1.添加联系人逻辑思路 (1)首先在raw_contacts创建一个新的id (2)在data表里面添加这个id对应的数据 2.下面通过一个案例,说明一下如何添加一条数据到联系人: (1)首先我们关注 ...
- linux telnet服务安装与配置
关闭防火墙:service iptabls stop chkconfig iptabls off 1.安装telnet服务 [root@rheltest1 ~]# rpm -qa ...
- 【网络流#1】hdu 3549 - 最大流模板题
因为坑了无数次队友 要开始学习网络流了,先从基础的开始,嗯~ 这道题是最大流的模板题,用来测试模板好啦~ Edmonds_Karp模板 with 前向星 时间复杂度o(V*E^2) #include& ...
- HDU -2524 矩形A + B
找规律题,这种题目比较巧妙,要仔细观察找出规律 1. 假设只有一行,一共有n列,那么由一个小矩形构成的矩形个数为n, 由两个小矩形构成的矩形个数为 n - 1个 .... 由 n 个小矩形构成的矩形个 ...
- 小学生之JAVA中的分层
三层架构 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL). 区分层次的目的即为了“高内聚,低 ...
- MSSQL 简单练习回顾
这段时间,报了浦软培训的.NET,现在整理回顾下,算是个小小总结吧 为了便于操作,我没有在多个数据库间切换数据库实例,以一个总的数据库实例 test_demo为源进行的相关操作,代码的注释根据我的理解 ...