【问题标题】:how to capture video without audio in android programmatically?如何以编程方式在android中捕获没有音频的视频?
【发布时间】:2017-07-06 16:29:10
【问题描述】:

我只是调用视频意图来捕捉。

`

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

`

像这样。但我需要在没有音频的情况下捕获它。我检查了下面的链接,但找不到解决方法 Android record video without audio

【问题讨论】:

标签: android audio video


【解决方案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();
    }
}

【讨论】:

  • 很遗憾,省略 AudioSource 在 Android 10+ 上不起作用; MediaRecorder.prepare() 失败。我一直在寻找适用于此 API 级别的方法,但没有成功。
猜你喜欢
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 2012-11-05
  • 2011-03-03
  • 2011-03-03
相关资源
最近更新 更多