无音频的Andr​​oid录像录像、音频、Andr、oid

2023-09-04 12:15:52 作者:厌世小仙女

是否有可能在Android的记录来自摄像头的视频没有音频流?

Is it possible in Android to record video from Camera without audio stream?

目标:降低输出文件的大小

Goal: to reduce the output file size.

推荐答案

您可以使用MediaRecorder不调用setAudio *就可以了。这是我第一次使用MediaRecorder,但这个例子似乎工作:

You can use a MediaRecorder without calling setAudio* on it. This is my first time using MediaRecorder, but this example seems to work:

public class CamcorderView extends SurfaceView implements
        SurfaceHolder.Callback {

    private SurfaceHolder mHolder;

    private Camera mCamera;
    private MediaRecorder mRecorder;

    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();
        mRecorder.setCamera(mCamera);

        mRecorder.setPreviewDisplay(mHolder.getSurface());

        // You may want to change these
        mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
        mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);

        // You'll definitely want to change this
        mRecorder.setOutputFile("/mnt/sdcard/out");

        try {
            mRecorder.prepare();
        } catch (IllegalStateException e) {
            Log.e("IllegalStateException", e.toString());
        } catch (IOException e) {
            Log.e("IOException", e.toString());
        }
        mRecorder.start();

    }
}

您可能还需要拨打:

setVideoSize(INT,INT); setVideoFrameRate(INT); setVideoSize(int, int); setVideoFrameRate(int);
 
精彩推荐
图片推荐