2017-05-26 3 views
0

Ich versuche, ein Beispiel mp3 von einer URL zu streamen. Es ist eine sehr kleine Beispieldatei. Wenn ich jedoch die Wiedergabetaste drücke, passiert nichts. Nun, es spielt kein Ton.Swift 3: stream MP3-Datei vom Server

Ich bin ziemlich neu zu Swift und sehr viel ein Noob, also hier ist der volle View Controller, da ich unsicher bin, was Sie brauchen könnten.

import UIKit 
    import AVKit 
    import AVFoundation 
    import Foundation 

    class ViewController: UIViewController { 

     @IBAction func playButton(_ sender: Any) { 

      print("pressed") 
      let urlstring = "http://cdn.mos.musicradar.com/audio/samples/80s-heat-demos/AM_Eighties08_85-01.mp3" 
      let url = NSURL(string: urlstring) 
      print("the url = \(url!)") 
      downloadFileFromURL(url: url!) 

     } 



     override func viewDidLoad() { 
      // Do any additional setup after loading the view 
     } 



     func downloadFileFromURL(url:NSURL){ 
      weak var weakSelf = self 
      var downloadTask:URLSessionDownloadTask 
      downloadTask = URLSession.shared.downloadTask(with: url as URL, completionHandler: { (URL, response, error) -> Void in 
      print("URL = \(URL)") 
      weakSelf!.plays(url: URL! as URL) 

      }) 

      downloadTask.resume() 

     } 



     func plays(url:URL) { 

      print("playing \(url)") 

      do { 

       var playerItem = AVPlayerItem(url: url as URL) 

       player = AVPlayer(url : url) 

       player.volume = 1.0 

       player.play() 

      } catch let error as NSError { 



       print(error.localizedDescription) 

      } catch { 

       print("AVAudioPlayer init failed") 

      } 

     } 

    } 

in meiner Konsole ich dies immer:

gedrückt

die url = http://cdn.mos.musicradar.com/audio/samples/80s-heat-demos/AM_Eighties08_85-01.mp3

URL = Optional (file: /// private/var/mobile/Container /Data/Application/C255E8F4-DDBA-43BB-BC33-AF71C08BBDFD/tmp/CFNetworkDownload_tm0O8v.tmp)

spielende Datei:///private/var/mobile/Containers/Data/Application/C255E8F4-DDBA-43BB-BC33-AF71C08BBDFD/tmp/CFNetworkDownload_tm0O8v.tmp

URL = Optional (file: /// private/var/mobile/Behälter/Daten/Anwendungen/C255E8F4-DDBA-43Bb-BC33-AF71C08BBDFD/tmp/CFNetworkDownload_J1f2LF.tmp)

spielen file: /// private/var/mobile/Container/Daten/Anwendung/C255E8F4-DDBA-43Bb-BC33- AF71C08BBDFD/tmp/CFNetworkDownload_J1f2LF.tmp

Kann mir jemand helfen dieses Problem lösen? Ich möchte diesen Sound nur auf Knopfdruck vom Server aus nicht lokal abspielen können.

+0

Versuchen Sie, Ihre iPhone-Gerät-Lautstärke zu überprüfen – Ved

+0

@Ved Wenn Sie die Lautstärke überprüfen möchten? Ich überprüfte Simulator und Telefon. Das Volumen war gestiegen. – JamesG

+0

Warst du im Silent/Vibration-Modus? – Larme

Antwort

1

Bitte versuchen Sie, diesen Code für Ihre Player-Funktion zu verwenden.

+0

Danke :) das hat perfekt für mich gearbeitet. Weißt du, wenn es eine Möglichkeit gibt zu sehen, wie viel gepuffert ist, wie eine Fortschrittsanzeige oder sogar nur ein Ausdruck() scheint es einige Zeit zu brauchen, um zu spielen, wäre es schön, eine wartende Nachricht anzuzeigen. – JamesG

+0

Ihre Begrüßung :) für die Überprüfung, wie viel gepuffert Sie können URLSessionDelegate implementieren func urlSession (_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData BytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {} – MageNative