安卓 MediaRecorder只能录制劣质视频

3

我有以下代码来进行录音,但质量非常糟糕。我认为我的设置可能有问题,但我已经尝试了两种方式。一种是“CamcorderProfile”的方式,另一种是手动的方式。你可以看到camcorder代码被注释掉了。但两种方法都给出了完全相同的结果。

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

这个工具的使用很顺利,但是问题出在这里。 是录制时预览窗口的图片,而 是播放回放视频时的图片。虽然截图很糟糕,但实际上所有颜色都不正确(几乎没有颜色)。我认为可能有一些颜色通道的问题。例如,这里再与Genymotion“dummy camera”进行比较。这是正确的版本。这是奇怪的回放版本。


你尝试过这个吗? - code monkey
尝试了什么?我尝试了我发布的代码,结果就是代码下面的内容。 - CMOS
1
@CalvinMoss,蓝色文本是超链接。单击它以查看他所指的内容。 - weston
虽然有点晚了,但仍然可能有人会觉得这很有用。请查看我的答案:https://dev59.com/Rm025IYBdhLWcg3wW0oc#51961780 - divaPrajapati09
2个回答

5

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

mediaRecorder.setVideoEncodingBitRate(3000000);  //you may try varying the argument value

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

1分钟的视频,使用3000000的比特率,大约为31MB。 - LinuxMasterRace

3
这是一个使用以下配置的可用示例:链接
    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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接