Ich versuche, eine Audiodatei in meiner iOS-App abzuspielen. Dies ist mein aktueller Code
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];
Ich habe gerade ein paar andere Beiträge geprüft, aber alle machen im Allgemeinen dasselbe. Ich erhalte keine Fehlermeldung, höre jedoch kein Audio auf dem Simulator oder Gerät.
Dies ist der Pfad, den ich für die Audiodatei im Simulator bekomme
/Users/username/Library/Application Support/iPhone Simulator/5.1/Applications/long-numbered-thing/BookAdventure.app/test.m4a
Jede Hilfe wird geschätzt!
Möglicherweise sollten Sie versuchen, die NSBundle
-Methode pathForResource:ofType:
-Methode zu verwenden, um den Pfad zur Datei zu erstellen.
Der folgende Code sollte eine Audiodatei erfolgreich abspielen. Ich habe es nur mit einem mp3
verwendet, aber ich kann mir vorstellen, dass es auch mit m4a
funktionieren sollte. Wenn dieser Code nicht funktioniert, können Sie versuchen, das Format der Audiodatei zu ändern. Für diesen Code befindet sich die Audiodatei im Hauptverzeichnis des Projekts.
/* 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];
Ok, also probiere es aus:
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];
Stellen Sie außerdem sicher, dass Sie die richtigen Importe durchführen:
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
Sie müssen einen strong - Verweis auf 'AVAudioPlayer' speichern.
@property (strong) AVAudioPlayer *audioPlayer;
Wenn Sie sicher sind, dass sich Ihre Audiodatei in den folgenden Ressourcen befindet, sollte sie abgespielt werden.
Projekt> Phasen erstellen> Kopieren
Zum Abspielen einer Datei mit der Erweiterung .caf, .m4a, .mp4, .mp3, .wav, .aif
Laden Sie die folgenden zwei Dateien von GitHub herunter.
SoundManager.h
SoundManager.m
Fügen Sie diese Dateien Ihrem Projekt hinzu
Hinzufügen von Audiodateien zum Ressourcenordner ( Beispieldateien )
mysound.mp3, song.mp3
Importieren Sie die Header-Datei in die gewünschte Datei
#import "SoundManager.h"
Fügen Sie die folgenden zwei Zeilen in - (void) viewDidLoad hinzu.
[SoundManager sharedManager].allowsBackgroundMusic = YES;
[[SoundManager sharedManager] prepareToPlay];
Verwenden Sie die folgende Zeile, um den Sound abzuspielen (mysound.mp3)
[[SoundManager sharedManager] playSound:@"mysound" looping:NO];
Verwenden Sie die folgende Zeile, um den Ton zu stoppen (mysound.mp3)
[[SoundManager sharedManager] stopSound:@"mysound"];
Sie können auch Musik (song.mp3) als abspielen
[[SoundManager sharedManager] playMusic:@"song" looping:YES];
Und kann Musik aufhören wie
[[SoundManager sharedManager] stopMusic];
Complete Die Dokumentation ist auf GitHub
Importieren Sie zuerst dieses Framework in Ihre Datei
#import <AVFoundation/AVFoundation.h>
Dann deklarieren Sie eine Instanz von 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];
Schnell 4.2
var soundFilePath = "\(Bundle.main.resourcePath ?? "")/test.m4a"
var soundFileURL = URL(fileURLWithPath: soundFilePath)
var player = try? AVAudioPlayer(contentsOf: soundFileURL)
player?.numberOfLoops = -1 //Infinite
player?.play()
So spielen Sie Ihre Bundle-Audiodatei mit dem folgenden Code ab, wenn Sie die System-Sound-ID erstellen
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]];
}
Sie können den Ton mit dem folgenden Code abspielen
AudioServicesPlaySystemSound([[alarmToneIdList objectAtIndex:row]unsignedLongValue]);
Um dies zu erreichen, muss das Framework in Ihren Xcode eingefügt werden
AudioToolbox
Schließlich müssen die folgenden Header-Dateien in den Controller importiert werden
#import AudioToolbox/AudioToolbox.h
#import AudioToolbox/AudioServices.h
Aktualisiert für Swift 4 Spielen aus dem Hauptpaket - Nur für iOS 11
import AVFoundation
var player: AVAudioPlayer?
Mit dem folgenden Code wird die Sounddatei geladen und abgespielt. Falls erforderlich, wird ein Fehler ausgegeben.
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)
}