Качество видео в Android?

Я использую класс медиарекордера для записи видео, я инициализирую рекордер со следующими свойствами,

recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 

Но качество видео не такое же, как видео, которое я снимаю на собственной андроидной камере, мое видео, записанное с использованием медиа-рекордера, имеет низкое качество по сравнению с оригинальным, как улучшить качество видео.

Если кто-нибудь знает, что я помогаю мне. Спасибо.

Solutions Collecting From Web of "Качество видео в Android?"

Наконец, я нашел код для записи высококачественного видео в android 2.1, установив videoEncodingBitRate, AudioEncodingBitRate, AudioSamplingRate … и т. Д. Используя этот метод, вы можете установить свойства для видео, независимо от того, что вы хотите обеспечить высококачественным видео.

Для установки параметра высокого качества и низкого качества обратитесь к этой странице,

http://www.andgps.com/20110410/camcorderprofile-predefined-camcorder-profile-settings-for-camcorder-applications

Код, который я использовал с базовой версией Android 2.1 для создания высококачественного видео, показан ниже,

  recorder = new MediaRecorder(); Method[] methods = recorder.getClass().getMethods(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setVideoFrameRate(24); recorder.setVideoSize(720, 480); for (Method method: methods){ try{ if (method.getName().equals("setAudioChannels")){ method.invoke(recorder, String.format("audio-param-number-of-channels=%d", 1)); } else if(method.getName().equals("setAudioEncodingBitRate")){ method.invoke(recorder,12200); } else if(method.getName().equals("setVideoEncodingBitRate")){ method.invoke(recorder, 3000000); } else if(method.getName().equals("setAudioSamplingRate")){ method.invoke(recorder,8000); } else if(method.getName().equals("setVideoFrameRate")){ method.invoke(recorder,24); } }catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 

`

Используйте следующие настройки для видеозаписей: –

 private void cameraSettings() { mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); mediaRecorder.setVideoSize(width, height); mediaRecorder.setVideoFrameRate(videoFramePerSecond); } 

Используйте videoFramePerSecond = 30 и width = 1280 и height = 720 .. Этот параметр вы можете сделать по своему усмотрению в соответствии с вашим требованием.

попробуй это

mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); mrec.setPreviewDisplay(surfaceHolder.getSurface());

Попробуйте добавить эту строку

  recorder.setVideoSize(640,480); 

Или проверьте разрешения экрана, поддерживаемые вашим устройством, и установите их наилучшим образом.