Android MediaCorder

MediaRecorder

MediaRecorder使用来录制视频和音频常见的类,关于其的内容还是较为简单易学的,主要是针对其录制视频和音频的方法来熟悉这个类,并设置常见的参数。
mediaRecorder_states.jpg-20.6kB

音频录制

1.创建MediaRecorder的实例;
2.setAudioSource;设置音频的来源
3.setOutputFormat();设置输出格式
4.setAudioEncoder():设置音频的编码
5.setOutFile():设置生成文件
6.prepare:准备工作
7.start():开始录制
8.stop()/reset():结束
9.release():释放资源

public class MainActivity extends AppCompatActivity {
    private Button recordAudio;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recordAudio = (Button) findViewById(R.id.record_audio);
        recordAudio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                recordAudio();
            }
        });
    }

    //录制音频
    private void recordAudio() {
        MediaRecorder audioRecorder = new MediaRecorder();
        audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        audioRecorder.setOutputFile(getExternalCacheDir().getAbsolutePath()+"/audioRecord");
        try {
            //3s 自动结束
            audioRecorder.setMaxDuration(3000);
            audioRecorder.prepare();
            audioRecorder.start();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

录制视频

1.实例MediaCoder的例子
2.setVideoSource(): 设置视频来源
3.setOutputFormat():设置输出的格式
4.setVideoEncoder():设置视频编码
5.setVideoSize():设置视频的宽和高
6.setVideFrameRate:设置视频帧率
7.setPreviewDisplay:设置预览的界面
8.prepare():准备
9.start():开始录制
10.stop/reset:停止录制
11.release:释放资源

 private void recordVideo() {
    videoRecorder = new MediaRecorder();
    videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
    videoRecorder.setOutputFile(getExternalCacheDir().getAbsolutePath() + "/videoRecord");
    videoRecorder.setVideoSize(640, 480);
    videoRecorder.setVideoFrameRate(20);
    videoRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());

    try {
        videoRecorder.setMaxDuration(8000);
        videoRecorder.prepare();
        videoRecorder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

encode和outputFormat的对应关系

https://developer.android.com/guide/appendix/media-formats.html

video:
video_encoder_outputformat.png-142.5kB
image:
image_encoder_outputformat.png-50.3kB
audio:
audio_encoder_outputformat_01.png-182.2kB
audio_encoder_outputformat_02.png-140.1kB
audio_encoder_outputformat_03.png-76kB

CamcorderProfile

我们可以直接设此参数,从而不需要设置一个帧率,编码,输出格式等参数。

private void recordVideo(int type) {
    videoRecorder = new MediaRecorder();
    videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    videoRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_1080P);
    videoRecorder.setProfile(camcorderProfile);
    videoRecorder.setOutputFile(getExternalCacheDir().getAbsolutePath() + "/videoRecord_type");

    videoRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
    videoRecorder.setMaxDuration(10000);
    try {
        videoRecorder.prepare();
        videoRecorder.start();

    } catch (IOException e) {
        e.printStackTrace();
    }
}

关于MediaRecorder就介绍这么多了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值