android – 无法为媒体记录器设置视频质量.视频会产生闪烁的视频

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);

以上代码工作正常但是,视频的质量与我在本机安卓摄像头拍摄的视频不一样,我使用媒体录像机录制的视频质量较差,与原生录像机相比,我怎样才能提高视频质量.

如果有人知道帮助我.谢谢

最佳答案
我不是Java / Android开发人员,我正在使用Xamarin和C#,但我遇到了同样的问题,我的解决方案应该直接适用(即使语法几乎相同).

我发现如果您正在使用setCamera(并且在启动mediaRecorder之前预览相机所看到的内容),那么它将不允许您更改mediaRecorder上的质量设置.

然后当你调用mediaRecorder.start()时,它会崩溃或冻结或显示垃圾.

基本上,只要相机正在预览,就不允许MediaRecorder以与相机已有的质量不同的质量开始录制.你需要

>停止相机预览,
>带走它的预览表面
>将摄像机分配给MediaRecorder(使用setCamera)
>使用您需要的质量设置MediaRecorder
>然后重新附加预览曲面

然后当你开始录制时,一切都按预期工作.

因此,在您调用mediaRecorder.setCamera()之前,请尝试以下操作:

mCamera.stopPreview();
mCamera.setPreviewdisplay(NULL);

再深一点,做你的

mRecorder.setCamera()

那是我的解决方案.我现在可以将视频质量设置为720p(或1080p),它可以完美运行.

但是,当您停止录制时,预览也将停止.

你可能需要恢复你的

mCamera.setPreviewdisplay(mPreview.getHolder().getSurface())

以前是什么,并重新开始实际的预览.

我希望它也适合你:)

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...