2017-08-09 16 views
0

AVPlayerでローカルビデオを実行できます。しかし私はswift 3でJSONからビデオをフェッチできませんでした。私はそれを探しましたが、Swift 3で適切な解決策を見つけることができませんでした。Swift 3のJSONからビデオをフェッチする方法は?私はスウィフトで初心者です。Swift 3のAPIからAVPlayerでビデオを取得

私はJSONを持っている:あなたはJSONを使用している場合は、実際に映像を送信されることはありません

import UIKit 
import AVFoundation 
import AVKit 
import Alamofire 

class CourseSchedule: UIViewController { 

var playerController = AVPlayerViewController() 
var player:AVPlayer? 
var dictDataContent:NSDictionary = NSDictionary() 
var strd : NSString? 
var dictData:NSArray = NSArray() 
var appDictionary: String? 

@IBOutlet weak var courseSummary: UITextView! 
@IBOutlet var button: UIButton! 
@IBOutlet var videoPreviewLayer: UIView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 

    let def = self.dictDataContent.value(forKey: "course_summary") as! String! 
    let htmlData = NSString(string: def!).data(using: String.Encoding.unicode.rawValue) 
    let attributedString = try! NSAttributedString(data: htmlData!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) 

    courseSummary.attributedText = attributedString 
    courseSummary.textColor = UIColor.white 
    courseSummary.font = UIFont(name: "Palatino", size: 14) 


    //For local video to play in AVPlayer. 

    let videoString = Bundle.main.path(forResource: "Working-Space", ofType: ".mp4") 
    if let path = videoString { 
     let url = NSURL(fileURLWithPath: path) 
     let item = AVPlayerItem(url: url as URL) 
     self.player = AVPlayer(playerItem: item) 
     self.playerController = AVPlayerViewController() 
     self.playerController.player = self.player 
     playerController.view.frame = videoPreviewLayer.frame 
     self.addChildViewController(playerController) 
     self.videoPreviewLayer.addSubview(playerController.view) 
     playerController.showsPlaybackControls = false 
     self.playerController.player?.play() 
    } 
    NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem, queue: nil, using: { (_) in 
     DispatchQueue.main.async { 
      self.player?.seek(to: kCMTimeZero) 
      self.player?.play() 
     } 
    }) 
    button.layer.cornerRadius = 5 
} 
} 




//HOMEVC 

import UIKit 
import Alamofire 


class HomeVC: UIViewController { 


@IBOutlet var test: UIView! 
var strid : NSString? 
var strd : NSString? 
var dictData:NSDictionary = NSDictionary() 
var strd2 : NSString? 

override func viewDidLoad() { 
    super.viewDidLoad()   
    self.setupPages() 
    } 


func setupPages() { 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    var controllerArray: [UIViewController] = [] 
    let strinDuration:NSString = NSString(format:"http://rillmark.academy/api/rillmark-academy/course/course-content-detail?id=%@",strid!) as String as String as NSString 
    print("strid",strid!) 
    let collectionviewone: String = strinDuration as String 
    Alamofire.request(collectionviewone, method: .get, parameters: nil, encoding: JSONEncoding.default) 
     .responseJSON { response in 
      debugPrint(response.result) 
      if let JSON = response.result.value{ 
       self.dictData = (JSON as AnyObject) as! NSDictionary 
       print("self.dictData",self.dictData) 
       let firstVC = storyboard.instantiateViewController(withIdentifier: "CourseContentTable") as! CourseContentTable 
       firstVC.title = "Course Content" 
       firstVC.dictDataContent = self.dictData 
    } 

答えて

0

{ 
"status": "Success", 
"course_summary": "<p>Laravel is one of the most popular PHP frameworks </p>", 
"course_video": "course.mkv" 
} 

コード。 JSONは基本的にKey:Valueデータです。あなたは、JSONがビデオデータをダウンロードしたり、ビデオをダウンロードするためのリンクを送ることができます。しかし現在、その様子であなたが持っている:

{String:String} 

私はJSON経由のリンクを渡し、その後、対応するビデオをダウンロードすることをお勧めします:

{"course_video":"course.mkv"} 

つまり、あなたはタイプがあります。 Alamofireを見ると、HTTPリクエストやダウンロードの処理に最適です。ビデオデータを取得したら、AVPlayerを使って再生することができます。

+0

次に、次のView Controllerのコンテンツも含めました。ここでは、Alamofireを使用してAPIを取得しました。私が上記のビデオについて書いたJSONはダミーのものです。それはプライバシーの問題ですさて、私の質問は、Swift 3のAVPlayerを使ってそのビデオを再生する方法です。 – Tamannah

関連する問題