2016-09-10 3 views
3

Ich muss Audio-Player erstellen. Ich bekomme Audio von der URL und ich lade Audio von der URL herunter, dann spiele ich es. Aber ich brauche Audio beim Audio-Download, wie kann ich das tun?Wie Audio beim Herunterladen von URL wiedergeben?

Dies ist mein Code, wie es von url spielen:

func URLSession(session: NSURLSession, 
       downloadTask: NSURLSessionDownloadTask, 
       didFinishDownloadingToURL location: NSURL){ 
    do { 
     loadingView.hidden=true 
     actInd.stopAnimating() 
     UIApplication.sharedApplication().networkActivityIndicatorVisible = false 
     player=try AVAudioPlayer(contentsOfURL: location) 
     player?.delegate=self 
     selectedAudio.status=true 
     selectedAudio.isDownload=true 
     player?.enableRate=true 
     switch speedType_Index { 
     case 0: 
      appDelegate.player?.rate=Float(1) 
      break 
     case 1: 
      appDelegate.player?.rate=Float(1.5) 
      break 
     case 2: 
      appDelegate.player?.rate=Float(2) 
      break 
     case 3: 
      appDelegate.player?.rate=Float(0.5) 
      break 
     default: 
      break 
     } 
     switch playingType_Index { 
     case 0: 
      appDelegate.player?.numberOfLoops = 0 
      break 
     case 1: 
      appDelegate.player?.numberOfLoops = -1 
      break 
     default: 
      break 
     } 
     player?.volume=Float(volume) 
     player?.play() 
     self.tableView.reloadData() 

    }catch let error as NSError{ 
     print(error.localizedDescription) 
    } 
} 

func URLSession(session: NSURLSession, 
       downloadTask: NSURLSessionDownloadTask, 
       didWriteData bytesWritten: Int64, 
          totalBytesWritten: Int64, 
          totalBytesExpectedToWrite: Int64){ 
    let progress=Float(totalBytesWritten)/Float(totalBytesExpectedToWrite); 
    bite.text=String(format: "%.1f%%",progress * 100) 
} 

Antwort

2

AVAudioPlayer kann nicht - sofort - Streamen von Inhalten von einer Remote-URL.

Wie heißt es in der documentation for AVAudioPlayer

Apple empfiehlt, diese Klasse für die Audiowiedergabe verwenden , wenn Sie Audiodaten von einem Netzwerk-Stream erfasst spielen oder erfordern sehr niedrige I/O-Latenz.

Siehe auch this thread zum Beispiel oder this answer.

Was Sie tun können, wenn Sie von einer Remote-URL streamen möchten, verwenden Sie dieanstelle der AVAudioPlayer. Dokumentation kann gefunden werden here

Um einen Player zu erstellen, der in der Lage ist zu streamen, würden Sie etwas in dieser Richtung tun.

var player = AVPlayer() //declared as a property on your class 

if let url = NSURL(string: "https://archive.org/download/testmp3testfile/mpthreetest.mp3") { 
    player = AVPlayer(URL: url) 
    player.volume = 1.0 
    player.play() 
} 

Hoffnung, die Ihnen hilft.

+0

Wie ich mit Streaming-Prozession, wie im Slider-Streaming zeigen –

+1

Ich habe keine Erfahrung mit diesem sorry, aber vielleicht können Sie in 'AVPlayerViewController' (https://developer.apple.com/library/ios/ Dokumentation/AVFoundation/Reference/AVPlayerViewController_Class /), die Ihnen Steuerelemente einschließlich eines Schiebereglers für den Fortschritt gibt. Sonst bin ich mir sicher, dass auch jemand anderes dieses Problem hatte, also sollten Sie in der Lage sein, eine Lösung zu finden. Versuchen Sie beispielsweise, nach 'AVPlayer Audio Streaming Controls 'zu googlen. – pbodsk

+0

danke für die hilfe –

Verwandte Themen