Наконец, через 2 дня я решаю свою проблему.
Это решение для Grafika
ContinuousCaptureActivity.java
В drawFrame()
Метод я изменю некоторый коддля portrait
.
Я добавляю ниже 2 строк в методе drawFrame
:
Matrix.rotateM(mTmpMatrix, 0, 270, 0, 0, 1);
Matrix.translateM(mTmpMatrix, 0, -1, 0, 0);
В drawFrame
Типе метода 2 для установки glViewport
- Первый для Заполните
SurfaceView
этим .(это означает, что это изменение ориентации при записи видео пользователем) - Секунда для Отправьте его на видеокодер .(это означает, что это изменение ориентации после сохранения видео)
Так что я буду меняться во 2-м варианте
Пожалуйста, найдите полный код ниже:
// Send it to the video encoder.
if (!mFileSaveInProgress) {
mEncoderSurface.makeCurrent();
if (!AppSetting.getValue(activity, Config.ORIENTATION, "").equalsIgnoreCase("Select")) {
if (AppSetting.getValue(activity, Config.ORIENTATION, "").equalsIgnoreCase("Portrait")) {
Matrix.rotateM(mTmpMatrix, 0, 270, 0, 0, 1);
Matrix.translateM(mTmpMatrix, 0, -1, 0, 0);
}
}
GLES20.glViewport(0, 0, VIDEO_WIDTH, VIDEO_HEIGHT);
mFullFrameBlit.drawFrame(mTextureId, mTmpMatrix);
//drawExtra(mFrameNum, VIDEO_WIDTH, VIDEO_HEIGHT);
mCircEncoder.frameAvailableSoon();
mEncoderSurface.setPresentationTime(mCameraTexture.getTimestamp());
mEncoderSurface.swapBuffers();