在 iOS 9 上播放 HLS m3u8

Posted

技术标签:

【中文标题】在 iOS 9 上播放 HLS m3u8【英文标题】:Playing HLS m3u8 on iOS 9 【发布时间】:2016-02-12 09:53:04 【问题描述】:

我在播放视频流 HLS m3u8 时遇到问题。我用目标 ios9 创建了一个新项目,并使用 AVPlayer 来制作视频流。在测试流工作时,我在 Windows 和 android 应用程序中使用的所有其他视频流都不适用于 iOS AVPlayer 类。您能否提供建议是否可以调整 AVPlayer 或可以使用哪个 3rd 方现代库? 更新:尝试了 Vitamio 的演示应用程序,它可以工作。

这是我使用的代码:

    @IBAction func pressed(sender: AnyObject) 
// this url work, all others not
        let url = NSURL(string:"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8")
        let player = AVPlayer(URL: url!)
        let playerController = AVPlayerViewController()

        playerController.player = player
        self.addChildViewController(playerController)
        self.myView.addSubview(playerController.view)
        playerController.view.frame = self.myView.frame

        player.play()
    

【问题讨论】:

我还有其他 m3u8 流工作。有时我会发现一个可以在 iPhone 6 上运行但不能在 5S(相同版本的 iOS)上运行,这很奇怪。您在使用其他流时遇到了什么错误? 您好,我打开了支持票,Apple 的支持工程师说什么流有非标准格式,当我尝试播放时,只是黑屏和交叉播放标志 用 DFVideoPlayer 试过 Vitamio,在 iPad Air 上存在性能问题,许多流无法播放,但这些流在 android 媒体播放器上工作,有替代方案吗? 您尝试播放的文件中有哪些不标准的内容? 我认为因为这些流(不是文件)可以在所有其他播放器和平台上播放,它们符合一些“标准”,我不是 HLS 专家。 【参考方案1】:

此问题已通过 Apple 支持解决:

“应用传输安全已阻止明文 HTTP 资源加载,因为它不安全。可以通过应用的 Info.plist 文件配置临时异常

我们建议您查看 WWDC 2015 的第 706、711 场会议以了解更多详情。也推荐浏览 NSAppTransportSecurity 开发者资源”

【讨论】:

请注意,NSAllowsArbitraryLoads 不会像解决其他任何问题那样解决此问题。使用 AVPlayer,您必须添加明确的异常域以允许不安全的 HTTP 视频播放。

以上是关于在 iOS 9 上播放 HLS m3u8的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 上使用 Shaka Player 播放 HLS m3u8

m3u8和HLS分析工具

Video.js HTML5播放器可以播放m3u8播放列表(HLS)?

下载和播放离线 HLS 内容 - iOS 10

hls视频播放-基于ChPlayer

关于H5播放Http Live Streaming m3u8格式视频