2016-06-21 161 views
2

基本上我試圖在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. 
     } 
    } 
} 

如何使此代碼的工作,或導致我在正確的方向上沒有任何幫助深表感謝!

回答

2

我試圖粘貼代碼到一個新的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'來明確轉換嗎?任何想法,爲什麼你們沒有得到那個錯誤,但我呢? –