Activity代码:

package eoe.demo.Media;

import java.io.File;
import java.io.IOException; import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class VideoActivity extends Activity { private File myRecAudioFile;
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
private Button buttonStart;
private Button buttonStop;
private File dir;
private MediaRecorder recorder; @Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.video);
  mSurfaceView = (SurfaceView) findViewById(R.id.videoView);
  mSurfaceHolder = mSurfaceView.getHolder();
  mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
  buttonStart=(Button)findViewById(R.id.start);
  buttonStop=(Button)findViewById(R.id.stop);
  File defaultDir = Environment.getExternalStorageDirectory();
  String path = defaultDir.getAbsolutePath()+File.separator+"V"+File.separator;
//创建文件夹存放视频
  dir = new File(path);
  if(!dir.exists()){
    dir.mkdir();
  }
  recorder = new MediaRecorder();   buttonStart.setOnClickListener(new OnClickListener() {
@Override
  public void onClick(View v) {
    recorder();
  }
}); buttonStop.setOnClickListener(new OnClickListener() {
@Override
   public void onClick(View v) {
    recorder.stop();
    recorder.reset();
    recorder.release();
    recorder=null;
   }
  });
} public void recorder() {
try {
  myRecAudioFile = File.createTempFile("video", ".3gp",dir);//创建临时文件
  recorder.setPreviewDisplay(mSurfaceHolder.getSurface());//预览
  recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//视频源
  recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //录音源为麦克风
  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//输出格式为3gp
  recorder.setVideoSize(, );//视频尺寸
  recorder.setVideoFrameRate();//视频帧频率
  recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//视频编码
  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码
  recorder.setMaxDuration();//最大期限
  recorder.setOutputFile(myRecAudioFile.getAbsolutePath());//保存路径
  recorder.prepare();
  recorder.start();
} catch (IOException e) {
  e.printStackTrace();
    }
   }
}

布局代码:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
<SurfaceView android:id="@+id/videoView"
  android:visibility="visible"
  android:layout_width="320px"
  android:layout_height="240px">
</SurfaceView> <RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
<Button
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="录制"
   android:id="@+id/start"/>
<Button
   android:layout_width="wrap_content"
  android:layout_height="wrap_content"
   android:layout_toRightOf="@id/start"
   android:text="停止"
  android:id="@+id/stop"/>
</RelativeLayout>
</LinearLayout>

AndroidManifest.xml:

   <!-- 授予该程序录制声音的权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- 授予该程序使用摄像头的权限 -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 授予使用外部存储器的权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Android 录制视频的更多相关文章

  1. 转:android 录制视频的Demo

    转:http://blog.csdn.net/peijiangping1989/article/details/7049991 在这里给出自己的一个测试DEMO,里面注释很详细.简单的视频录制功能. ...

  2. Android录制视频报错setVideoSize called in a invalid state 1

    录制视频时想获取手机支持的录制视频的分辨率,使用代码如下: List<Camera.Size> videoSize = camera.getParameters().getSupporte ...

  3. android 录制视频方式

    http://www.cnblogs.com/skyseraph/archive/2012/03/31/2427593.html http://bbs.csdn.net/topics/39088448 ...

  4. Android音视频之MediaRecorder音视频录制

    前言: 公司产品有很多地方都需要上传音频视频,今天抽空总结一下音频视频的录制.学习的主角是MediaRecorder类. MediaRecorder类介绍: MediaRecorder类是Androi ...

  5. Android手机录制视频 实时传输(转载)

    最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...

  6. 【Android】 Android实现录音、播音、录制视频功能

    智能手机操作系统IOS与Android平分天下(PS:WP与其他的直接无视了),而Android的免费招来了一大堆厂商分分向Android示好,故Android可能会有“较好”的前景. Android ...

  7. Android使用的开发MediaRecorder录制视频

    MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...

  8. Android(java)学习笔记144:Android音视频录制类MediaRecorder用法举例

    Android语音录制可以通过MediaRecorder和AudioRecorder.MediaRecorder本来是多媒体录制控件,可以同时录制视频和语音,当不指定视频源时就只录制语音(默认录制语言 ...

  9. Android开发之打开闪光灯录制视频

    Android的SDK在线API上对录制视频的方法.步骤都写得非常清楚,但是如果没有一点思路,写起来也比较式费事.录制视频的全过程要打开闪光灯(可能是因为项目需要,或者特殊原因),则必须按照一定的顺序 ...

随机推荐

  1. (转)MySQL 主从复制搭建,基于日志(binlog

    原文:http://blog.jobbole.com/110934/ 什么是MySQL主从复制 简单来说,就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数 ...

  2. [问题解决]Fresco设置圆角效果不生效问题探究

    [问题解决]Fresco设置圆角效果不生效问题探究 /** * Created by diql on 2017/2/21 11:07:04. */ 问题 在View中设置: fresco:rounde ...

  3. Android中Handler的使用方法及实例(基础回顾)

    Handler使用例1 这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会 ...

  4. linux mint 19安装最新社区版docker

    sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-p ...

  5. PHP之mb_stripos使用

    mb_stripos (PHP 5 >= 5.2.0, PHP 7) mb_stripos - Finds position of first occurrence of a string wi ...

  6. -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment avariable and mvn script match.

    eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is ...

  7. XRP(瑞波币)账户管理系统

    目录 账户管理 分配常规密钥对 修改或移除常规密钥对 设置多重签名 发送多签名交易 账户管理 分配常规密钥对 XRP Ledger允许帐户授权二级密钥对(称为常规密钥对)来对未来的交易进行签名, 如果 ...

  8. ORACLE: private ,dao中util执行规范,nextval计数把通过nextval插入但已删除的列也统计在内向后计数

    private DAO中的util.rs.sql都应该为private. 其中每个具体方法执行增删改查操作前打开数据库连接,操作完成后关闭数据库连接.操作要规范,不然易出错. nextval seq_ ...

  9. js 获取当前标签 jquery1.11.4

    .<input type="checkbox" onchange='allstu(this);return false;' /> 2.<input type=&q ...

  10. 在ViewDidLoad中往导航栈推ViewController报错

     Unbalanced calls to begin/end appearance transitions for <YZPMainViewController: 0x7fa04b4970f0& ...