mMediaRecorder = new MediaRecorder();
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
// Step 2: Set sources
// activate this for recording with sound\
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoSize(getMaxSupportedVideoSize().width,getMaxSupportedVideoSize().height);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// Step 4: Set output file
mMediaRecorder.setOutputFile(getOutputMediaFile("movie"));
// Step 4: Set output file
mMediaRecorder.setOutputFile(getOutputMediaFile("movie"));
// Step 5: Set the preview output
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
mMediaRecorder.setOrientationHint(90);
上面的代码可以正常工作,但是,视频质量与我通过本机android摄像机拍摄的视频不一样,与媒体本机相比,我使用媒体录制器录制的视频质量较差,我该如何提高视频质量。
如果有人知道,请帮帮我。
我不是Java / Android开发人员,我使用的是Xamarin和C#,但我遇到的问题大致相同,我的解决方案应直接适用(即使语法几乎相同)。
我发现,如果您正在使用setCamera
(并且在启动mediaRecorder之前正在预览相机看到的内容),那么它将无法让您更改上的质量设置mediaRecorder
。
然后,当您调用时mediaRecorder.start()
,它崩溃或死机或显示垃圾。
基本上,只要摄像机正在预览,就不会允许MediaRecorder以与摄像机已经不同的质量开始录制。你需要
setCamera
)然后,当您开始录制时,一切都会正常进行。
因此,根据您的情况,在致电之前,请mediaRecorder.setCamera()
尝试以下操作:
mCamera.stopPreview(); mCamera.setPreviewDisplay(null);
然后往下走,做你的
mRecorder.setCamera()
那是我的解决方案。现在,我可以将视频质量设置为720p(或1080p),并且效果很好。
但是,当您停止录制时,预览也将停止。
您可能需要恢复您的
mCamera.setPreviewDisplay(mPreview.getHolder().getSurface())
还原到之前的状态,然后重新启动实际的预览。
我希望它也对您有用:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句