80,471
社区成员




/**
*开始录制
*/
public void startCapture() {
if (!isCapturing && initCodec()) {
codec.start();
inputBuffers = codec.getInputBuffers();
outputBuffers = codec.getOutputBuffers();
frameFetcher = new FrameFetcher();
frameFetcher.start();
colorConverter = YUV420Converter.create(MyCamera.PREVIEW_FORMAT, currentSize);
isCapturing = true;
Log.i(TAG, "Start capture.");
}
}
/**
*初始化
*/
private boolean initCodec() {
codec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", currentSize.width,
currentSize.height);
int bitRate = camera.getFpsRange()[1] * currentSize.width * currentSize.height / 15;
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, COLOR_FORMAT);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, camera.getFpsRange()[1]);
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 3);
mediaFormat.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, camera.getCurrentFrameSize());
try {
codec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
} catch (IllegalStateException e) {
codec.release();
codec = null;
return false;
}
return true;
}