2009-05-22 8 views
3

Ich möchte in einer iPhone OS App einen Soundclip abspielen können. Ich habe Informationen über sowohl NSSound als auch AVFoundation als Mittel für das Erhalten von Soundclips auf einem iPhone OS-Gerät gesehen, aber ich bin immer noch nicht klar auf das Thema und könnte etwas Hilfe verwenden. Keine Notwendigkeit, es für mich Schritt für Schritt im eigentlichen Code zu buchstabieren, aber wenn jemand mir einen Hinweis geben könnte, in welche Richtung (dh auf welche Klassen ich mich konzentrieren sollte), in die ich mich bewegen sollte, werde ich füllen in den Blanks selbst. Also, was ist die einfachste Art, einen Soundclip in einer iPhone App abzuspielen?Was ist die einfachste Art, einen Soundclip in einer iPhone App abzuspielen?

Antwort

8

Apple-Artikel zu diesem Thema hat, siehe: this link

AVAudioPlayer ist die einfachste Art und Weise Töne beliebiger Länge zu spielen, Looping oder nicht, aber es erfordert iPhone OS 2.2 oder höher. Ein einfaches Beispiel:

NSString *soundFilePath = 
       [[NSBundle mainBundle] pathForResource: @"sound" 
               ofType: @"wav"]; 

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath]; 

AVAudioPlayer *newPlayer = 
       [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL 
                 error: nil]; 
[fileURL release]; 

[newPlayer play]; 

[newPlayer release]; 

Es wird praktisch jedes Datei-Format (AIFF, WAV, mp3, aac) Denken Sie daran, die Sie nur eine mp3/aac-Datei zu einem Zeitpunkt, spielen.

+0

Nicht sicher über iOS 2.2 und höher, aber es ist durchaus möglich, mehrere MP3s gleichzeitig mit vielen Instanzen von AVAudioPlayer zu spielen. – Jonny

+0

Das sofortige Loslassen des Players kann zu Problemen führen. – Rizon

6

Hier ist der einfachste Weg, ich weiß von:

  1. Konvertieren Sie Ihre Audio-Datei caf (Verwendung afconvert Kommandozeilen-Tool) und zu Ihrem Projekt hinzufügen.

    caf steht für Core Audio Format (ich glaube, ...)

  2. Suchen Sie nach SoundEffect.h und .m in Beispielcode von Apple. Ich glaube, sowohl Metronom als auch BubbleLevel haben es.

  3. kopieren Projekt
  4. schreiben Code wie unten:

    SoundEffect *SimpleSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"soundfile" ofType:@"caf"]]; 
    [SimpleSound play]; 
    [SimpleSound release]; 
    

Studie SoundEffect.m eine Idee der einfachen Handhabung Sound zu bekommen.

+0

Nur umgesetzt, das funktioniert super! Ich muss nur Audacity benutzen, um wav -> wav zu konvertieren, um afconvert arbeiten zu lassen, keine anderen Probleme. – JOM