0

В приложении, над которым я работаю, у меня есть область, где есть предварительный просмотр видеозаписи для записи видео. У меня есть следующий код, чтобы начать просмотр:Android - Предварительный просмотр изменяет размер при записи видео

mCamera = Camera.open(); 
mCamera.setPreviewDisplay(mHolder); 

Camera.Parameters parameters = mCamera.getParameters(); 
List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); 

Camera.Size previewSize = previewSizes.get(0); 

parameters.setPreviewSize(previewSize.width, previewSize.height); 
parameters.setVideoStabilization(false); 

mCamera.setParameters(parameters); 
mCamera.startPreview(); 
mCamera.unlock(); 

Для моего MediaRecorder, я следующий код установки:

if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder(); 

mMediaRecorder.setCamera(mCamera); 

mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
mMediaRecorder.setVideoEncodingBitRate(3072 * 1000); 
mMediaRecorder.setVideoFrameRate(60); 
mMediaRecorder.setVideoSize(1280, 720); 
mMediaRecorder.setOutputFile(videoFile.getAbsolutePath()); 

По какой-то причине, после того, как я начала записывать мое видео, предпросмотр изменяет себя , появляющийся «увеличенный». Я попробовал некоторые из решений, размещенных пользователями, задающих один и тот же вопрос, но эти решения не помогли. По-видимому, мне нужно установить размер предварительного просмотра в соотношение сторон 16: 9, чтобы заставить его работать правильно. Кто-нибудь знает какие-либо решения?

ответ

0

Нет гарантии, что видеозапись 1280x720 будет поддерживаться на всех устройствах. Вы должны перебрать более supported video recording sizes и выбрать тот, который вам больше нравится. Вы можете использовать getPreferredPreviewSizeForVideo() для размера видеозаписи, рекомендованного для конкретного устройства.

Вместо того чтобы выбрать первый размер предварительного просмотра, возвращаемый getSupportedPreviewSizes(), вы должны выбрать тот, который вам подходит лучше всего. Во всех практических случаях можно ожидать, что тот же размер можно найти в списках getSupportedVideoSizes() и getSupportedPreviewSizes() .

Вы можете выбрать любой размер, не обязательно один из соотношений 16: 9. В особо редком случае, когда вы не можете найти удовлетворительное соответствие между поддерживаемыми форматами видео и предварительного просмотра, вы должны выбрать размеры, которые имеют одинаковый аспект (например, ширина/высота). Например. 1280x720 и 640x360.

Обратите внимание, что предварительный просмотр видео View (обычно, SurfaceView) также должен иметь одинаковое соотношение сторон (но не того же размера), что и размер предварительного просмотра, например. вы можете выбрать предварительный просмотр 1280x780 и просмотреть размер 1180x720. В противном случае предварительный просмотр на экране будет искажен (слишком толстый или слишком узкий).

книгой, на некоторых устройствах, getSupportedVideoSizes() может возвращать нуль. Затем вы должны использовать список, возвращаемый getSupportedPreviewSizes().

 Смежные вопросы

  • Нет связанных вопросов^_^