2017-03-08 42 views
0

我试图让一个.m3u8视频流在我的应用程序中播放。我在斯威夫特iOS编程9和10HLS && .m3u8in iOS 10

这是我走到这一步:

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() 
    } 
} 

这应该是简单的,但我得到的错误和崩溃所有的地方。

这是我收到的错误:

错误域= AVFoundationErrorDomain代码= -11800 “的操作可能 无法完成” 的UserInfo = {NSLocalizedDescription =该操作可能 无法完成,NSUnderlyingError = 0x7b5b6810 {错误 域= NSOSStatusErrorDomain代码= -12782 “(空)”}, 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) 
    } 
} 

回答

0

您应该确保您的网址提供有效的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() 
    } 
} 

还有,记得键设置NSAllowsArbitraryLoads到YESNSAppTransportSecurity字典在的Info.plist