- RevueSDK
- TrackRecorder
Class
TrackRecorder
Track 錄影器 — 將單一 VideoTrack + 單一 AudioTrack 錄製為 fMP4 檔案
class TrackRecorderOverview
獨立物件,不綁定在 Room 或 Participant 上。 可同時建立多個 TrackRecorder 各自錄不同內容。
多路混音由外部 AudioCompositor 負責,多路合成由外部 VideoCompositor 負責, TrackRecorder 只接單一 track(混音/合成後的 outputTrack)。
// === 錄自己(單一路)===
let recorder = TrackRecorder(
videoTrack: localParticipant.firstCameraVideoTrack,
audioTrack: localParticipant.firstAudioTrack
)
try recorder.startRecording(fileName: "self")
// === 錄完整會議(外部先合成再錄)===
let mix = AudioCompositor()
try mix.start()
mix.addTrack(localParticipant.firstAudioTrack!)
mix.addTrack(participantA.firstAudioTrack!)
let recorder = TrackRecorder(
videoTrack: videoCompositor.outputTrack,
audioTrack: mix.outputTrack,
videoFps: 30,
videoSize: CGSize(width: 1920, height: 1080)
)
try recorder.startRecording(fileName: "meeting")
// === 只錄音訊 ===
let audioOnly = TrackRecorder(videoTrack: nil, audioTrack: mic)
// === 只錄視訊無聲 ===
let videoOnly = TrackRecorder(videoTrack: screen, audioTrack: nil)
Topics
Initializers
init(videoTrack: VideoTrack?, audioTrack: AudioTrack?, videoFps: UInt, videoSize: CGSize)建立 TrackRecorder
Instance Properties
let audioTrack: AudioTrack?要錄製的 AudioTrack(nil = 只錄視訊無聲)
var diskSpaceWarning: DiskSpaceWarning?磁碟空間警告事件(Task 3 實作)
var isRecording: Bool是否錄影中(便捷屬性)
var lastError: Error?錄影中途錯誤(Task 4 實作) 開始時的錯誤走
startRecordingthrows,這裡只處理錄影過程中的非同步錯誤var lastFinishedFile: RecordingFileInfo?最近一次寫完的錄影檔(finalize 完成才設值)
var state: RecorderState錄影狀態(轉發 engine.state)
let videoTrack: VideoTrack?要錄製的 VideoTrack(nil = 只錄音訊)
Instance Methods
func pauseRecording()暫停錄影
func resumeRecording()繼續錄影
func startRecording(fileName: String) throws開始錄影
func stopRecording(completion: ((RecordingFileInfo?) -> Void)?)停止錄影(engine 在背景 finalize,不阻塞呼叫端)
Type Properties
static var diskSpaceCriticalThreshold: Int64磁碟空間臨界閾值(預設 50 MB)
static var diskSpaceWarningThreshold: Int64磁碟空間警告閾值(預設 100 MB)
static var recordingsDirectory: URL錄影檔存放目錄(Documents/Recordings/)
Type Methods
static func availableDiskSpace() -> Int64查詢當前可用磁碟空間(bytes)
static func deleteAllRecordings() throws刪除所有錄影檔
static func deleteRecording(at: URL) throws刪除指定路徑的錄影檔
static func deleteRecording(fileId: String) throws刪除指定錄影檔(by ID)
static func getRecordingList() -> [RecordingFileInfo]取得所有錄影檔列表