【发布时间】:2020-10-29 17:41:21
【问题描述】:
我正在尝试使用最新版本的 cameraX 1.0.0-beta11 录制视频,但在录制时遇到问题。
代码 sn-p 启动摄像头并录制视频。
@SuppressLint("RestrictedApi")
private fun startCameraX() {
val cameraProviderFuture = ProcessCameraProvider.getInstance(activity!!)
cameraProviderFuture.addListener(Runnable {
// Used to bind the lifecycle of cameras to the lifecycle owner
val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()
// Preview
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(previewView.surfaceProvider)
}
val videoCapture=VideoCapture.Builder().setVideoFrameRate(15).build()
val videoFile = File(
getOutputDirectory(),
SimpleDateFormat(FILENAME_FORMAT, Locale.US
).format(System.currentTimeMillis()) + ".mp4")
val outputOptions = VideoCapture.OutputFileOptions.Builder(videoFile).build()
videoCapture.startRecording(outputOptions, ContextCompat.getMainExecutor(activity), object: VideoCapture.OnVideoSavedCallback{
override fun onVideoSaved(outputFileResults: VideoCapture.OutputFileResults) {
Log.e("data","onVideoSaved")
}
override fun onError(videoCaptureError: Int, message: String, cause: Throwable?) {
Log.e("data", "onError->$message")
}
})
// Select back camera as a default
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
try {
// Unbind use cases before rebinding
cameraProvider.unbindAll()
// Bind use cases to camera
cameraProvider.bindToLifecycle(
(this as LifecycleOwner), cameraSelector, preview, videoCapture)
} catch(exc: Exception) {
Log.e("TAG", "Use case binding failed", exc)
}
}, ContextCompat.getMainExecutor(activity))
}
输出目录
private fun getOutputDirectory(): File {
val mediaDir = activity?.externalMediaDirs?.firstOrNull()?.let {
File(it, resources.getString(R.string.app_name)).apply { mkdirs() } }
return if (mediaDir != null && mediaDir.exists())
mediaDir else activity!!.filesDir
}
错误 - 未绑定到相机 [androidx.camera.core.VideoCapture@4bd02a4]
请帮忙!! 提前致谢。
【问题讨论】:
-
您必须使用 1.0.0-beta11 版本还是可以使用旧版本的 CameraX 库(例如 1.0.0-beta01)?
-
@lincollincol 我必须使用最新版本的 camX
-
这里有一个很棒的带有图片和视频捕获功能的 CameraX 示例。我在工作中的信使中实现相机时正在使用它。 github.com/iambaljeet/CameraXView 但是基于 1.0.0-beta01 的示例。真的不知道新版本的变化。你可以试试看。
-
@lincollincol 感谢您的链接,它适用于旧版本,但我需要使用最新版本。
-
您的问题是什么?你能分享一下它的细节吗?
标签: android camera android-camera video-capture android-camerax