主要代码如下
try {
mMediaCodec = MediaCodec.createEncoderByType("video/avc");
} catch (IOException e) {
e.printStackTrace();
return;
}
MediaFormat format = MediaFormat.createVideoFormat("video/avc", mVideoSize.getWidth(), mVideoSize.getHeight());
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_BIT_RATE, 1250000);
format.setInteger(MediaFormat.KEY_FRAME_RATE, 30);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 5);
format.setInteger(MediaFormat.KEY_ROTATION, 90);
format.setInteger(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, 1000 / 30);
mMediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mEncoderSurface = mMediaCodec.createInputSurface();
and Camera2 Configuration is
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
mPreviewBuilder.addTarget(mPreviewSurface);
if (isEncode) {
mPreviewBuilder.addTarget(mEncoderSurface);
}
setUpCaptureRequestBuilder(mPreviewBuilder);
mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), null, mBackgroundHandler);
get encode data from MediaCodec
MediaCodec.BufferInfo mBufferInfo = new MediaCodec.BufferInfo();
while (true) {
int outputBufferIndex = venc.dequeueOutputBuffer(mBufferInfo, 0);
if (outputBufferIndex >= 0) {
// outputBuffer is ready to be processed or rendered.
ByteBuffer buffer = venc.getOutputBuffer(outputBufferIndex);
onEncodedFrame(buffer, mBufferInfo);
getOutputBuffer获取的数据使用 RTMP 推流到服务器的时候是旋转 90 度的,应该怎么修改?