Android MediaRecorder仅录制质量糟糕的视频

CMO*_*MOS 3 android video-capture video-processing android-mediaplayer mediarecorder

因此,我有以下代码来进行记录,并且质量绝对糟糕。我认为我必须设置错误,但是我尝试了两种方法。使用“ CamcorderProfile”方式然后是“手动”方式,您可以看到摄像机代码已被注释掉。两者都给出完全相同的结果。

    Camera _camera = Camera.Open (1);
    _camera.Unlock ();

    recorder = new MediaRecorder ();

    recorder.SetCamera (_camera);

    recorder.SetAudioSource (AudioSource.Mic);    
    recorder.SetVideoSource (VideoSource.Camera); 

    recorder.SetOutputFormat (OutputFormat.Default);

    recorder.SetAudioEncoder (AudioEncoder.Default);
    recorder.SetVideoEncoder (VideoEncoder.Default);

    //CamcorderProfile p = CamcorderProfile.Get(0, CamcorderQuality.High);
    //recorder.SetProfile(p);

    recorder.SetOutputFile (path);       

    recorder.SetPreviewDisplay(video.Holder.Surface);

    recorder.Prepare ();
    recorder.Start ();
Run Code Online (Sandbox Code Playgroud)

这样就可以了,但这就是问题所在。是我录制时的预览窗口的图片,是我播放时的视频的图片。您实际上不能说出来,因为屏幕截图非常糟糕,但是任何一种颜色都不正确(它几乎没有颜色),我认为颜色通道一定存在某种问题。例如,这里是与genymotion“虚拟相机”的另一个比较。这是正确的版本。这是奇怪的播放版本。

Sar*_*tal 5

此属性有助于提高视频质量:

mediaRecorder.setVideoEncodingBitRate(3000000);  //you may try varying the argument value
Run Code Online (Sandbox Code Playgroud)

并且当然在prepare()之前调用此方法:)