RevueSDK · Swift reference Guides

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)