2017-05-26 16 views
0

URLからサンプルmp3をストリーミングしようとしています。これは非常に小さなサンプルファイルです。しかし、再生ボタンを押しても何も起こりません。まあ、音は出ません。Swift 3:サーバーからのストリームMP3ファイル

私はSwiftとは非常に多くのnoobですので、ここでは完全なView Controllerが必要です。私のコンソールで

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") 

      } 

     } 

    } 

が、私はこれを取得しています:

URL

を押す= http://cdn.mos.musicradar.com/audio/samples/80s-heat-demos/AM_Eighties08_85-01.mp3

URLを=オプション(ファイル:///民間の/ var /モバイル/コンテナ/Data/Application/C255E8F4-DDBA-43BB-BC33-AF71C08BBDFD/tmp/CFNetworkDownload_tm0Ovv.tmp)

再生ファイル:/ //private/var/mobile/Containers/Data/Application/C255E8F4-DDBA-43BB-BC33-AF71C08BBDFD/tmp/CFNetworkDownload_tm0O8v.tmp

URL =オプション(ファイル:///民間の/ var /モバイル/コンテナ/データ/アプリケーション/ C255E8F4-DDBA-43BB-BC33-AF71C08BBDFDを/ tmp/CFNetworkDownload_J1f2LF.tmp)

再生中のファイル:///民間の/ var /モバイル/コンテナ/データ/アプリケーション/ C255E8F4-DDBA-43BB-BC33- AF71C08BBDFD/tmp/CFNetworkDownload_J1f2LF.tmp

誰でも私がこれを解決するのを手助けできますか?私はちょうどローカルではなくサーバーからボタンをクリックしてこのサウンドを再生できるようにしたい。

+0

ボリュームをチェックすることを意味している場合、あなたのiPhoneのデバイスのボリューム – Ved

+0

@Vedをクロスチェックしてみ?私はシミュレータと電話の両方をチェックしました。ボリュームアップしました。 – JamesG

+0

サイレントモード/バイブレーションモードでしたか? – Larme

答えて

1

あなたのプレーヤーの機能にこのコードを使用してみてください。

func plays(url:URL) { 

     print("playing \(url)") 

     do { 
      try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
      try AVAudioSession.sharedInstance().setActive(true) 

      player = try AVAudioPlayer(contentsOf: url) 
      guard let player = player else { return } 

      player.play() 
     } catch let error as NSError { 



      print(error.localizedDescription) 

     } catch { 

      print("AVAudioPlayer init failed") 

     } 

    } 
+0

ありがとう:)私のために完全に働いてくれてありがとう。進行状況インジケータのようにバッファリングされているかどうかを確認する方法があるかどうか、また待機中のメッセージを表示するのに時間がかかるように見えるprint()さえ知っていますか? – JamesG

+0

あなたの歓迎:)あなたがどの程度バッファリングされているかを調べるために、URLSessionDelegate func urlSession(_ session:URLSession、downloadTask:URLSessionDownloadTask、didWriteData bytesWritten:Int64、totalBytesWritten:Int64、totalBytesExpectedToWrite:Int64) – MageNative

関連する問題