2017-03-08 81 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