所以我有以下代码来进行录制,质量非常糟糕。我想我必须设置错误,但我已经尝试过两种方式。 " 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 ();
这很好用,但这就是问题所在。 This是我录制时预览窗口的图片,this是播放视频时的视频图片。你实际上不能说,因为截图是如此可怕,但没有一种颜色是正确的(它几乎没有颜色)我认为颜色通道必定存在某种问题。例如,这是与genymotion"虚拟相机的另一种比较" 。这是correct版本。这是weird播放版本。
答案 0 :(得分:5)
此属性有助于提高视频质量:
mediaRecorder.setVideoEncodingBitRate(3000000); //you may try varying the argument value
andcourse在prepare()之前调用此方法:)
答案 1 :(得分:3)
This is a working example using the following configuration:
myCamera = getCameraInstance();
mediaRecorder = new MediaRecorder();
myCamera.unlock();
mediaRecorder.setCamera(myCamera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mediaRecorder.setOutputFile(getExternalStorageDirectory() + "myvideo.mp4");
mediaRecorder.setMaxDuration(60000); // Set max duration 60 sec.
mediaRecorder.setMaxFileSize(5000000); // Set max file size 5M
mediaRecorder.setPreviewDisplay(myCameraSurfaceView.getHolder().getSurface());
但是,如果您使用Android 5,则应使用新相机API。