В прошлом я сталкивался с подобными проблемами.
То, что вы делаете, кажется нормальным, но вот несколько советов, которые могут помочь отладить проблему:
Убедитесь, что вы выбираете поддерживаемое разрешение
int cameraId = 0; // using back facing camera
Camera camera = Camera.open(cameraId);
Camera.Parameters cameraParams = camera.getParameters();
List<Camera.Size> supportedPreviewSizes = cameraParams.getSupportedPreviewSizez();
// find suitable Camera preview size from list and set your CamcorderProfile to use that new size
После того, как вы выбрали подходящий размер предварительного просмотра, обязательно сбросьте свой SurfaceView - вам нужно будет изменить его размер, чтобы учесть изменение соотношения сторон
MediaRecorder API использует SurfaceView, поэтому, если ваш вид поверхности не настроен правильно, это приведет к зеленому мерцанию, которое вы видите
Убедитесь, что вы используете битрейт видео, который может поддерживать новое разрешение - попробуйте увеличить битрейт видео, чтобы удвоить его первоначальную настройку (* обратите внимание, что это резко влияет на размер выходного файла)
CamcorderProfile.QUALITY_HIGH возвращает максимально возможное поддерживаемое разрешение камеры. Убедитесь, что вы используете правильный идентификатор камеры (спереди и сзади) - может быть, камера на задней панели поддерживает 1080p, а камера на передней панели - нет?
Надеюсь, советы помогут!