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. Web服务器与浏览器的实现原理

    Web服务器与浏览器的实现原理 第一部分 为什么会出现web程序? 单机程序不能共享功能的特性导致了客户机服务器模式的诞生  有一台服务器有特定功能的程序 其他计算机通过客户端程序与服务器交流间接使用 ...

  2. 1.CentOS6.5下的基础DNS配置

    常规DNS的安全和配置1.安装DNSyum -y install bind bind-utils安装后生成的文件,我们主要配置下面几个/etc/named.conf/var/named/xx这个xx是 ...

  3. mysql启动不起来

    在刚编译安装完成mysql,启动mysql时报了下面错误: /etc/init.d/mysqld start Starting MySQL... ERROR! The server quit with ...

  4. Mac 10.12通过Launchd创建自定义服务(基于MySQL 5.7.15的开机自启动)

    在上一篇文章http://www.cnblogs.com/EasonJim/p/6275863.html中安装MySQL时采用的时DMG包的安装步骤页面进行安装的,如果这样安装的MySQL是会开机自启 ...

  5. (转)OpenStack构架知识梳理

    http://www.cnblogs.com/kevingrace/p/8459034.html-------------------Openstack架构概念图-简单汇总 原文:http://www ...

  6. Python对象引用和del删除引用

    1.首先介绍下python的对象引用 1)Python中不存在传值调用,一切传递的都是对象引用,也可以认为是传址调用.即Python不允许程序员选择采用传值或传引用.Python参数传递采用的是“传对 ...

  7. 17.Generator函数的异步应用

    异步编程对 JavaScript 语言太重要.Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可. 1.传统方法 ES6 诞生以前,异步编程的方法,大概有下面 ...

  8. Spring声明式事务为何不回滚

  9. WPF中使用Grid来实现图层的效果

    <Style x:Key="ScanButtonStyle" TargetType="{x:Type Button}"> <!--<Se ...

  10. C#(winform)设置窗口置顶

    只要设置窗体的TopMost属性即可: registerForm.TopMost = true;