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

标签 swift macos cocoa avplayer http-live-streaming

基本上,我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8(HLS Live Stream)。我对这门语言比较陌生,所以基本上捕获了一些 example code用于播放本地视频文件并尝试修改它以播放实时流......但是改为:

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 的底部完成的:

enable console

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

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

正如它在控制台中所说:

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

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

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

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

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

editing plist

This question出色的答案尽我所能更好地描述了过程

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

关于swift - 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937036/

相关文章:

objective-c - 在没有粘贴板或模拟输入的情况下将字符串输入到应用程序

xcode - 文件所有者 'view' socket 未显示

swift - 如何在 Swift 中将字符串数组附加到 AnyObjects 数组?

Xcode Server bot 无法使用默认命令读取属性列表

objective-c - 如何通过辅助功能 API 获取当前选定文本的全局屏幕坐标。

objective-c - 无法访问应用程序委托(delegate)属性

arrays - 按 localizedCaseInsensitiveCompare 和默认 Comparable 对字符串数组进行排序有什么区别?

ios - UICollectionView。如何在没有动画的情况下使用不同的元素(不仅是第一个)呈现 viewController?

php - mysql密码过期了。无法连接

c++ - 在 C++ 程序中从 NSNotification Server 获取通知