在可可 OS X AVPlayer-玩 HLS (m3u8)Swift

标签: AVPlayer Swift
发布时间: 2017/3/6 22:58:57
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

基本上我试玩 m3u8 (HLS 实况流) 使用在可可 AVPlayer Swift 。 我是相对较新的语言,所以基本上抓住一些代码示例播放本地的视频文件,试着修改它来播放实时流......但相反得到这︰

http://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.
        }
    }
}

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

解决方法 1:

我试着将你的代码粘贴到一个新的 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.

我不知道是否您已启用控制台,它是你的屏幕的底部,只要你拥有启用调试区域。

如果你还没有启用调试区域,然后你使它在顶部的 Xcode

enable debug area

然后你需要确保你显示控制台,以及是在底部的 Xcode 的一部分︰

enable console

好吧,现在你可以看到该错误,然后如何修复它:)

此消息基本上告诉你苹果已阻止访问 HTTP 。这介绍了 OS X 10.11 和 iOS 9,但可以禁用。

正如它在控制台中所说︰

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

这意味着,您应添加新的关键你 info.plist 文件。

你可以将其添加为"原始"plist 数据,看起来像这样︰

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

或者你可以将其添加在 plist 编辑器中,在那里它看起来像这样︰

editing plist

这个问题和伟大答案描述的过程更好,我可以

如果我这样做,我能够得到您的代码运行,可以看直播,所以我希望这也能帮助你。

官方微信
官方QQ群
31647020