//布局中的实现代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.recode_video.MainActivity" >
<!--显示视频预览的SurfaceView-->
<SurfaceView
android:id="@+id/sfv"
android:layout_width="300dp"
android:layout_height="300dp"
/>
<Button
android:id="@+id/start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="开始录制" />
<Button
android:id="@+id/stop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/start"
android:layout_alignParentLeft="true"
android:text="停止录制" />
</RelativeLayout>
//主类中的实现代码
import java.io.File;
import java.io.IOException;
import android.support.v7.app.ActionBarActivity;
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;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnClickListener{
//定义控件
private Button start,stop;
private SurfaceView sfv;
private File videoFile;//保存录制视频的文件
private MediaRecorder mRecorder;
private boolean isRecording=false;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById();
//设置 停止的按钮不可用
stop.setEnabled(false);
//为停止按钮和开始录制按妞绑定监听事件
start.setOnClickListener(this);
stop.setOnClickListener(this);
//设置SurFaceview缓冲区不需要自己维护
sfv.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//设置分辨率
sfv.getHolder().setFixedSize(320, 280);
//设置该组件让屏幕不会自动关闭
sfv.getHolder().setKeepScreenOn(true);
}
private void findViewById() {
start=(Button) findViewById(R.id.start);
stop=(Button) findViewById(R.id.stop);
sfv=(SurfaceView) findViewById(R.id.sfv);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(MainActivity.this, "SD卡不存在,请插入SD卡", 0).show();
return;
}
try {
//创建保存录制视频的视频文件
videoFile=new File(Environment.getExternalStorageDirectory().getCanonicalFile()+"/myvideo.mp4");
//创建MediaRecorder对象
mRecorder=new MediaRecorder();
mRecorder.reset();
//设置从麦克风采集声音
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置从摄像头采集图像
mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
//设置视频文件的输出格式
//必须在设置声音编码格式 视频编码格式之前设置
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//设置声音的编码格式
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//设置图像的编码格式
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mRecorder.setVideoSize(320, 280);
//每秒4帧
mRecorder.setVideoFrameRate(5);
mRecorder.setOutputFile(videoFile.getAbsolutePath());
//指定使用SurFaceView预览视频
mRecorder.setPreviewDisplay(sfv.getHolder().getSurface());
//准备录制
mRecorder.prepare();
//开始录制
mRecorder.start();
//让录制按钮不可用
start.setEnabled(false);
//让停止按钮可用
stop.setEnabled(true);
//记录录制的状态
isRecording=true;//正在播放的状态
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.stop:
if (isRecording) {
mRecorder.stop();
mRecorder.release();
mRecorder=null;
start.setEnabled(true);
stop.setEnabled(false);
}
break;
default:
break;
}
}
}
//这个多代码就够了 但是我们不要忘记了 需要添加权限呢
下面就是需要添加的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
这样就简单的实现了视频的录制和播放,需要的你赶快行动起来吧!希望可以帮到你。