android recording a video, initializing the camera

后端 未结 1 1606
南旧
南旧 2020-12-21 21:30
public class FulfillVideoTaskActivity extends Activity implements SurfaceHolder.Callback, OnInfoListener, OnErrorListener{

private Button initBtn = null;
private Bu         


        
相关标签:
1条回答
  • 2020-12-21 21:59

    Try this code

    first

       setRecorder() ;
       SurfaceView  videoShootSurfaceView = (SurfaceView) findViewById(R.id.shootVideosurfaceView_VSD);
    
    
        SurfaceHolder videoSurfaceHolder = videoShootSurfaceView.getHolder();
        videoSurfaceHolder.addCallback(this);
        videoSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    

    set the recorder type

        public void setRecorder() {
        recorder = new MediaRecorder();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
        // recorder.setVideoSize(640, 480);
        recorder.setVideoSize(320, 240);
        // recorder.setVideoSize(480, 320);
        // recorder.setVideoSize(176, 144);
        recorder.setVideoFrameRate(15);
        // recorder.setMaxDuration(3600000);
        recorder.setMaxDuration(300000);
        recorder.setOutputFile("/sdcard/videocapture_example.mp4");
    }
    

    override this methhod.

        @Override
    public void surfaceCreated(SurfaceHolder holder) {
        camera = Camera.open();
        recorder.setPreviewDisplay(holder.getSurface());
        if (recorder != null) {
            try {
                recorder.prepare();
            } catch (IllegalStateException e) {
                Log.e("IllegalStateException", e.toString());
            } catch (IOException e) {
                Log.e("IOException", e.toString());
            }
        }
    }
    

    To start the recording

        public void startRecording() {
        setRecorder();
        recorder.setPreviewDisplay(recoderTempHolder.getSurface());
        if (recorder != null) {
            try {
                recorder.prepare();
                recorder.start();
            } catch (IllegalStateException e) {
                Log.e("IllegalStateException", e.toString());
            } catch (IOException e) {
                Log.e("IOException", e.toString());
            }
        }
    
    }
    

    To stop the recording

      public void stopRecording() {
    
        recorder.stop();
        // recorder.reset();
        recorder.release();
    
    }
    
    0 讨论(0)
提交回复
热议问题