Ho cercato di risolvere questo problema per ben 48 ore e non ho trovato nulla. Ho 2 oggetti AVPlayer che riproducono diversi live streaming http. Ovviamente, non voglio che suonino entrambi contemporaneamente, quindi ho bisogno di un modo per disattivare l'audio di uno dei video.Disattiva un flusso live HTTP in un AVPlayer
di Apple suggests this per silenziare una traccia audio giocare in AVPlayer ...
NSMutableArray *allAudioParams = [NSMutableArray array];
for (AVPlayerItemTrack *track in [_playerItem tracks]) {
if ([track.assetTrack.mediaType isEqualToString:AVMediaTypeAudio]) {
AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters];
[audioInputParams setVolume:0.0 atTime:CMTimeMakeWithSeconds(0,1)];
[audioInputParams setTrackID:[track.assetTrack trackID]];
[allAudioParams addObject:audioInputParams];
// Added to what Apple Suggested
[track setEnabled:NO];
}
}
AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix];
[audioZeroMix setInputParameters:allAudioParams];
[_playerItem setAudioMix:audioZeroMix];
Quando questo non ha funzionato (dopo molte iterazioni), ho trovato la proprietà enabled di AVPlayerItemTrack e ha cercato impostazione che a NO. Inoltre niente. Questo non viene nemmeno registrato come qualcosa, perché quando provo un NSLog (@ "% x", track.enabled), viene comunque visualizzato come 1.
Sono in perdita e non riesco a pensare di un altro pezzo di documentazione che posso leggere e rileggere per ottenere una buona risposta. Se qualcuno là fuori può aiutare, sarebbe fantastico.
* Aggiornamento: Ho ottenuto una sospensione di Apple e secondo il team AVFoundation, è impossibile escludere o disattivare una traccia di un video di HLS. Personalmente ritengo che questo sia un bug, quindi ho inviato un messaggio bug report (dovresti fare lo stesso per dire a Apple che questo è un problema). Puoi anche provare e inviare un feature enhancement request tramite la loro pagina di feedback.
Grazie per la risposta, ho aperto un percorso per me per uno dei problemi che stavo cercando di risolvere. Sto cercando di fare la stessa cosa con OpenAL ma non ho trovato un modo semplice per farlo.So che puoi ridurre il volume tramite alSourcef (sourceID, AL_GAIN, volume); ma non sai come disattivarlo, c'è una soluzione rapida a questo? – chathuram