首页 > 应用开发 > IT综合 > 音视频Android视频采集直播技术
今天为大家介绍一下如何在 Android 上进行视频采集。在 Android 系统下有两套 API 可以进行视频采集,它们是 Camera 和 Camera2 。Camera是以前老的 API ,从 Android 5.0(21)之后就已经放弃了。我今天主要给大家介绍一下如何使用 Camera2 进行视频的采集。
- onOpened:表式成功打开了 Camera 。
- onDisconnected:表式关闭了与 Camera 的连接。
- onError:表式打开 Camera 失败。
CameraCaptureSession:该类代表 APP 与 Camera 设备之间的 连接。就好像 APP 与某个 Camera 设备之间建了一个通道,你的APP无论是拍照,摄像等都可以通过这个通道向 Camera 设备发命令请求,Camera接收请求后做相应的工作。这是典型的异步工作方式。
CameraCaptureSession.StateCallback:该类是CameraCaptureSession的内部类,其中定义了 onConfigured 和 onConfigureFailed 两个方法,这两个方法需要用户自己来实现,系统会根据 Session 的创建状态结果回调不同的方法:
- onConfigured:表式 Session 创建成功。
- onConfigureFailed:表式 Session 创建失败。
CameraCaptureSession.CaptureCallback:该类是CameraCaptureSession的另一个内部类,其中定义了 onCaptureCompleted 和 onCaptureProgressed 两个方法,这两个方法也需要用户自己来实现,系统会根据 Session 捕获图片的不同阶段来回调这两个不同的方法:
- onCaptureCompleted:图片捕获完成。
- onCaptureProgressed:图片正在处理中。
CameraRequest:代表了一次捕获请求,用于描述捕获图片的各种参数设置,比如对焦模式、曝光模式等等,APP需要对捕获的所做的各种控制,都通过CameraRequest参数进行设置。
CameraRequest.Builder:负责生成CameraRequest对象。
- 该方法的第一个参数代表要打开的摄像头ID;
- 第二个参数 callback 用于监听摄像头的状态;
- 第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null。
- TEMPLATE_PREVIEW(预览)
- TEMPLATE_RECORD(拍摄视频)
- TEMPLATE_STILL_CAPTURE(拍照)等参数。
- 该方法的第一个参数是一个List集合,封装了所有需要从该摄像头获取图片的Surface;
- 第二个参数 StateCallback 用于监听CameraCaptureSession的创建过程;
- 第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null。
- 第一个参数是由前面讲的 createCaptureRequest 创建的 CaptureRequest.Builder对象生成的。
- 第二个参数callback是Camera捕获时的回调对象。
- 第三个参数代表执行callback的Handler,如果程序希望直接在当前线程中执行callback,则可将handler参数设为null。
通过以上的步骤,就可以从Camera设备中获取到视频了。我们还可以通过Android的MediaRecorder类将获取到的视频录制下来进行回看。
通过上面对 Camera2 API 使用的分析,我们们可以看到 Camera2 完全采用了异步的架构模式,在完成 Camera 每一步操作后系统都会通知用户,用户可以在回调时做下一步的操作,而不用一直等待。采用这种模式的优点是可以大大提高APP的工作效率,缺点是不那么直观,增加了一些学习和开发成本。
图玩智能科技为企业提供专业的直播技术支持,提供直播平台的二次开发服务,欢迎随时咨询www.toivan.com。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959689/viewspace-2694558/ ,如需转载,请注明出处,否则将追究法律责任。