主要代码如下
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 度的,应该怎么修改?
