Android录制视频

这几天需要搞Android,从视频录制开始,网上例子大多不完整,问题也比较古怪,简直焦头烂额啊,下面的示例参考过别人的代码,还是拿出来给需要的朋友分享下..

Activity类:VideoActivity
package com.media.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(800, 480);//视频尺寸            recorder.setVideoFrameRate(15);//视频帧频率            recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//视频编码            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码            recorder.setMaxDuration(10000);//最大期限            recorder.setOutputFile(myRecAudioFile.getAbsolutePath());//保存路径            recorder.prepare();            recorder.start();        } catch (IOException e) {            e.printStackTrace();        }    }}


界面:video.xml
<?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
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.media.Media"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/rabbit" android:label="@string/app_name">        <activity android:name=".VideoActivity"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>        <uses-sdk android:minSdkVersion="7" /><uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.RECORD_AUDIO"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></manifest> 


希望对需要的人有帮助,不罗嗦了,最后还是把整个工程拿出来...

更多相关文章

  1. 【Android(安卓)Training视频系列】第3讲 Supporting Different
  2. 【Android】数据存储之Files
  3. Android视音频录制实现步骤(Android学习随笔八)
  4. Android自动化测试之MonkeyRunner录制和回放脚本(十一)
  5. android google map key申请
  6. android 开发实现静默安装
  7. Android(安卓)ViewPager的简单使用
  8. Android强制联网
  9. android 网络视频代码

随机推荐

  1. html5 的 canvas 想写个小项目 画板
  2. 翻译:HTML5与HTML4的区别
  3. 关于html5 audio 标签在ios系统上不能正
  4. HTML 5自动对焦会混乱CSS加载
  5. JSF和HTML表单的Unicode问题?
  6. SpringBoot + Thymeleaf + JPA创建一个we
  7. HTML 5是否需要``
  8. commons-fileupload文件上传、下载
  9. 在IE(所有版本)中打破JQuery自动完成组合框
  10. 【web】a标签点击时跳出确认框