He estado tratando de solucionar este problema durante unas 48 horas y no he encontrado nada. Tengo 2 objetos AVPlayer que reproducen diferentes transmisiones en vivo de http. Obviamente, no quiero que ambos reproduzcan audio al mismo tiempo, así que necesito una forma de silenciar uno de los videos.Silenciar un HTTP Live Stream en un AVPlayer
de Apple suggests this para silenciar una pista de audio jugando en 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];
Cuando esto no funcionaba (después de muchas iteraciones), creo que la propiedad activada de AVPlayerItemTrack e intentaron establecer que en NO. Además nada. Esto ni siquiera se registra como algo que hace porque cuando pruebo un NSLog (@ "% x", track.enabled), todavía aparece como 1.
Estoy perdido y no puedo pensar de otra pieza de documentación que puedo leer y volver a leer para obtener una buena respuesta. Si alguien puede ayudar, eso sería fantástico.
* actualización: Tengo una bodega de Apple y de acuerdo con el equipo de AVFoundation, es imposible para activar o desactivar una pista de un video de HLS. Yo, personalmente, siento que esto es un error, así que envié un bug report (Debería hacer lo mismo para decirle a Apple que esto es un problema). También puede intentar y enviar un feature enhancement request a través de su página de comentarios.
Gracias por la respuesta, esto abrió un camino para mí por uno de los problemas que estaba tratando de resolver. Estoy tratando de hacer lo mismo con OpenAL, pero no encontré una manera directa de hacerlo.Sé que puedes disminuir el volumen a través de alSourcef (sourceID, AL_GAIN, volumen); pero no sé cómo silenciarlo, ¿hay alguna solución rápida para esto? – chathuram