2016-11-28 2 views
0

Ich entwickle einen Audio-Player in Swift und ich brauche 2 Tasten (Play und Stop), um es zu steuern. Ich habe den folgenden Code verwendet:Wie man einen AVAudioPlayer in swift3 spielt und stoppt?

override func viewDidLoad() { 
    super.viewDidLoad() 

let urlstring = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3" 
    let url = NSURL(string: urlstring) 
    print("the url = \(url!)") 
    downloadFileFromURL(url: url!) 

          } 

    func downloadFileFromURL(url:NSURL) { 
    var downloadTask:URLSessionDownloadTask 
    downloadTask = URLSession.shared.downloadTask(with: url as URL, completionHandler: { (URL, response, error) -> Void in 

     self.play(url: URL! as NSURL) 

    }) 

    downloadTask.resume() 

             } 

func play(url:NSURL) { 
    print("playing \(url)") 

    do { 
     self.SoundPlayer = try AVAudioPlayer(contentsOf: url as URL) 
     SoundPlayer.prepareToPlay() 
     SoundPlayer.volume = 1.0 
     SoundPlayer.play() 
    } catch let error as NSError { 
     //self.player = nil 
     print(error.localizedDescription) 
    } catch { 
     print("AVAudioPlayer init failed") 
    } 

         } 

@IBAction func Play(_ sender: Any) { 

    SoundPlayer.play() 

} 


@IBAction func Stop(_ sender: Any) { 

    SoundPlayer.stop() 

} 

Grundsätzlich, wenn der Benutzer die App öffnet, startet die MP3-Audiodatei automatisch. Deshalb habe ich 2 zusätzliche Buttons, Start und Stop, erstellt und möchte diesen Audio Player mit ihnen steuern. Würdest du mir bitte raten, wie es geht, weil sie jetzt nicht mit dem Audio Player verbunden sind und keine Aktion ausgeführt wird, wenn ich darauf klicke.

+0

Haben Sie überprüfen, um zu spielen, dass Soundplayer nicht null in der Play/Stop-funcs? –

+0

Sie sind nil ich denke, aber ich weiß nicht, wie man sie repariert – Dakata

+0

Wenn sie Null sind, dann würde ich annehmen, dass Sie den Bezug zu ihnen irgendwo verlieren. Wie definierst du den var SoundPlayer? –

Antwort

0

Wenn Sie die Datei nur während des Streams abspielen möchten, rufen Sie die Daten von URL ab und geben Sie sie an die AVAudioPlayer weiter.

if let theURL = URL(string: "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3") { 
    if let data = try? Data(contentsOf: theURL){ 
     if let audioPlayer = try? AVAudioPlayer(data: data) { 
     print("Done") 
     audioPlayer.play() 
     } else { 
     print("Noo") 
     } 

    } 
} 

AVAudioPlayer(contentsOf: url as URL) kann oft nicht Daten von Remote-Standort abrufen.

Sie können auch andere Optionen prüfen, wie AVPlayer Dateien

how can i play remote .mp3 file in my ios application?