2014-10-30 14 views
5

Come posso riprodurre un file audio con AVFoundation in un Swiftplayground? Idealmente, il file si troverebbe in un URL, non nell'unità locale, ma non è importante.Riproduzione di un suono in uno Swift Playground

+0

Qualche codice che hai provato fino ad ora? –

+0

Guarda questo link http://stackoverflow.com/questions/24043904/creating-and-playing-a-sound-in-swift?rq=1 –

+0

Non sono sicuro che tu possa. Si può creare una nuova cartella 'Risorse' sotto il contenuto di' playground' e l'ulteriore Playground lo troverà con un percorso simile a: riproduzione file: ///var/folders/74/d78g19sj65bc6z2n6gjw9n4r0000gn/T/com.apple. dt.Xcode.pg/applications/YourApp-67685-8.app/Want_You.mp3 ma 'avPlayer.prepareToPlay()' restituirà sempre 'false'. –

risposta

2

Sto girovagando nel buio su questo anch'io, ma penso che possa essere dovuto a qualche limitazione di campi da gioco veloci. Considerate questo codice:

#!/usr/bin/swift 

import Cocoa 
import AVFoundation 

var error: NSError? 

println("Hello, Audio!") 
var url = NSURL(fileURLWithPath: "/Users/somebody/myfile.mid") // Change to a local midi file 
var midi = AVMIDIPlayer(contentsOfURL: url, soundBankURL: nil, error: &error) 
if midi == nil { 
    if let e = error { 
     println("AVMIDIPlayer failed: " + e.localizedDescription) 
    } 
} 
midi.play(nil) 
while midi.playing { 
    // Spin (yeah, that's bad!) 
} 

Se corriamo questo rapido sceneggiatura nel terminale, funziona benissimo e riproduce il file MIDI, ma se si esegue il codice in un parco giochi, si ottiene

AVMIDIPlayer non riuscito: impossibile completare l'operazione. (errore com.apple.coreaudio.avfaudio -1.)

Sul lato positivo, essere in grado di eseguirlo in un terminale indica che il codice funziona.

+0

Sto ottenendo gli stessi risultati ... – cfischer

1

Questo funziona su un progetto che non ho provato su Playground. Per prima cosa trascina il suono sul tuo progetto e, se necessario, scegli di copiare per la tua destinazione e seleziona "aggiungi alla destinazione" alla tua app.

import Cocoa 
import AVFoundation 


var beepSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("beep", ofType: "aif")!) 
func initBeep(){ 
    beepPlayer = AVAudioPlayer(contentsOfURL: beepSound, error: nil) 
    beepPlayer.prepareToPlay() 
} 

func playBeepSound(){ 
    beepPlayer.play() 
} 
func applicationDidFinishLaunching(aNotification: NSNotification?) { 

    initBeep() 
} 
@IBAction func btnPlayBeepSound(sender: AnyObject) { 
    playBeepSound() 
} 
Problemi correlati