- RevueSDK
- LocalParticipant
- setCamera(enabled:options:)
Instance Method
setCamera(enabled:options:)
啟用/停用相機硬體擷取(不 publish、不改 isMuted)
@discardableResult @MainActor func setCamera(enabled: Bool, options: CameraCaptureOptions? = nil) -> LocalVideoTrack?Parameters
- enabled
true = 開硬體擷取、false = 關硬體擷取
- options
相機擷取選項(解析度、FPS、鏡頭位置)
Return Value
相機 LocalVideoTrack(後續可透過 publish(videoTrack:to:options:) 發布給指定對象)
Discussion
只開關鏡頭硬體,不發布、不翻任何 isMuted 旗標,也不觸發 mute 事件。關閉時若相機軌道 已發布,每位接收者的出口改送佔位畫面(mutePlaceholder,沒設則是 16×16 黑圖), 對方看到的是你關了鏡頭;重新開啟後恢復送真實畫面。軌道若已 mute (cameraTrack.mute()),重新開啟後仍送佔位畫面,直到 unmute。
與 set(source: .camera, enabled:) 相同。本方法不改 isMuted:關硬體不會歸零軌道 mute。 cameraTrack 跨房間常駐,用 cameraTrack.mute() 設的 mute 由 SDK 在離房 (Room.disconnectAll())時歸零,進新房不必再清。
與 mute 的關係
mute 分兩層(軌道層、publication 層),和本方法是不同的 API:
| API | 作用範圍 | 硬體 | isMuted |
|---|---|---|---|
setCamera(enabled:) / set(source: .camera, enabled:) | 所有接收者(關閉時送佔位畫面) | 開/關 | 不改 |
cameraTrack.mute() / unmute() | 整條軌道,所有接收者 | 不碰 | 改 Track.isMuted |
LocalTrackPublication.mute() / unmute() | 只有那一份 publication 的接收者 | 不碰 | 改那一份的 isMuted |
mute 狀態不另外送訊號:接收端從收到的畫面判斷(收到佔位畫面即視為 mute)。
// 只停硬體(例如本地不再需要鏡頭)
localParticipant.setCamera(enabled: false)
// 只對 A 關掉畫面:A 收到佔位畫面,其他人照常,硬體繼續跑
try await publicationToA.mute()
// 對所有人關掉畫面(鏡頭硬體停止,不改 isMuted)
try await localParticipant.set(source: .camera, enabled: false)