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

如何在Java中通过CameraX将视频保存至MediaStore?

问题解答

关于output术语的说明

在Kotlin中,videoCapture.output是CameraX库中VideoCapture类的属性访问语法糖,对应Java中的videoCapture.getOutput()方法。Kotlin会自动将Java类中符合getXxx()命名规范的getter方法转换为可直接访问的属性形式,所以你在Java里需要调用getOutput()来获取对应的Recorder实例。

Java版本实现代码

以下是将官方Kotlin代码转换后的Java版本,实现视频录制并保存到MediaStore:

import android.content.ContentValues;
import android.provider.MediaStore;
import androidx.camera.video.MediaStoreOutputOptions;
import androidx.camera.video.Recording;
import androidx.camera.video.Recorder;
import androidx.camera.video.VideoCapture;
import androidx.core.content.ContextCompat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

// 定义文件名格式常量
private static final String FILENAME_FORMAT = "yyyy-MM-dd-HH-mm-ss-SSS";

// 1. 创建MediaStoreOutputOptions
String name = "CameraX-recording-" +
        new SimpleDateFormat(FILENAME_FORMAT, Locale.US)
                .format(new Date()) + ".mp4";

ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Video.Media.DISPLAY_NAME, name);

MediaStoreOutputOptions mediaStoreOutput =
        new MediaStoreOutputOptions.Builder(getContentResolver(), MediaStore.Video.Media.EXTERNAL_CONTENT_URI)
                .setContentValues(contentValues)
                .build();

// 2. 配置Recorder并开始录制
Recorder recorder = videoCapture.getOutput();
Recording recording = recorder.prepareRecording(getApplicationContext(), mediaStoreOutput)
        .withAudioEnabled()
        .start(ContextCompat.getMainExecutor(this), captureListener);

注意事项

  • 确保已正确初始化VideoCapture实例videoCapture,并添加CameraX相关依赖。
  • captureListener需要自行实现Recording.StatusCallback接口,用于监听录制的状态变化(如开始、结束、错误等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:46:18