fix: use kCMPersistentTrackID_Invalid for HLS audio tap

Root cause found: HLS variant switching changes audio trackID mid-recording
(e.g. 2→10). Binding to a specific trackID causes tap to never fire.
Using kCMPersistentTrackID_Invalid (wildcard) matches all audio tracks
regardless of variant switches.
This commit is contained in:
yumoqing 2026-06-28 10:24:04 +08:00
parent 4ba3ccde21
commit cff2bd2793

View File

@ -375,9 +375,10 @@ final class PlayerRecorder: NSObject {
return
}
// AudioMix
// 使 kCMPersistentTrackID_Invalid
// HLS variant trackID 210 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)