標籤:
Android開發之視頻錄製 (2011-10-18 17:47:46)
轉載▼
| 標籤: android 視頻錄製 surfaceview 雜談 |
分類: 3GAndroid學習筆記 |
要使用視頻錄製功能,要用到MediaRecorder這個類,以及SurfaceView組建public class MainActivity extends Activity {public static final String TAG = "MainActivity"; @Overrideprotected void onDestroy() { mediaRecorder.release();super.onDestroy();} private SurfaceView surfaceView; private Button btn_start; private Button btn_stop; private MediaRecorder mediaRecorder; private boolean record; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mediaRecorder = new MediaRecorder(); surfaceView = (SurfaceView) findViewById(R.id.surfaceview); this.surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); this.surfaceView.getHolder().setFixedSize(320, 240);//設定解析度 btn_start = (Button) findViewById(R.id.btn_start); btn_stop=(Button) findViewById(R.id.btn_stop); ClickListener clickListener = new ClickListener(); btn_start.setOnClickListener(clickListener); btn_stop.setOnClickListener(clickListener); } private final class ClickListener implements View.OnClickListener{public void onClick(View v) {if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){Toast.makeText(MainActivity.this, "SD卡不存在或防寫保護!", 1).show();return ;} try {switch(v.getId()){case R.id.btn_start:mediaRecorder.reset();mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //從照相機採集視頻mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setVideoSize(320, 240);mediaRecorder.setVideoFrameRate(3); //每秒3幀mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //設定視頻編碼方式mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".3gp");mediaRecorder.setOutputFile(videoFile.getAbsolutePath());mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());mediaRecorder.prepare();//預期準備mediaRecorder.start();//開始燒錄record = true;break;case R.id.btn_stop:if(record){mediaRecorder.stop();record = false;}break;}} catch (Exception e) {Log.e(TAG, e.toString());}} } }
Android開發之視頻錄製1