【问题标题】:TV live streaming (.m8u3 file) plays in browser, but not in Swift app电视直播(.m8u3 文件)在浏览器中播放,但不在 Swift 应用程序中
【发布时间】:2017-04-22 20:11:48
【问题描述】:

我正在使用 Swift 开发直播电视应用,但我的频道文件 URL 无法播放。

我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    if let url = URL(string: "http://biwsat.com:8080/get.php?username=eYIvPmJeT2&password=3331jALAKY&type=m3u&output=ts"){
        let player = AVPlayer(url: url)
        let controller=AVPlayerViewController()
        controller.player=player
        controller.view.frame = self.view.frame
        self.view.addSubview(controller.view)
        self.addChildViewController(controller)
        player.play()
    }
}

如果我使用此链接:http://devstreaming.apple.com/videos/wwdc/2016/102w0bsn0ge83qfv7za/102/hls_vod_mvp.m3u8 我的播放器正在播放。

我该怎么办?

【问题讨论】:

  • 您的视频文件可能是AVPlayer不支持的格式,建议您查找文档查看支持的格式。

标签: ios swift avplayer


【解决方案1】:

出于某种原因,AVPlayer 不接受从 php Get 函数传递的文件。它需要与 .m3u8 扩展名的直接链接。你有两个选择:

1. 找到一种显示链接的方法,使其以 .m3u8 结尾
2. 如果您有权编辑 GET 方法和服务器,请查看 Sommer's solution
3. 如果您无权访问服务器,对我有用的一个巨大的解决方法是下载从链接提供的文件,然后使用 HTTP 服务器的实现(例如 @ 987654322@ - 轻量级且仍受支持)广播文件并在 AVPlayer 中以 URL 的形式访问它。 Apple 不允许播放本地 m3u/m3u8 文件,因此您必须使用 HTTP Live Streaming (HLS),这基本上意味着文件必须存储在服务器上。
如有需要,可提供示例。

【讨论】:

    猜你喜欢
    • 2016-01-05
    • 2012-07-28
    • 2019-04-25
    • 2022-09-28
    • 2012-11-10
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多