【问题标题】:HLS && .m3u8in iOS 10iOS 10 中的 HLS && .m3u8
【发布时间】:2017-03-08 07:38:51
【问题描述】:

我正在尝试让 .m3u8 视频流在我的应用程序中播放。我正在为 iOS 9 和 10 使用 Swift 编程。

这是我目前得到的:

import UIKit
import AVKit
import AVFoundation
import DynamicBlurView

class VideoPlayerViewController: AVPlayerViewController {

    var urlString: String!
    let blurView = DynamicBlurView()

    override func viewDidLoad() {
        super.viewDidLoad()

        streamVideo()
    }

    func streamVideo() {
        blurView.frame = view.frame
        UIView.showProgressView(on: view, blurView: blurView)

        let url = URL(string: urlString!)
        let item = AVPlayerItem(url: url!)
        player = AVPlayer(playerItem: item)

        UIView.hideProgressView(on: view, blurView: blurView)
        player?.play()
    }
}

这应该很简单,但是我到处都遇到错误和崩溃。

这是我得到的错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "该操作可能 未完成" UserInfo={NSLocalizedDescription=该操作可以 未完成,NSUnderlyingError=0x7b5b6810 {Error 域=NSOSStatusErrorDomain 代码=-12782 "(null)"}, NSLocalizedFailureReason=发生未知错误(-12782)}

请帮帮我!

编辑:

尝试了这个建议,但没有成功。该应用程序仍然崩溃。如果该信息对任何人有帮助,那么崩溃会将我带到 AppDelegate。

import UIKit
import AVKit
import AVFoundation
import DynamicBlurView

class VideoPlayerViewController: AVPlayerViewController {

    var urlString: String!
    let blurView = DynamicBlurView()

    override func viewDidLoad() {
        super.viewDidLoad()

        streamVideo()
    }

    func streamVideo() {
        blurView.frame = view.frame
        UIView.showProgressView(on: view, blurView: blurView)

        let sampleURL = "https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8"

        guard let url = URL(string: sampleURL) else { return }
        let playerItem = AVPlayerItem(url: url)
        player = AVPlayer(playerItem: playerItem)
        player?.play()

        UIView.hideProgressView(on: view, blurView: blurView)
    }
}

【问题讨论】:

    标签: ios swift avfoundation m3u8 avkit


    【解决方案1】:

    您应确保您的网址提供有效的 HLS 来源。

    import UIKit
    import AVKit
    import AVFoundation
    
    class myAVPlayerViewController: AVPlayerViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // custom HLS
            // http://localhost:3000/assets/videos/iframe_index.m3u8
            // apple HLS example
            // https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8
    
            guard let url = URL(string: "https://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8") else { return }
            let playerItem = AVPlayerItem(url: url)
            player = AVPlayer(playerItem: playerItem)
            player?.play()
        }
    }
    

    另外,请记住在 Info.plistNSAppTransportSecurity 字典下将 NSAllowsArbitraryLoads 键设置为 YES

    【讨论】:

      猜你喜欢
      • 2016-02-12
      • 2013-03-06
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2023-02-04
      • 2017-11-09
      • 2014-02-12
      • 2017-03-22
      相关资源
      最近更新 更多