在 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