diff --git a/Sources/PlayerRecorder.swift b/Sources/PlayerRecorder.swift index 5bf0dd7..e24f747 100644 --- a/Sources/PlayerRecorder.swift +++ b/Sources/PlayerRecorder.swift @@ -375,9 +375,10 @@ final class PlayerRecorder: NSObject { return } - // 创建 AudioMix + // 使用 kCMPersistentTrackID_Invalid 匹配所有音频轨道 + // HLS variant 切换会导致 trackID 变化(如 2→10),绑死具体 ID 会失效 let inputParams = AVMutableAudioMixInputParameters() - inputParams.trackID = audioTrackID + inputParams.trackID = kCMPersistentTrackID_Invalid inputParams.audioTapProcessor = tapRef let audioMix = AVMutableAudioMix() @@ -393,7 +394,7 @@ final class PlayerRecorder: NSObject { } print("[Recorder:DIAG] === installAudioTap DONE ===") - ctx.mixTrackID = audioTrackID + ctx.mixTrackID = kCMPersistentTrackID_Invalid // 写诊断日志 var diagLog = "=== installAudioTap Log ===\n" @@ -403,7 +404,8 @@ final class PlayerRecorder: NSObject { for (i, t) in itemTracks.enumerated() { diagLog += " itemTrack[\(i)]: trackID=\(t.assetTrack?.trackID ?? -1) mediaType=\(t.assetTrack?.mediaType.rawValue ?? "?") enabled=\(t.isEnabled)\n" } - diagLog += "Audio trackID used: \(audioTrackID)\n" + diagLog += "Audio trackID used: kCMPersistentTrackID_Invalid (wildcard, matches all)\n" + diagLog += "Discovered audio trackID: \(audioTrackID)\n" diagLog += "TapCreate status: \(tapStatus)\n" diagLog += "audioMix set: \(verifyMix != nil)\n" writeDiagLog(diagLog)