2017-03-08 16 views
0

私のアプリで再生するために.m3u8ビデオストリームを取得しようとしています。私は、iOS 9のためにスウィフトでプログラミング午前10ここHLS && .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)}

私を助けてください!

EDIT:

は運でこの提案をしようとしました。アプリはまだクラッシュします。その情報が誰にでも役立つなら、クラッシュは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

あなたのURLが有効な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.plistYES下NSAppTransportSecurity辞書にNSAllowsArbitraryLoadsキーを設定することを忘れないでください。