播放声音时没有错误信息。我把一个print语句用于测试,url正在走向正确的道路。播放按钮点击,有时我听到微弱的点击,但就是这样。没有其他声音出来。我尝试过不同的mp3文件。如果删除mp3文件,我会收到错误消息。我检查了音量。
播放按钮位于第二个视图控制器中。主视图控制器具有表视图。当用户点击单元格时,它会将他带到此视图控制器。
// DetailVC.swift
import AVFoundation
import UIKit
class DetailVC: UIViewController {
var duaPlayer = "" //is this correct???
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func playbutton(sender: AnyObject) {
do {
let url = NSBundle.mainBundle().URLForResource("track1", withExtension: "mp3")
var duaPlayer = try AVAudioPlayer(contentsOfURL: url!)
duaPlayer.prepareToPlay()
print (url)
duaPlayer.volume = 0.5
duaPlayer.play()
}
catch
{ fatalError("err")}
}
答案 0 :(得分:2)
我认为AVAudioPlayer不支持流式传输。对于直播,请使用AVPlayer
//try this, it should work
var player = AVPlayer()
func configureView() {
let url = "http://yoururl.com"
let playerItem = AVPlayerItem( URL:NSURL( string:url ) )
player = AVPlayer(playerItem:playerItem)
player.rate = 1.0;
player.play()
}
另一方面,使用AVAudioPlayer,你可以先下载mp3文件而不是播放它 - >
let url = "http://YourURL/music/music.mp3"
let fileURL = NSURL(string:url)
let soundData = NSData.dataWithContentsOfURL(fileURL, options: nil, error: nil)
var error: NSError?
self.player = AVAudioPlayer(data: soundData, error: &error)
if player == nil {
if let e = error {
println(e.localizedDescription)
}
}
player.prepareToPlay()
player.volume = 1.0
player.delegate = self
player.play()
PS:请记住,因为iOS 9:App Transport Security(ATS)必须配置为接受非ssl连接。 将此代码添加到info.plist->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>