2017-02-17 60 views
0

我只是调用视频意图捕获。如何在android下以编程方式捕获视频而无音频?

`

private void dispatchTakeVideoIntent() { 
     Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
     if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { 
      startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE); 
     } 
} 

`

这样。但我需要捕获它没有Audio.I检查下面的链接,但无法找到如何解决 Android record video without audio

+0

完整的代码张贴在您链接的那个线程中......它几乎只是复制和粘贴它,它应该工作? – Danieboy

+0

通过这个例如https://github.com/googlesamples/android-Camera2Video –

回答

1

只需使用MediaRecorder类录制视频。使用媒体记录器时,设置音频和视频源时不要将音频源设置在那里。喜欢这个。

public class MuteVideoRecorderView extends SurfaceView implements 
     SurfaceHolder.Callback { 

    private SurfaceHolder mHolder; 

    private Camera mCamera; 
    private MediaRecorder mMediaRecorder; 

    public CamcorderView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     mHolder = getHolder(); 
     mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     mHolder.addCallback(this); 

     mCamera = Camera.open(); 
     mRecorder = new MediaRecorder(); 

    } 

    public void stop() { 
     mRecorder.stop(); 
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, 
      int height) { 
    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 

     mCamera.unlock(); 
     mMediaRecorder.setCamera(mCamera); 

     // Here we will not set mRecorder.setAudio(..); 
     mMediaRecorder.setVideoSize(int, int); 
     mMediaRecorder.setVideoFrameRate(int); 

     mMediaRecorder.setPreviewDisplay(mHolder.getSurface()); 


     mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
      mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
     mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 

     // change for desired output folder 
     mMediaRecorder.setOutputFile("/mnt/sdcard/test/work"); 

     try { 
      mMediaRecorder.prepare(); 
     } catch (IllegalStateException e) { 
      Log.e("IllegalStateException", e.toString()); 
     } catch (IOException e) { 
      Log.e("IOException", e.toString()); 
     } 
     mMediaRecorder.start(); 
    } 
} 
相关问题