我无法更改MediaRecorder输出视频的视频分辨率。
活动
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
如何让我的输出具有更高的分辨率?
答案 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)