我在用cameraX录制视频。我需要使用android-gpuimage或任何其他库将实时滤镜应用到相机预览。有可能吗?如果是,请提供一个例子。
@SuppressLint("RestrictedApi")
private fun startCamera() {
val cameraProviderFuture = ProcessCameraProvider.getInstance(this)
cameraProviderFuture.addListener(Runnable {
val cameraProvider = cameraProviderFuture.get()
preview = Preview.Builder()
.build()
val cameraSelector = CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build()
videoCapture = VideoCaptureConfig.Builder()
.build()
try {
cameraProvider.unbindAll()
camera = cameraProvider.bindToLifecycle(this as LifecycleOwner, cameraSelector, preview, videoCapture)
preview.setSurfaceProvider(viewFinder.createSurfaceProvider())
} catch (e: Exception) {
Log.e("CameraX", "Use case binding failed!", e)
}
}, ContextCompat.getMainExecutor(this))
}我在这个项目中使用camerax版本1.0.0-beta06
发布于 2020-07-26 22:06:42
CameraX并不正式支持视频和过滤,但您可以通过将ImageAnalysis的输出编码为视频来解决这一问题。
ImageAnalysis的输出是YUV420字节数组。可以使用this code snippet将其转换为Bitmap,然后您可以对该Bitmap应用GPUImage过滤器。然后将一系列Bitmap编码成视频。这在许多层面上都是低效的,但它应该是有效的。
您可以使用GPUImage签出此代码样例以用于过滤CameraX预览:https://github.com/xizhang/camerax-gpuimage
https://stackoverflow.com/questions/62779839
复制相似问题