Android:MediaRecorder前置摄像头输出144x176

时间:2015-01-30 10:56:13

标签: android resolution android-mediarecorder

我无法更改MediaRecorder输出视频的视频分辨率。

  • 使用前置摄像头
  • SurfaceView

活动

CamcorderProfile mProfile = CamcorderProfile.get( CamcorderProfile.QUALITY_HIGH );
recorder.setCamera( camera );
recorder.setAudioSource( MediaRecorder.AudioSource.CAMCORDER );
recorder.setVideoSource( MediaRecorder.VideoSource.DEFAULT );
recorder.setOutputFormat( mProfile.fileFormat );
recorder.setAudioEncoder( mProfile.audioCodec );
recorder.setVideoEncoder( mProfile.videoCodec );
recorder.setOutputFile( tempFile.getPath() );
recorder.setOrientationHint( 270 );
recorder.setVideoFrameRate( mProfile.videoFrameRate );
recorder.setVideoEncodingBitRate( mProfile.videoBitRate );
recorder.setAudioEncodingBitRate( mProfile.audioBitRate );
recorder.setAudioChannels( mProfile.audioChannels );
recorder.setAudioSamplingRate( mProfile.audioSampleRate );

预览的质量非常清晰,工作完美,但输出视频低调且有颗粒感。

使用recorder.setVideoSize( XXX, XXX );给出了这个错误:

  

E / MediaRecorder:开始失败:-19

如何让我的输出具有更高的分辨率?

1 个答案:

答案 0 :(得分:0)

我通过从相机预览中获取宽度/高度参数来解决此问题(现在至少)。

int videoWidth = camera.getParameters().getPreviewSize().width;
int videoHeight = camera.getParameters().getPreviewSize().height;

然后使用

recorder.setVideoSize( videoWidth, videoHeight );

这使得输出与相机预览相同。

编辑:

如果你保持比例正确并且大约在500x500左右,我认为你可以通过这样做获得任何支持的尺寸:

Camera.Parameters parameters = camera.getParameters();
Camera.Size size = parameters.getSupportedPreviewSizes().get( 0 );
for ( Camera.Size s : parameters.getSupportedPreviewSizes() ) {
    Log.e( "SIZE:", s.width + "x" + s.height );
    if ( s.width > 500 ) // from high to low res
        size = s;
}
Log.e( "SIZE", "Selected size: " + size.width + "x" + size + " (width still over 500)" );   
parameters.setPreviewSize( size.width, size.height );
camera.setParameters( parameters );

<强>输出

  

尺寸:1920x1080

     

尺寸:1440x1080

     

尺寸:1280x960

     

尺寸:1280x720

     

尺寸:960x720

     

尺寸:864x480

     

尺寸:768x432

     

尺寸:720x480

     

尺寸:640x480

     

尺寸:320x240

     

尺寸:176x144

     

所选尺寸:640x480(宽度仍超过500)