Bu sorunu iyi bir 48 saat boyunca çözmeye çalışıyorum ve hiçbir şeyle karşılaşmadım. Farklı http canlı akışlarını oynayan 2 AVPlayer nesnesim var. Açıkçası, ikisi de aynı anda ses çalmasını istemiyorum, bu yüzden videolardan birini kapatmanın bir yoluna ihtiyacım var. Bu işe ne zaman AVPlayer oynayan bir müzik parçası muting'in Elma suggests thisBir AVPlayer'da bir HTTP Canlı Akışı'nı kapatın
...
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];
(birçok tekrarlamalar sonra), ben
AVPlayerItemTrack enabled özelliğini buldu ve HAYIR için bu ayarı çalıştı. Ayrıca hiçbir şey. Bu herhangi bir şey olarak kayıt bile yapmıyor çünkü bir NSLog (@ "% x", track.enabled) denediğimde, hala 1
bir kayıp olduğunu düşünüyorum ve düşünemiyorum iyi bir cevap almak için okuyabildiğim ve yeniden okuyabileceğim başka bir doküman parçası. Dışarıda kimse yardımcı olabilir, bu harika olurdu.
* Güncelleme: Ben Apple bir tutun var ve AVFoundation ekibine göre, bir HLS videonun bir parçayı kapatmak veya devre dışı bırakmak mümkün değildir. Ben şahsen, bu bir hata olduğunu hissediyorum bu yüzden bir bug report gönderdim (Apple'ın bunun bir sorun olduğunu söylemek için aynısını yapmalısınız). Ayrıca, 'u deneyebilir ve geri bildirim sayfasından bir feature enhancement request gönderin.
Cevabınız için teşekkürler, çözmeyi denediğim sorunlardan biri için benim için bir yol açtı. Ben aynı şeyi OpenAL ile yapmaya çalışıyorum ama bunu yapmanın düz bir yolunu bulamadım.AlSourcef (sourceID, AL_GAIN, volume) aracılığıyla sesi azaltabileceğinizi biliyorum; ama nasıl kapatılacağını bilmiyorum, bunun için hızlı bir çözüm var mı? – chathuram