You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android平台下录制H265(HEVC)编码格式的视频

解决方案

你当前使用的MediaStore.ACTION_VIDEO_CAPTURE调用系统相机录制的方式,指定编码格式需要分场景适配:

方案1:调用系统相机适配(仅Android 13+生效)

Android 13(API 33)开始官方新增了MediaStore.EXTRA_VIDEO_ENCODER参数,可向系统相机指定期望的视频编码格式,修改后代码如下:

private void recordVideo() {
    Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
    // set video quality
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the video file name

    // 新增:Android 13及以上指定HEVC编码
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        intent.putExtra(MediaStore.EXTRA_VIDEO_ENCODER, MediaRecorder.VideoEncoder.HEVC);
    }

    // start the video capture Intent
    startActivityForResult(intent, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
}

注意:该参数仅为给系统相机的建议值,最终是否输出HEVC格式,取决于你所用的系统相机App是否支持接收该参数,三星S10自带相机多数版本可支持该配置。

方案2:全版本兼容方案(自定义录制逻辑)

如果你的App需要兼容Android 13以下版本,或者系统相机不响应上述参数,需要放弃调用系统相机Intent,自行实现录制逻辑,核心是配置视频编码器为HEVC,两种常用实现方式:

方式A:使用MediaRecorder实现

核心配置代码如下:

// 先检查设备是否支持HEVC编码
private boolean isHevcSupported() {
    for (int i = 0; i < MediaCodecList.getCodecCount(); i++) {
        MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
        if (!codecInfo.isEncoder()) continue;
        String[] types = codecInfo.getSupportedTypes();
        for (String type : types) {
            if (type.equalsIgnoreCase("video/hevc")) {
                return true;
            }
        }
    }
    return false;
}

// MediaRecorder配置核心逻辑
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// 指定HEVC编码
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.HEVC);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// 其余配置分辨率、比特率、输出文件、预览surface等逻辑自行补充

方式B:使用CameraX实现(更简单,兼容性更好)

CameraX是Jetpack推出的相机组件,适配绝大多数Android设备,核心配置如下:

VideoCapture videoCapture = new VideoCapture.Builder()
        .setVideoEncoderMimeType(MimeTypes.VIDEO_H265) // 指定HEVC编码
        .setTargetResolution(new Size(1920, 1080))
        .setBitRate(10_000_000)
        .build();

自行实现录制逻辑需要提前申请CAMERA、RECORD_AUDIO以及对应存储权限。

内容的提问来源于stack exchange,提问作者angel_30

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:24:03