在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
顶部然后你需要确保你显示控制台,以及,这是在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中编辑器,它看起来像这样添加:
This question和伟大的回答描述的过程更好,我可以
如果我这样做,我能够让你的代码运行,并可以瓦特h直播,所以我希望这也能帮助你。
非常感谢你!应该已经意识到这是问题 – user3063455
不客气。很高兴现在适合你。 – pbodsk
@pbodsk - 在代码语句中出现此错误let avAsset = AVURLAsset(URL:my_url!,options:nil) - 'NSURL'不能隐式转换为'URL';你的意思是用'as'来明确转换吗?任何想法,为什么你们没有得到那个错误,但我呢? –