OSX中的简单Webradiostream

时间:2017-05-15 09:42:29

标签: swift xcode macos

我想建立我的第一个macOS-App。我的目标是,我可以选择一个无人电流并播放它。但它没有用。

以下是代码:

import Cocoa
import AVFoundation
import AVKit

class ViewController: NSViewController {

@IBOutlet weak var RadioList: NSPopUpButton!

override func viewDidLoad() {
    super.viewDidLoad()

    let RadioListArray = ["Unser Radio", "Antenne"]

    RadioList.removeAllItems()
    RadioList.addItems(withTitles: RadioListArray)
    RadioList.selectItem(at: 0)
}

override var representedObject: Any? {
    didSet {
    // Update the view, if already loaded.
    }
}

@IBAction func PlayStopButton(_ sender: AnyObject) {

    var url = String()

    switch RadioList.indexOfSelectedItem {
    case 0:
        url = "http://rs4.stream24.net:80/unser-radio.mp3"
    case 1:
        url = "http://mp3channels.webradio.antenne.de/antenne"
    default:
        print("nothing")
    }
    Stream(url: url)
}

func Stream(url: String)
{
    print(url)

    let player = AVPlayer(url: URL(string: url)!)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = self.view.bounds
    self.view.layer?.addSublayer(playerLayer)
    player.play()
}
}

当我将网址直接复制到浏览器时,比流式传输开始好。当我插入视频时,视频将在应用程序中启动。

音频流行音是特别的吗?

1 个答案:

答案 0 :(得分:1)

这是因为Apple默认不允许您加载任何http内容。如果仔细查看调试控制台,可能会出现以下错误

  

App Transport Security已阻止明文HTTP(http://)   资源负荷,因为它是不安全的。临时例外可以   通过您应用的Info.plist文件进行配置。

要解决此问题,只需在下方添加info.plist文件

即可
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

详细信息可在this SO回答

中找到