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

问题描述:

基本上我试图在Cocoa Swift中使用AVPlayer播放m3u8(HLS Live Stream)。我是比较新的语言,所以基本上抓住一些example code播放本地视频文件,并试图修改它来播放实时流......但得到这个:在Cocoa OS X中播放HLS(m3u8)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. 
     } 
    } 
} 

如何使此代码的工作,或导致我在正确的方向上没有任何帮助深表感谢!

我试图粘贴代码到一个新的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的底部完成:

​​

OK,现在你可以看到错误,那么如何解决它:)

这条消息基本上告诉你,苹果已经阻止访问HTTP。这是在OS X 10.11和iOS 9中引入的,但可以禁用。

,因为它说在控制台:

Temporary exceptions can be configured via your app's Info.plist file.

这意味着你应该添加一个新的关键是你的info.plist文件。

您可以将其添加为“原始”的plist数据,它看起来像这样:

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

或者你可以在plist中编辑器,它看起来像这样添加:

editing plist

This question和伟大的回答描述的过程更好,我可以

如果我这样做,我能够让你的代码运行,并可以瓦特h直播,所以我希望这也能帮助你。

+0

非常感谢你!应该已经意识到这是问题 – user3063455

+0

不客气。很高兴现在适合你。 – pbodsk

+0

@pbodsk - 在代码语句中出现此错误let avAsset = AVURLAsset(URL:my_url!,options:nil) - 'NSURL'不能隐式转换为'URL';你的意思是用'as'来明确转换吗?任何想法,为什么你们没有得到那个错误,但我呢? –