使用MediaRecorder录制4K

时间:2015-11-11 15:45:14

标签: android android-camera android-mediarecorder

正在查看Google发布的相机2视频sample app,其中一种方法如下:

/**
 * In this sample, we choose a video size with 3x4 aspect ratio. Also, we don't use sizes
 * larger than 1080p, since MediaRecorder cannot handle such a high-resolution video.
 *
 * @param choices The list of available sizes
 * @return The video size
 */
private static Size chooseVideoSize(Size[] choices) {
    for (Size size : choices) {
        if (size.getWidth() == size.getHeight() * 4 / 3 && size.getWidth() <= 1080) {
            return size;
        }
    }
    Log.e(TAG, "Couldn't find any suitable video size");
    return choices[choices.length - 1];
}

我已经摆弄了我自己的camera2实现,并尝试用录音机录制4K视频,效果很好 - 录制的文件报告尺寸为3840×2160。

那么,样本中的注释是不正确的还是MediaRecorder无法在Lollipop上处理更大的分辨率但是能否在Marshmallow或其他方面进行处理?

2 个答案:

答案 0 :(得分:4)

CamcorderProfile支持4K,作为'QUALITY_2160P',因此最佳做法是检查是否支持该配置文件。如果是,那么使用该大小的camera2输出到MediaRecorder预计会起作用。

但是,由于并非所有设备都支持4K,因此1080p是示例应用程序中使用的保守限制 - 应用程序的某些部分也早于对CamcorderProfile添加4K支持,因此评论有点过时。

答案 1 :(得分:2)

  

此方法中的选择数组来自CameraCharacteristics / StreamConfigurationMap getOutputSize - 我认为这是从相机硬件配置文件中收集的?

是的,但此相机配置文件不一定符合MediaRecorder功能,例如this

您可以更好地信任摄像机配置文件,

mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

但不是没有glitches,并且无法保证在特定设备上MediaRecorder无法处理更多内容。

无论如何,CamcorderProfile具有高达1080p的“官方”配置文件,因此它是示例代码的合理选择,它不会声称能够为最广泛的设备提供最佳结果。< / p>