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“虚拟相机”的另一个比较。这是正确的版本。这是奇怪的播放版本。
此属性有助于提高视频质量:
mediaRecorder.setVideoEncodingBitRate(3000000); //you may try varying the argument value
Run Code Online (Sandbox Code Playgroud)
并且当然在prepare()之前调用此方法:)