2011-05-31 32 views
16

Estoy intentando reproducir varios sonidos al mismo tiempo.Reproducir varios archivos de audio con AVPlayer

El enfoque que inicialmente he tomado es crear varios jugadores, pero parece equivocado.

Cuál es la mejor manera de reproducir varios archivos de audio al mismo tiempo.

Es a través de hacerlos AVAssets, pero en este caso, ¿cómo podría detenerlos y reproducirlos cuando quiera?

Realmente agradezco su ayuda.

La razón por la que necesito AVPlayer es para buscar sonidos de la biblioteca del iPod.

Finalmente recibí una respuesta de TechSupport del equipo Apple Dev Team y parece que estoy en el camino correcto cuando decidí usar varios AVPlayer.

+0

estoy bastante seguro de que múltiples AVAudioPlayers es el camino a seguir si usted tiene que utilizar AVAudioPlayers. Solo configúrelos y accionelos al mismo tiempo. Recuerde liberar cualquier asignación y debería estar bien. Solo tenga en cuenta que AVAudio es algo lento en comparación con algo como openAL. –

+0

el problema con 2 jugadores que estoy enfrentando es ese. Una vez que empiezo a jugar el segundo jugador mientras el primero está encendido, el primero se detiene por una fracción de segundo y luego continúan jugando. –

+0

No he intentado implementar openAL con la biblioteca iphone todavía, pero hay un excelente administrador de sonido openAL que ya está configurado y optimizado. Vea si ayuda: http://www.71squared.com/2011/01/latest-sound-manager/ –

Respuesta

9

Para cada sonido que desee hacer, cree un nuevo AVPlayer.

NSURL *url = [NSURL URLWithString:pathToYourFile];
AVPlayer *audioPlayer = [[AVPlayer alloc] initWithURL:url];
[audioPlayer play];

+0

@David Morton, como la publicación original descrita en la parte inferior de su propia pregunta, y como esto la respuesta sugiere, usarías un AVPlayer diferente para cada sonido. Si no necesita que sus sonidos se transmitan y puede usar sonidos en su entorno limitado, puede usar varias instancias de AVAudioPlayer, que es lo que hace mi aplicación. –

+0

Utilizo varias instancias. El problema aún existe. –

0

Bueno, mi solución viene de la experiencia. Puedo cocinar rápidamente un proyecto si es necesario. Pero también requiere el uso de un MoMu API en Stanford. Implica la creación de objetos WvIn y WvOut para leer los archivos. Las muestras de audio de estos objetos simplemente necesitan alimentarse en el búfer de salida para reproducir los archivos simultáneamente. Aunque la API utiliza AVFoundation, no hay un uso explícito de AVFoundation en este proyecto.

1

Nunca he respondido una pregunta aquí y no sé en nadie todavía está esperando una respuesta a esto, pero aquí está mi opinión ... Inténtalo y debería funcionar, actualmente lo estoy usando para jugar 12 plus muestras de audio simultáneas. Me disculpo si estoy haciendo algo newbish ..

se pulsa un botón y ejecutar este código ...

Pero primero es necesario:

  1. necesidad de importar AVFoundation para proyectar y # importar en .h archivo así podemos reproducir sonido con esto.
  2. Necesito poner "AVAudioPlayer * myAudio;" sin comillas, por supuesto, en algún lugar de la parte superior (generalmente en la parte superior de viewDidLoad).

A continuación, sólo ...

-(IBAction)playButtonPressed:(id)sender { 

    NSURL *yourMusicFile; 
    yourMusicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"your_Song_Name" ofType:@"mp3"]]; 

    myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 
    [myAudio play]; 
    NSLog(@"Button -playButtonPressed- has been pressed!"); 
} 
Cuestiones relacionadas