| | |
| | | } |
| | | |
| | | // 设置MediaRecorder |
| | | // 注意:MediaRecorder的设置顺序非常重要,必须严格按照以下顺序: |
| | | mediaRecorder = new MediaRecorder(); |
| | | |
| | | // 1. 设置数据源(必须在setOutputFormat之前) |
| | | mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); |
| | | mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); |
| | | |
| | | // 2. 设置输出格式(必须在setOutputFile和编码器之前) |
| | | mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); |
| | | |
| | | // 3. 设置输出文件(必须在编码器之前) |
| | | mediaRecorder.setOutputFile(currentVideoFile.getAbsolutePath()); |
| | | |
| | | // 4. 设置编码器(必须在setOutputFormat之后) |
| | | mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); |
| | | mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); |
| | | |
| | | // 5. 设置编码参数(必须在编码器之后) |
| | | mediaRecorder.setAudioEncodingBitRate(64000); // 64kbps |
| | | mediaRecorder.setAudioSamplingRate(44100); // 44.1kHz |
| | | mediaRecorder.setVideoEncodingBitRate(width * height * 3); |
| | | mediaRecorder.setVideoFrameRate(20); |
| | | mediaRecorder.setVideoSize(width, height); |
| | | mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); |
| | | |
| | | // 6. 准备MediaRecorder |
| | | mediaRecorder.prepare(); |
| | | |
| | | // 创建Surface |