Ajustar el volumen de reproducción de AVPlayer

El único método para conseguir un cambio de volumen en la actualidad jugando AVPlayer elementos es seguir este proceso;

  • De descarga que se esté reproduciendo actualmente AVPlayerItem de los activos de las
  • Agarrar el actual tiempo de reproducción para que AVPlayerItem
  • Cargar el recurso a una nueva AVPlayerItem
  • Reemplazar el actual AVPlayerItem con la nueva
  • Espere a que el currentItem a cambiar en el AVPlayer
  • Preparar su AudioMix y buscan anterior tiempo de reproducción

He perdido un principio básico en algún lugar o está destinado a ser este complicado para una gestión sencilla de los niveles de volumen?

No tengo AVAudioPlayer porque tengo que cargar las pistas de iTunes en el reproductor.

  • Es AVPlayer un tercero marco/aplicación?
  • AVAudioPlayer no es el problema aquí … estamos hablando de AVPlayer, desde el AVAudioPlayer no puede controlar el ipod-biblioteca de Url
InformationsquelleAutor SageAMDP | 2010-07-16

4 Kommentare

  1. 21

    Puede cambiar el volumen mientras se reproduce mediante el método descrito aquí:

    http://developer.apple.com/library/ios/#qa/qa1716/_index.html

    Mientras que el texto del artículo parece sugerir que sólo puede ser utilizado para silenciar el audio, puede ajustar el volumen a cualquier cosa que te gusta, y puedes configurarlo después de que el audio se reproduce. Por ejemplo, suponiendo que la instancia de AVAsset se llama «activo», la instancia de AVPlayerItem se llama «playerItem», y el volumen que desee conjunto se llama «volumen», el código siguiente debe hacer lo que usted quiere:

    NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio];
    
    NSMutableArray *allAudioParams = [NSMutableArray array];
    for (AVAssetTrack *track in audioTracks) {
      AVMutableAudioMixInputParameters *audioInputParams = 
        [AVMutableAudioMixInputParameters audioMixInputParameters];
      [audioInputParams setVolume:volume atTime:kCMTimeZero];
      [audioInputParams setTrackID:[track trackID]];
      [allAudioParams addObject:audioInputParams];
    }
    
    AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
    [audioMix setInputParameters:allAudioParams];
    
    [playerItem setAudioMix:audioMix];
    • Gracias por ese enlace. He encontrado una pieza muy importante de información en la parte inferior de la página. «Nota: AVAudioMix solo soporta archivos de los activos.» Yo no podía entender por qué mi fade estaba roto y ahora lo sé, porque mi primera prueba fue con archivos locales y ahora son de streaming. Parece que no hay manera de ajustar el volumen para la transmisión de las pistas utilizando AVPlayer…?
    • Interesante. Parece ser que trabajan con streaming de medios de comunicación para mí, así que probablemente hay algún otro factor que tiene que ser así. Me gustaría armar una simple aplicación de prueba en algún momento, cuando tengo tiempo.
    • me pueden ayudar para que este código AVPlayer *avPlayer = [[AVPlayer alloc] initWithURL:songURL]; [avPlayer play]; Qué necesito para utilizar dicho código largo cuando tengo este sencillo líneas..
    • Esta cosa funciona, pero en mayores de dispositivos como el iPod Touch (iOS 4.0), si yo trato de hacerlo manualmente después de buscar el jugador (avance rápido/rebobinado) como este, [player seekToTime:newTime];, entonces esta técnica deja de funcionar. El volumen no cambia. Alguna idea de por qué está sucediendo esto?
    • De la lectura de documentos, entiendo la idea de que Apple no nos quieren para el control de volumen de MPVolumeView. Entonces, ¿crees que este código será aprobado?
    • Esto parece un gran trabajo en el dispositivo, pero no funciona en airplay. Los pensamientos?

  2. 4

    Ha intentado usted acaba de preparar un AVMutableAudioMix y configuración en el AVPlayerItem mientras que todavía está jugando? Usted debe ser capaz de hacer el AVPlayer para su currentItem, que puede proporcionar a sus pistas de que el AVMutableAudioMixInputParameters para la AVMutableAudioMix debe de referencia. Los tiempos en los que el suministro de la mezcla son relativos cuando la mezcla se aplica.

    • Sólo el ajuste de [[jugador currentItem] setAudioMix:audioMix]; (de un UISlider valueChanged acción) está bien.
  3. 2
    - (IBAction)sliderAction:(id)sender {
    NSLog(@"slider :%f ", self.mixerSlider.value);
    
    NSArray *audioTracks = [self.videoHandler.videoAsset tracksWithMediaType:AVMediaTypeAudio];
    
    //Mute all the audio tracks
    NSMutableArray *allAudioParams = [NSMutableArray array];
    for (AVAssetTrack *track in audioTracks) {
        AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters];
        [audioInputParams setVolume:self.mixerSlider.value atTime:kCMTimeZero];
        [audioInputParams setTrackID:[track trackID]];
        [allAudioParams addObject:audioInputParams];
    }
    AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
    [audioMix setInputParameters:allAudioParams];
    
    [[self.mPlayer currentItem] setAudioMix:audioMix]; }

    Este método es llamado por el valor del control deslizante cambiado. Y se le puede llamar mientras se reproduce el vídeo.

  4. 0

    Tenga en cuenta que el AVMutableAudioMixbasado en el método descrito en la pregunta original (y varias respuestas) sólo obras con los recursos basados en archivos, no de streaming de medios de comunicación.

    Esto se detalla en un documento escrito por parte de Apple, aquí:

    https://developer.apple.com/library/content/qa/qa1716/_index.html

    Cuando he intentado hacerlo con streaming de audio, no he recibido ninguna pista regresó de AVAsset del tracks(withMediaType:) método (Swift).

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea