- RevueSDK
- VideoCompositor
Class
VideoCompositor
視訊合成器 — 將多路 VideoTrack 按合成模板合成為一路輸出(獨立工具)
class VideoCompositorOverview
不綁定 Room,用戶自己建立、設定、發布。
不能同時從多條執行緒呼叫,請在主執行緒呼叫;isRunning、currentTemplate 在呼叫的那條執行緒發出通知。
let compositor = VideoCompositor()
compositor.fps = 30
compositor.resolutionSize = CGSize(width: 1920, height: 1080)
compositor.start()
// 設定合成模板
let template = CompositeTemplate(trackPositions: [
VideoTrackPositionInfo(track: cameraTrack, normalizedRect: CGRect(x: 0, y: 0, width: 0.5, height: 1.0)),
VideoTrackPositionInfo(track: remoteTrackA, normalizedRect: CGRect(x: 0.5, y: 0, width: 0.5, height: 1.0)),
])
compositor.setTemplate(template)
// 預覽
videoView.track = compositor.outputTrack
// 發布給好友
if let output = compositor.outputTrack {
try await Room.shared.localParticipant.publish(videoTrack: output, to: participant)
}
// 停止(合成模板會被清掉,再 start 之後要重新 setTemplate)
compositor.stop()
Topics
Initializers
Instance Properties
var currentTemplate: CompositeTemplate?當前合成模板(唯讀);未設定或
stop()之後是 nilvar fps: Int合成幀率(預設 30 FPS);執行中修改,之後的畫面就會套用
var isRunning: Bool合成器是否運行中(唯讀)
var outputTrack: LocalVideoTrack?合成輸出 Track(可以本地預覽、發布給好友,或交給
TrackRecorder錄影)var resolutionSize: CGSize合成輸出解析度(預設 1280×720);執行中修改,之後的畫面就會套用 合成解析度 = 發送解析度,不做額外縮放
Instance Methods
func setTemplate(CompositeTemplate)設定合成模板
func start()啟動合成器
func stop()停止合成器,釋放所有資源