在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

use*_*455 5 macos cocoa http-live-streaming avplayer swift

基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 (HLS Live Stream)。我对这门语言相对较新,所以基本上抓取了一些用于播放本地视频文件的示例代码,并尝试修改它以播放实时流......但是改为:

https://i.stack.imgur.com/bU9GM.png

这是我到目前为止得到的(注释行是播放本地文件,它确实有效):

import Cocoa
import AVKit
import Foundation
import AVFoundation

class ViewController: NSViewController {

    @IBOutlet weak var playerView: AVPlayerView!

    var videoPlayer:AVPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()

        //let path = NSBundle.mainBundle().pathForResource("sample", ofType: "mov")
        //var fileURL = NSURL(fileURLWithPath: path!)
        let fileURL = NSURL(string: "http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8")
        let avAsset = AVURLAsset(URL: fileURL!, options: nil)

        let playerItem = AVPlayerItem(asset: avAsset)
        videoPlayer = AVPlayer(playerItem: playerItem)
        playerView.player = videoPlayer
        videoPlayer.play()
    }

    override var representedObject: AnyObject? {
        didSet {
            // Update the view, if already loaded.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何有关如何使该代码工作或引导我走向正确方向的帮助!

pbo*_*dsk 4

我尝试将您的代码粘贴到新的 OS X 项目(或 macOS,因为我们现在必须开始调用它:))

当我启动该项目时,我在控制台中收到此错误:

2016-06-21 09:09:27.860 Videoplayer[2494:169209] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
Run Code Online (Sandbox Code Playgroud)

我不知道您是否启用了控制台,它位于屏幕的底部,前提是您启用了调试区域。

如果您尚未启用调试区域,请在 Xcode 顶部启用它

启用调试区域

然后您需要确保也显示控制台,这是在 Xcode 的底部完成的:

启用控制台

好的,现在您可以看到错误,然后如何修复它:)

此消息基本上告诉您 Apple 已阻止访问HTTP. 这是在 OS X 10.11 和 iOS 9 中引入的,但可以禁用。

正如控制台中所说:

可以通过应用程序的 Info.plist 文件配置临时例外。

这意味着您应该向您的info.plist文件添加一个新密钥。

您可以将其添加为“原始”plist 数据,如下所示:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

或者您可以将其添加到 plist 编辑器中,如下所示:

编辑plist

这个问题和精彩的答案比我更好地描述了这个过程

如果我这样做,我就能够运行您的代码并可以观看直播,所以我希望这对您也有帮助。