objective-c - mobs - wiki minecraft pe
Play Audio iOS Objective-C (6)
Estoy tratando de reproducir un archivo de audio en mi aplicación iOS. Este es mi código actual
NSString *soundFilePath = [NSString stringWithFormat:@"%@/test.m4a", [[NSBundle mainBundle] resourcePath]];
NSLog(@"%@",soundFilePath);
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[audioPlayer setVolume:1.0];
audioPlayer.delegate = self;
[audioPlayer stop];
[audioPlayer setCurrentTime:0];
[audioPlayer play];
He estado revisando un montón de otras publicaciones, pero todas generalmente hacen lo mismo. No recibo un error, pero no escucho ningún audio en el simulador o dispositivo.
Esta es la ruta que obtengo para el archivo de audio en el simulador
/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/long-numbered-thing/BookAdventure.app/test.m4a
¡Cualquier ayuda es apreciada!
Necesita almacenar una referencia fuerte a ''AVAudioPlayer''
@property (strong) AVAudioPlayer *audioPlayer;
Y si está seguro de que su archivo de audio está en Bundle Resources, debería reproducirse.
Proyecto> Fases de compilación> Copiar
Para reproducir el archivo de audio del paquete utilizando el código siguiente si genera el ID de sonido del sistema
for(int i = 0 ;i< 5;i++)
{
SystemSoundID soundFileObject;
NSString *audioFileName = [NSString stringWithFormat:@"Alarm%d",i+1];
NSURL *tapSound = [[NSBundle mainBundle] URLForResource: audioFileName
withExtension: @"caf"];
// Store the URL as a CFURLRef instance
CFURLRef soundFileURLRef = (__bridge CFURLRef) tapSound;
// Create a system sound object representing the sound file.
AudioServicesCreateSystemSoundID (
soundFileURLRef,
&soundFileObject
);
[alarmToneIdList addObject:[NSNumber numberWithUnsignedLong:soundFileObject]];
}
Puedes reproducir el sonido usando el código debajo
AudioServicesPlaySystemSound([[alarmToneIdList objectAtIndex:row]unsignedLongValue]);
Para lograr este marco a continuación, necesita agregar en su Xcode
AudioToolbox
Por último, debajo de los archivos de encabezado se debe importar en el controlador
#import AudioToolbox/AudioToolbox.h
#import AudioToolbox/AudioServices.h
Primero importa este marco a tu archivo
#import <AVFoundation/AVFoundation.h>
A continuación, declare una instancia de AVAudioPlayer
.
AVAudioPlayer *audioPlayer;
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"Name of your audio file"
ofType:@"type of your audio file example: mp3"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
audioPlayer.numberOfLoops = -1;
[audioPlayer play];
Tal vez deberías intentar usar el método pathForResource:ofType:
method para crear la ruta al archivo.
El siguiente código debería reproducir con éxito un archivo de audio. Solo lo he usado con un mp3
, pero me imagino que también debería funcionar con m4a
. Si este código no funciona, puede intentar cambiar el formato del archivo de audio. Para este código, el archivo de audio se encuentra en el directorio principal del proyecto.
/* Use this code to play an audio file */
NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"m4a"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite
[player play];
EDITAR
Bien, intenta esto:
NSString *soundFilePath = [NSString stringWithFormat:@"%@/test.m4a",[[NSBundle mainBundle] resourcePath]];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:nil];
player.numberOfLoops = -1; //Infinite
[player play];
Además, asegúrese de hacer las importaciones adecuadas:
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
Actualizado para Swift 4 Reproducción desde el paquete principal: solo iOS 11
import AVFoundation
var player: AVAudioPlayer?
El siguiente código carga el archivo de sonido y lo reproduce, devolviendo un error si es necesario.
guard let url = Bundle.main.url(forResource: "test", withExtension: "m4a") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
guard let player = player else { return }
player.play()
} catch let error {
// Prints a readable error
print(error.localizedDescription)
}
Para reproducir archivos con la extensión .caf, .m4a, .mp4, .mp3, .wav, .aif
Descarga los siguientes dos archivos de GitHub
SoundManager.h
SoundManager.m
Agregue estos archivos a su proyecto
También agregue archivos de audio a la carpeta de recursos ( archivos de muestra )
mysound.mp3, song.mp3
Importar archivo de encabezado en el archivo deseado
#import "SoundManager.h"
Y agregue las siguientes dos líneas en - (void) viewDidLoad
[SoundManager sharedManager].allowsBackgroundMusic = YES;
[[SoundManager sharedManager] prepareToPlay];
Use la siguiente línea para reproducir el sonido (mysound.mp3)
[[SoundManager sharedManager] playSound:@"mysound" looping:NO];
Use la siguiente línea para detener el sonido (mysound.mp3)
[[SoundManager sharedManager] stopSound:@"mysound"];
También puedes reproducir música (song.mp3) como
[[SoundManager sharedManager] playMusic:@"song" looping:YES];
Y se puede detener la música como
[[SoundManager sharedManager] stopMusic];
La documentación completa está en GitHub