说明
LocalCameraTrack 用于本地摄像头采集、预览渲染与摄像头控制,并作为 publishLocalVideo 的输入轨道。
摄像头操作以新画面真正出帧为成功判据,结果通过 RTCResultListener 异步回调。一次操作尚未出结果时又发起新的操作,前一次的回调静默丢弃,只有最后一次给出结果。
preOpt
- 赋值和
getLocalCameraTrack(preOpt)都会复制一份preOpt.capture,因此拿到轨道后再修改原对象的capture不会生效,需要重新赋值track.preOpt = opt;修改preOpt.publish仍然生效。 capture.deviceId与capture.position由 SDK 在切换成功后回写为实际生效的设备,可配合getCurrentCameraId()读取。
LocalCameraTrack 自身方法
startCapture(listener)
capture 中的 deviceId 与 position 在这里都是建议值:建议的设备不可用时,SDK 会依次尝试同方向、再到全部可用设备,不会因为建议无效直接失败;自动选中的结果不会写回配置,需通过 getCurrentCameraId() 查询。已经在采集时本次调用直接返回成功,且新的
capture 整份都不生效(含分辨率、帧率与设备意图);要换参数需先 stopCapture() 再启动。参数说明:
listener:RTCResultListener?,启动结果回调;无权限时回调onFail(RtcErrorCode.CAMERA_PERMISSION_DENIED, "")(102231),可用设备全部试过仍无画面时回调onFail(RtcErrorCode.CAMERA_FIRST_FRAME_TIMEOUT, "")(102239)。失败码含义见 错误码。
Unit)。
stopCapture()
参数说明:无。
返回值说明:无(
Unit)。
switchCameraPosition(position, listener)
deviceId。未在采集时(首次、
stopCapture() 之后、上次启动失败之后)可以直接调用,无需先 startCapture();已在采集时沿用当前的分辨率与帧率。失败不会自动回退到原摄像头。目标设备或格式校验失败时可能保留原采集,因此失败回调不代表摄像头一定已停止;需要关闭时仍应调用
stopCapture()。
应用若只需恢复可用画面,可调用 startCapture(listener),但其设备配置为建议值,不保证选中原设备。若需精确恢复原摄像头,应在切换前保存 getCurrentCameraId(),失败后使用非空快照调用 switchCameraDevice(previousId, listener);恢复本身失败时应提示画面中断,避免循环重试。
参数说明:
position:CameraCaptureOptions.CamraPosition,目标摄像头位置:FRONT:前置摄像头BACK:后置摄像头External:外接摄像头
listener:RTCResultListener?,切换结果回调,可不传。本次请求被后一次请求取代或被stopCapture()取消时不回调任何结果。失败码含义见 错误码。
Unit)。
switchCameraDevice(cameraId, listener)
cameraId 精确切换摄像头。适用于设备存在多颗摄像头、需要指定具体某一颗(而非仅前/后置)的场景。cameraId 取自 RTCEngine.getCameraDevices 返回的 CameraDeviceCapability.cameraId。ID 是指令:只尝试这一颗设备,打不开即失败,不会换到别的设备。其余语义与
switchCameraPosition 一致——未在采集时可直接调用、以首帧为成功判据、失败不自动回退。成功后由 SDK 把实际生效的设备 ID 与其方向写回配置。参数说明:
cameraId:String,目标摄像头的 Camera2 原生 ID。listener:RTCResultListener?,切换结果回调,可不传。本次请求被后一次请求取代或被stopCapture()取消时不回调任何结果。失败码含义见 错误码。
Unit)。
getCurrentCameraId()
startCapture 的建议设备失效后由 SDK 自动选中了另一颗,或 switchCameraPosition 在同方向内改选了另一颗,多摄选择界面可用它显示真实选中态。该值是历史记录,不代表当前是否正在采集:切换中、启动失败后、
stopCapture() 之后都保留上一次的值,判断采集状态请依赖采集相关回调。参数说明:无。
返回值说明:
String,实际生效的 Camera2 设备 ID;尚未成功采集过或 SDK 已释放时返回空串。
openFrontCameraMirror()
参数说明:无。
返回值说明:无(
Unit)。
closeFrontCameraMirror()
参数说明:无。
返回值说明:无(
Unit)。
isFrontCameraMirrorOpen()
参数说明:无。
返回值说明:
Boolean,true 表示镜像开启,false 表示关闭。
前置镜像仅影响本地预览渲染,不改变编码发布到远端的画面;正常显示模式从下一帧采用新配置。启用控件的 customDisplayCtrl(true) 后,预览使用控件自身的旋转和翻转设置,不叠加轨道的默认前置镜像。
setCameraAngleOffset(offset)
0/90/180/270。参数说明:
offset:Int,角度偏移值,建议传0/90/180/270。 返回值说明:无(Unit)。
switchLight(open)
参数说明:
open:Boolean,true打开闪光灯,false关闭闪光灯。 返回值说明:无(Unit)。
继承自 VideoTrack 的渲染方法
控件使用cn.seastart.rtc.media.original.render 包中的 VcsPlayerGlTextureView / VcsPlayerGlSurfaceView;显示控制与生命周期见 视频渲染。
addPlayView(view)
VcsPlayerGlTextureView / VcsPlayerGlSurfaceView。参数说明:
view:View,渲染控件。 返回值说明:Boolean,true表示添加成功;类型不支持或重复添加时为false。
replacePlayView(views)
参数说明:
views:MutableList<View>,渲染控件集合,仅支持VcsPlayerGlTextureView/VcsPlayerGlSurfaceView。 返回值说明:无(Unit)。
removePlayView(view)
参数说明:
view:View,目标渲染控件。 返回值说明:无(Unit)。
removeAllPlayView()
参数说明:无。
返回值说明:无(
Unit)。