サポート問い合わせ先| システムステータス
ページコンテンツ

    ステップバイステップ:Swiftを使用したシンプルなビデオアプリ

    このトピックでは、iOS 用 Brightcove Player SDK を使用して簡単な動画再生アプリを構築する方法について説明します。Swiftプログラミング言語を使用してビルドします。

    概要

    この例では、 Brightcove 再生 API から返された動画を再生します。これは、Video Cloud ライブラリからコンテンツを取得するための最新かつ推奨される API です。

    このオプションでは、ポリシーキーが必要です。ポリシーキーに慣れていない場合は、「ポリシー API の概要」を参照してください。

    はじめに

    この例では、ビデオファイルの内部配列からビデオを再生します。

    以下の手順に従って、iOS 用 Brightcove Player SDK を使用するアプリプロジェクトのセットアップについて理解を深めます。次の各について、完全なコードを表示できます。

    このサンプルを試すには、次の 2 つの方法があります。

    サンプルをダウンロードする

    実験のためにXcodeプロジェクト全体をダウンロードしてください。

    1. iOS 用ネイティブ SDK サンプルをローカルシステムに複製またはダウンロードします
    2. プレーヤー/ビデオCloudBasicPlayer/Swift サンプルアプリに移動します。
    3. pod installコマンドを実行します。
    4. 新しく作成したワークスペースを開いて実行します。

    詳細については、ネイティブ SDK for iOS/tvOS 用のサンプルアプリの実行を参照してください

    このガイドの手順に従ってアプリを構築する

    以下の手順に従って、tvOS 用 Brightcove Player SDK を使用するアプリプロジェクトのセットアップについて理解を深めます。次の各について、完全なコードを表示できます。

    1. AppDelegate
    2. ViewController

    プロジェクトを作成する

    Xcodeでプロジェクトを設定します。次に、プロジェクトへの依存関係とともに SDK を追加します。

    Xcodeプロジェクトをセットアップする

    アプリ用の新しい Xcode プロジェクトを作成します。

    1. Xcodeで新しいiOSプロジェクトの作成を開始します。[ 新しい Xcode プロジェクトを作成する ] を選択します。

      Create project
      プロジェクトを作成
    2. 新しいプロジェクトの iOS とシングルビューアプリケーションを選択します。[ 次へ ] を選択します。

      Choose the project template
      プロジェクトテンプレートの選択
    3. プロジェクト情報を次のように設定します。

      • 製品名:シンプルなビデオ再生
      • チーム:なし

        [チーム] フィールドはオプションです。App Storeでアプリを配布する場合は、Apple開発者プログラムを通じて所属するチームを選択する必要があります。コード署名にはチーム名が必要です。この例では、[なし] を選択します。

      • 組織名:あなたの会社名
      • 組織識別子: com.example-company
        これにより、製品名がアプリストアで一意になります。
      • 言語:スウィフト
      • ユーザーインターフェース:ストーリーボード

        この例では、ストーリーボードインタフェースを使用しています。

      Add project information
      プロジェクト情報の追加
    4. プロジェクトを保存する場所を選択し、プロジェクトを作成します。

      Save project
      プロジェクトを保存する
    5. 今すぐプロジェクトを閉じてください ( はい、閉じてください。これは重要です! )

    SDK とその依存関係をプロジェクトに追加する

    SDK とその依存関係をプロジェクトに追加する最も簡単な方法は、CocoaPods を使用することです。

    CocoaPods は、プロジェクトにライブラリを追加する依存関係マネージャです。必須ではありませんが、インストールが簡単になります。CocoaPods をインストールするには、 CocoaPods サイトの手順を参照してください。

    1. プロジェクトフォルダに、 Podfile (ファイル拡張子なし) というプレーンテキストファイルを作成します。

    2. テキストエディタを使用して、Podfile に次のコード行を追加して保存します。このコードは次のことを行います。

      • 1 行目:Brightcoveポッドスペックの GitHub の場所を指します。
      • 3行目:静的ライブラリの代わりにフレームワークを使用するように Pod を設定します。
      • 5行目:iOS プラットフォームのバージョンを定義します。
      • 7~9行目:Brightcoveのネイティブプレーヤー SDK をインストールします。

        1. iOS 用 Brightcove ネイティブ SDK の概要ドキュメントから、現在のネイティブ SDK バージョンを取得します。
        2. '6.7.10'値を現在の SDK バージョン番号に置き換えます。
        3. 依存関係の管理の詳細については、「 CocoaPods を使用して依存関係を管理する方法」を参照してください。

         
      source 'https://github.com/brightcove/BrightcoveSpecs.git'
      
      use_frameworks!
      
      platform :ios, '11.0' # (or whatever version you want)
      
      target 'Simple-Video-Playback' do
      	pod 'Brightcove-Player-Core', '6.7.10'
      end
    3. ターミナルセッションを開き、シンプルビデオ再生の Xcode プロジェクトフォルダーに移動します。

      Terminal session
      ターミナルセッション
    4. ターミナルセッションで、コマンド

      pod install

      を選択し、 Return キーを押して実行します。

      CocoaPods が Pod の互換性のあるバージョンが見つからない場合、または最新バージョンでない場合は、ターミナルアプリで以下を実行してみてください。

      pod update

      ターミナルに、Brightcove Player SDK がプロジェクトに追加されたことを示す一連のメッセージが表示されます。

    5. pod installコマンドは、.xcworkspaceプロジェクトのファイルを作成します。

      この時点から、を開く必要がありますSimple-Video-Playback.xcworkspace Xcodeのファイル、いいえ NS Simple-Video-Playback.xcodeproj ファイル。

      Workspace
      ワークスペース

    動画アプリをコーディングする

    簡単なビデオ再生アプリのコードを作成します。

    1. Xcodeで、単純なビデオ再生.xcWorkspaceファイルを開きます

    アプリのオーディオ動作を設定する

    オーディオセッションは、アプリレベルでオーディオの動作を処理します。AvaudioSessionクラスの詳細については、こちらをご覧ください。

    このサンプルでは、再生カテゴリを使用します。これにより、画面がロックされ、Ring/Silent スイッチがサイレントに設定されている場合でも、オーディオが再生されます。動画を再生しているので、 MoviePlayback モードを使用します。それを簡単に保つために、我々は、アプリケーションデリゲートにこのコードを配置します。

    1. プロジェクトで、アプリケーションデリゲートファイル ( AppDelegate.swift ) を開きます。

    2. didFinishLaunchingWithOptions関数で、オーディオセッションカテゴリを設定するコードを追加します。AVFoundationフレームワークをインポートしてください。

      • 私たちはそれが期待したときにオーディオが再生されるようにするために、以下のコードが必要です。たとえば、このコードを設定しないと、ミュートスイッチがオンになったときにビデオが聞こえません。

      //
      //  AppDelegate.swift
      //  Simple-Video-Playback
      //
      //  Copyright © 2018 Brightcove. All rights reserved.
      //
      
      import UIKit
      import AVFoundation
      
      @UIApplicationMain
      class AppDelegate: UIResponder, UIApplicationDelegate {
      
        var window: UIWindow?
      
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        	// Override point for customization after application launch.
      
          var categoryError :NSError?
        	var success: Bool
        	do {
        		try AVAudioSession.sharedInstance().setCategory(.playback, mode: .moviePlayback, options: .duckOthers)
        		success = true
        	} catch let error as NSError {
        		categoryError = error
        		success = false
        	}
      
        	if !success {
        		print("AppDelegate Debug - Error setting AVAudioSession category.  Because of this, there may be no sound. \(categoryError!)")
        	}
      
        	return true
        }
      
        func applicationWillResignActive(_ application: UIApplication) {
        	// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        	// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
        }
      
        func applicationDidEnterBackground(_ application: UIApplication) {
        	// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        	// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
        }
      
        func applicationWillEnterForeground(_ application: UIApplication) {
        	// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
        }
      
        func applicationDidBecomeActive(_ application: UIApplication) {
        	// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
        }
      
        func applicationWillTerminate(_ application: UIApplication) {
        	// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
        }
      
      }

    ビューコントローラを構築する

    View Controller クラスを更新して、Brightcove カタログサービスから動画を再生します。

    1. プロジェクトで、ビューコントローラーファイル ( ViewController.swift ) を開きます。

    ネイティブ SDK のインポート

    iOS 用 Brightcove ネイティブプレーヤー SDK は Objective-C で書かれていますが、フレームワークモジュールを Swift プロジェクトにインポートするだけです。

    1. import既存のディレクティブの下に以下を追加して、Brightcove ネイティブプレーヤー SDK をインポートします。

      import BrightcovePlayerSDK

    あなたの価値でプロジェクトをカスタマイズする

    Video Cloud アカウントにアクセスするための値を追加します。

    この例では、 Brightcove 再生 API から返された動画を再生します。これは、Video Cloud ライブラリからコンテンツを取得するための最新かつ推奨される API です。ポリシーキーに慣れていない場合は、「ポリシー API の概要」を参照してください。

    1. importディレクティブの下に、次の値を追加します。

      • 12行目です:Brightcove再生 API ポリシーキーを定義します
      • 13行目:ビデオクラウドアカウント ID を定義します
      • 14行目:ビデオクラウドビデオ ID を定義します

      // ** Customize these values with your own account information **
      let kViewControllerPlaybackServicePolicyKey = "your policy key"
      let kViewControllerAccountID = "your account id"
      let kViewControllerVideoID = "your video id"

    クラスデリゲートを設定する

    これにより、アプリはビデオ再生イベントとプレーヤーコントロールイベントをリッスンし、応答することができます。

    1. ビューコントローラクラスを次のように更新します。

      class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
      

    定数を宣言してビューを設定する

    1. ViewControllerクラスに、以下を追加します。

      • 16行目です:共有マネージャを初期化します。BCOVPlayerSDKManagerこのクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。
      • 17行目:定数を定義し、アカウント ID とポリシーキーを使用して Brightcove プレイバックサービスを初期化します。BCOVPlaybackServiceクラスは、再生 API からデータを取得するための非同期メソッドを提供します。
      • 18行目線:再生コントローラの定数を定義します。BCOVPlaybackControllerには、再生機能を制御するメソッドがあります。
      • 19行目:ビューの変数を定義します。

      class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
        let sharedSDKManager = BCOVPlayerSDKManager.shared()
        let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: kViewControllerPlaybackServicePolicyKey)
        let playbackController :BCOVPlaybackController
        @IBOutlet weak var videoContainerView: UIView!

    init 関数を作成する

    1. 前のステップのコードの下に、init()次のように関数を作成します。
      • 23行目です:共有マネージャを使用して再生コントローラを作成します。
      • 27行目です:オプション:Video Cloud アカウント ID を分析に送信します。これは、BCOVVideoクラスをオーバーライドするか、Brightcove Playback サービスまたはカタログを使用しない場合にのみ必要です。

      • 29-31 行:デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。

       required init?(coder aDecoder: NSCoder) {
      	playbackController = (sharedSDKManager?.createPlaybackController())!
      
      	super.init(coder: aDecoder)
      
      	playbackController.analytics.account = kViewControllerAccountID // Optional
      
      	playbackController.delegate = self
      	playbackController.isAutoAdvance = true
      	playbackController.isAutoPlay = true
      }

    プレーヤーを設定する

    1. viewDidLoad()関数で、次を追加します。

      • 39行目:標準の VOD レイアウトを使用して、Brightcoveプレーヤーコントロールを作成および設定します。
      • 44行目線:プレーヤービューをメインビューのサブビューとして追加します。
      • 45行目線:自動サイズ変更マスクをオフにします
      • 46〜51行目は次のとおりです。自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
      • 54行目線:プレーヤービューを再生コントローラに関連付けます。
      • 56行目です:requestContentFromPlaybackService関数を呼び出します。この関数は次のステップで定義します。

      override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
      
        // Set up our player view. Create with a standard VOD layout.
        guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
            return
        }
      
        // Install in the container view and match its size.
        self.videoContainerView.addSubview(playerView)
        playerView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
            playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
            playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
            playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
        ])
      
        // Associate the playerView with the playback controller.
        playerView.playbackController = playbackController
      
        requestContentFromPlaybackService()
      }

    Brightcoveライブラリからコンテンツをリクエストする

    ビデオコンテンツを再生するには、カタログサービスからプレイリストをリクエストします

    1. viewDidLoad()関数の下に、requestContentFromPlaybackService()次のような名前の関数を作成します。

      • 60行目線:指定されたビデオ ID に基づいて、再生 API からビデオオブジェクトを返します。
      • 63号線:再生コントローラにビデオを追加します。
      • 65行線:プレイリストが返されなかった場合、エラーメッセージを書き込みます。

      func requestContentFromPlaybackService() {
        playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in
      
          if let v = video {
              self.playbackController.setVideos([v] as NSArray)
          } else {
              print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")")
          }
        }
      }

    コードを見る

    これで、ビューコントローラが完成しました。ここに完全なコードがあります:

    //
    //  ViewController.swift
    //  VideoCloudBasicPlayer
    //
    //  Copyright © 2018 Brightcove, Inc. All rights reserved.
    //
    
    import UIKit
    import BrightcovePlayerSDK
    
    let kViewControllerPlaybackServicePolicyKey = "your policy key"
    let kViewControllerAccountID = "your account id"
    let kViewControllerVideoID = "your video id"
    
    class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
    
      let sharedSDKManager = BCOVPlayerSDKManager.shared()
      let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: kViewControllerPlaybackServicePolicyKey)
      let playbackController :BCOVPlaybackController
      @IBOutlet weak var videoContainerView: UIView!
    
      required init?(coder aDecoder: NSCoder) {
        playbackController = (sharedSDKManager?.createPlaybackController())!
    
        super.init(coder: aDecoder)
    
        playbackController.analytics.account = kViewControllerAccountID // Optional
    
        playbackController.delegate = self
        playbackController.isAutoAdvance = true
        playbackController.isAutoPlay = true
      }
    
      override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
        // Set up our player view. Create with a standard VOD layout.
        guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
            return
        }
    
        // Install in the container view and match its size.
        self.videoContainerView.addSubview(playerView)
        playerView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
          playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
          playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
          playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
          playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
        ])
    
        // Associate the playerView with the playback controller.
        playerView.playbackController = playbackController
    
        requestContentFromPlaybackService()
      }
    
      func requestContentFromPlaybackService() {
        playbackService?.findVideo(withVideoID: kViewControllerVideoID, parameters: nil) { (video: BCOVVideo?, jsonResponse: [AnyHashable: Any]?, error: Error?) -> Void in
    
          if let v = video {
            self.playbackController.setVideos([v] as NSArray)
          } else {
            print("ViewController Debug - Error retrieving video: \(error?.localizedDescription ?? "unknown error")")
          }
        }
      }
    }

    ネイティブ SDK のインポート

    iOS 用 Brightcove ネイティブプレーヤー SDK は Obj-C で書かれていますが、フレームワークモジュールを Swift プロジェクトにインポートするだけです。

    1. import既存のディレクティブの下に以下を追加して、Brightcove ネイティブプレーヤー SDK をインポートします。

      import BrightcovePlayerSDK

    あなたの価値でプロジェクトをカスタマイズする

    アカウント ID の値を設定します。この値は後の手順でBrightcoveに送信されます。

    1. #importディレクティブの下に、Brightcoveのアカウント ID に独自の値を追加します。これは、アプリを Brightcove に登録するために使用されます。

      let kViewControllerAccountID = "your account id" // For Brightcove registration

    クラスのデリゲートを設定する

    これにより、アプリはビデオ再生イベントとプレーヤーコントロールイベントをリッスンし、応答することができます。

    1. ビューコントローラクラスを次のように更新します。

      class ViewController: UIViewController, BCOVPlaybackControllerDelegate {

    定数を宣言してビューを設定する

    1. ViewControllerクラスに、以下を追加します。

      • 14行目:共有マネージャを初期化します。BCOVPlayerSDKManagerこのクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。
      • 15行目です:再生コントローラの定数を定義します。BCOVPlaybackControllerには、再生機能を制御するメソッドがあります。
      • 16行目です:ビューの変数を定義します。

      class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
        let sharedSDKManager = BCOVPlayerSDKManager.shared()
        let playbackController :BCOVPlaybackController
        @IBOutlet weak var videoContainerView: UIView!

    init 関数を作成する

    1. 前のステップのコードの下に、init()次のように関数を作成します。
      • 20行目です:共有マネージャを使用して再生コントローラを作成します。
      • 25行目です:動画クラウドパブリッシャー ID を Brightcove アナリティクスに送信し、アプリを登録します。

      • 28-30行目は次のとおりです。デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。

      required init?(coder aDecoder: NSCoder) {
        // Create the Brightcove playback controller
        playbackController = (sharedSDKManager?.createPlaybackController())!
      
        super.init(coder: aDecoder)
      
        // Register your app with Brightcove
        playbackController.analytics.account = kViewControllerAccountID
      
        // Configure the player
        playbackController.delegate = self
        playbackController.isAutoAdvance = true
        playbackController.isAutoPlay = true
      }

    プレーヤーを設定する

    1. viewDidLoad()関数で、次を追加します。

      • 38-40行目は次のとおりです。URL パスを使用してビデオソースの配列を作成します。
      • 43-45行線:再生コントローラのビューを設定します。
      • 48行目です:プレーヤービューをメインビューのサブビューとして追加します。
      • 49号線:自動サイズ変更マスクをオフにします
      • 50~55行目です:自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
      • 58行線:プレーヤービューを再生コントローラに関連付けます。
      • 61号線:コントローラの再生キューにビデオ配列を追加します。
      • 62行目:最初のビデオの再生を開始します。

      override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
      
        // Create an array of videos
        var videoArray = [AnyObject]()
        videoArray = [videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4")!),
                      videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4")!)]
      
        // Set up the player view with a standard VOD layout.
        guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
            return
        }
      
        // Install the container view and match its size.
        self.videoContainerView.addSubview(playerView)
        playerView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
            playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
            playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
            playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
        ])
      
        // Associate the playerView with the playback controller.
        playerView.playbackController = playbackController
      
        // Load the video array into the player and start video playback
        playbackController.setVideos(videoArray as NSArray)
        playbackController.play();
      }

    動画ソースの配信方法を設定する

    1. viewDidLoad()関数の下に、BCOVSources動画に属する配信方法を設定する関数を作成します。

      func videoWithURL(url: NSURL) -> BCOVVideo {
          // Set the delivery method for BCOVSources that belong to a video
          let source:BCOVSource = BCOVSource(url: url as URL, deliveryMethod: kBCOVSourceDeliveryHLS, properties: nil)
          let video = BCOVVideo.init(source: source, cuePoints: BCOVCuePointCollection.init(array: []), properties: [NSObject:AnyObject]())
          return video!
      }

    コードを見る

    これで、ビューコントローラが完成しました。ここに完全なコードがあります:

    //
    //  ViewController.swift
    //  Simple-Video-Playback for Brightcove Player Customers
    //
    //  Copyright © 2018 Brightcove. All rights reserved.
    //
    
    import UIKit
    import BrightcovePlayerSDK
    
    let kViewControllerAccountID = "your account id" // For Brightcove registration
    
    class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
        let sharedSDKManager = BCOVPlayerSDKManager.shared()
        let playbackController :BCOVPlaybackController
        @IBOutlet weak var videoContainerView: UIView!
    
        required init?(coder aDecoder: NSCoder) {
            // Create the Brightcove playback controller
            playbackController = (sharedSDKManager?.createPlaybackController())!
    
            super.init(coder: aDecoder)
    
            // Register your app with Brightcove
            playbackController.analytics.account = kViewControllerAccountID
    
            // Configure the player
            playbackController.delegate = self
            playbackController.isAutoAdvance = true
            playbackController.isAutoPlay = true
        }
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
    
            // Create an array of videos
            var videoArray = [AnyObject]()
            videoArray = [videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4")!),
                          videoWithURL(url: NSURL(string: "https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4")!)]
    
            // Set up the player view with a standard VOD layout.
            guard let playerView = BCOVPUIPlayerView(playbackController: self.playbackController, options: nil, controlsView: BCOVPUIBasicControlView.withVODLayout()) else {
                return
            }
    
            // Install in the container view and match its size.
            self.videoContainerView.addSubview(playerView)
            playerView.translatesAutoresizingMaskIntoConstraints = false
            NSLayoutConstraint.activate([
                playerView.topAnchor.constraint(equalTo: self.videoContainerView.topAnchor),
                playerView.rightAnchor.constraint(equalTo: self.videoContainerView.rightAnchor),
                playerView.leftAnchor.constraint(equalTo: self.videoContainerView.leftAnchor),
                playerView.bottomAnchor.constraint(equalTo: self.videoContainerView.bottomAnchor)
            ])
    
            // Associate the playerView with the playback controller.
            playerView.playbackController = playbackController
    
            // Load the video array into the player and start video playback
            playbackController.setVideos(videoArray as NSArray)
            playbackController.play();
        }
    
        func videoWithURL(url: NSURL) -> BCOVVideo {
          // Set the delivery method for BCOVSources that belong to a video
          let source:BCOVSource = BCOVSource(url: url as URL, deliveryMethod: kBCOVSourceDeliveryHLS, properties: nil)
          let video = BCOVVideo.init(source: source, cuePoints: BCOVCuePointCollection.init(array: []), properties: [NSObject:AnyObject]())
          return video!
        }
    }

    ストーリーボードビューを接続する

    接続しますMain.storyboardで表示videoContainerViewプロパティ。

    1. Xcodeで、Main.storyboardファイルを開きます。

    2. コンパニオンビューで、ビューコントローラシーンを展開し、[ ビューコントローラ ] メニューを展開し、 View オブジェクトを公開します。

      Storyboard view
      ストーリーボードビュー
    3. [ 右側にエディタを追加] アイコンを選択して、ストーリーボードビューにアシスタントエディタを追加します

      Add assistant editor
      アシスタントエディタの追加
    4. アシスタントエディターで、ViewController.swiftファイルを開きます。

      Select controller file
      コントローラファイルを選択
    5. @IBOutletの隣にある開いた円を選択しvideoContainerView、それを Viewオブジェクトにドラッグしてこれらのコンポーネントを接続します。

      Connect the view
      ビューを接続する

    メディアセキュリティの管理

    アプリトランスポートセキュリティ (ATS) は、アプリと Web サービスの間の安全な接続を強制します。Apple の iOS 9 SDK のリリースで、 App Transport Security (ATS) と呼ばれる新機能が追加されました。

    1. アプリには、次のいずれかの状況が適用されます。

      • デフォルトでは、iOS 用 Brightcove ネイティブ SDK はソース選択ポリシーを使用して HTTP ソース上で HTTPS を選択するため、ATS を有効にしてアプリを構築できます。

        それで、あなたはあなたのアプリを実行する準備ができています。

         

      • リモートアセットで HTTP ソースではなく HTTPS を使用する場合は、ATS を有効にしてアプリを構築できます。

        それで、あなたはあなたのアプリを実行する準備ができています。

         

      • HTTP ソースを使用している場合や、アプリで他の HTTP 呼び出しがある場合、次のエラーメッセージが表示されることがあります。

        App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
        Temporary exceptions can be configured via your app's Info.plist file.

        つまり、ATS は有効ですが、システムが ATS 要件を満たすように構成されていません。この状況を修正するには、アプリトランスポートセキュリティ (ATS) を使用する」ドキュメントを参照してください。

    アプリを実行する

    アプリは、iPhone、iPad、またはiOSシミュレータでビルドして実行する準備ができました。プレイリストから動画を再生できるはずです。

    iPhone sample
    iPhoneサンプル

    アプリは、iPhone、iPad、またはiOSシミュレータでビルドして実行する準備ができました。配列で定義されているビデオを再生できるはずです。

    iPhone sample
    iPhoneサンプル

    ページの最終更新日21 May 2021