android - 如何将 VideoCapture 设置为应用本地存储
问题描述
我有一个使用 CameraX 录制视频的应用程序。当我将输出位置设置为正常的外部照片库位置时,一切正常。例如:
val outputFileOptions = VideoCapture.OutputFileOptions.Builder(
this.contentResolver,
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, //Use this to save in normal Gallery
contentValues
).build()
videoCapture?.startRecording(
outputFileOptions,
cameraExecutor,
object : VideoCapture.OnVideoSavedCallback {
override fun onVideoSaved(outputFileResults: VideoCapture.OutputFileResults) {
Timber.i("onVideoSaved outputFileResults: $outputFileResults")
}
override fun onError(videoCaptureError: Int, message: String, cause: Throwable?) {
cause?.printStackTrace()
Timber.e("onError message: $message cause: $cause")
}
})
...会工作得很好。
当我尝试使用应用程序本地位置设置它时,虽然它崩溃了:java.lang.IllegalArgumentException: Unknown URL file:///data/user/0/com.company.appname/files/VIDEO_20210228_153240.mp4
现在,该文件可以完美地处理其他事情,例如将其作为输出位置提供给 MediaRecorder。
我就是这样做的:
val file = createVideoFile() //Creates the file mentioned above
val uri = file.toUri()
val outputFileOptions = VideoCapture.OutputFileOptions.Builder(
this.contentResolver,
uri,
contentValues
).build()
请问有谁知道我做错了什么?
解决方案
推荐阅读
- mysql - 我有那个错误“#1273 - 未知排序规则:'utf8mb4_0900_ai_ci'”
- javascript - 简单计算器项目的意外输出
- angular - 如何使用 Highcharts 回归插件使用 Angular 8 包装器绘制趋势线
- r - tidyverse 包中的 R 函数是什么,它允许您在字符串的开头/结尾添加一些字符?
- bash - 为什么我的 bash 脚本打印出意外的结果?
- reactjs - 如何让 React 响应子文件夹 URL 请求?
- python - 使用 tf.image.decode_image 时出错“b'无法将字节解码为 JPEG、PNG、GIF 或 BMP'”
- reactjs - 上下文提供程序中的子项数组
- user-interface - 如何从 golang fyne 容器中删除对象
- python - 计算python中两个列表元素之间的差异