如何在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
相关产品推荐
相关产品推荐

