探索 CameraX 音视频相机技术(3):实现预览

探索 CameraX 音视频相机技术(3):实现预览

💡 原文中文,约6000字,阅读约需15分钟。
📝

内容提要

本文介绍了如何使用CameraX实现音视频预览功能,重点讲解了PreviewView的使用步骤,包括请求CameraProvider、选择相机和绑定生命周期。同时讨论了PreviewView的实现模式和缩放类型,以帮助开发者更好地配置和显示预览流。

🎯

关键要点

  • 本文介绍了如何使用CameraX实现音视频预览功能。
  • PreviewView是用于显示相机预览的视图,可以裁剪、缩放和旋转。
  • 实现预览功能的步骤包括配置CameraXConfig.Provider、添加PreviewView到布局、请求ProcessCameraProvider、检查CameraProvider可用性、选择相机并绑定生命周期。
  • 使用PreviewView时,无法创建SurfaceTexture或从TextureView/SurfaceView获取Surface。
  • 请求CameraProvider的代码示例展示了如何获取ProcessCameraProvider实例。
  • 在视图创建时需验证CameraProvider的初始化是否成功。
  • 选择相机时需要创建Preview、指定LensFacing选项并绑定到生命周期。
  • PreviewView提供了额外的API用于配置实现模式和预览图像的缩放类型。
  • 实现模式包括PERFORMANCE模式和COMPATIBLE模式,前者使用SurfaceView,后者使用TextureView。
  • 缩放类型包括FIT_CENTER、FIT_START、FIT_END(信箱式显示)和FILL_CENTER、FILL_START、FILL_END(裁剪)。
  • CameraX默认使用FILL_CENTER缩放类型,开发者可以根据需要设置不同的缩放类型。
  • 本文提供了缩放视频和对齐的具体步骤和示例。

延伸问答

如何使用CameraX实现音视频预览功能?

使用CameraX实现音视频预览功能需要配置CameraXConfig.Provider、添加PreviewView到布局、请求ProcessCameraProvider、检查CameraProvider可用性、选择相机并绑定生命周期。

什么是PreviewView,它的主要功能是什么?

PreviewView是用于显示相机预览的视图,支持裁剪、缩放和旋转,以正确显示预览流。

在使用PreviewView时有哪些限制?

使用PreviewView时,无法创建SurfaceTexture或从TextureView/SurfaceView获取Surface,否则Preview将停止向PreviewView流式传输帧。

CameraX的缩放类型有哪些?

CameraX的缩放类型包括FIT_CENTER、FIT_START、FIT_END(信箱式显示)和FILL_CENTER、FILL_START、FILL_END(裁剪)。

如何选择相机并绑定生命周期?

选择相机时,需要创建Preview,指定LensFacing选项,并将选定的相机和用例绑定到生命周期。

PreviewView的实现模式有哪些?

PreviewView的实现模式包括PERFORMANCE模式和COMPATIBLE模式,前者使用SurfaceView,后者使用TextureView。

➡️

继续阅读