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

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

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

    概要

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

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

    はじめに

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

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

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

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

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

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

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

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

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

    1. AppDelegateの実装
    2. ビューコントローラヘッダー
    3. ビューコントローラの実装

    プロジェクトを作成する

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

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

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

    1. Xcodeで新しいiOSプロジェクトの作成を開始します。[ 新しい Xcode プロジェクトを作成する ] を選択します。または、Xcodeトップメニューで、[ ファイル ]、[ 新規 ]、[ プロジェクト ] を選択できます。

      Create Project
      プロジェクトを作成する
    2. テンプレートに「単一ビューアプリケーション」を選択し、「次へ」を選択します。

      Choose 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.3.11'値を現在の 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.3.11'
      end
    3. ターミナルセッションを開き、シンプルビデオ再生の Xcode プロジェクトフォルダーに移動します。

      Terminal session
      ターミナルセッション
    4. ターミナルセッションで、次のコマンドを入力します。

      pod install

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

    5. 最後の行に注意してください、これは重要です—この時点から、を開く必要があります Simple-Video-Playback.xcworkspace Xcodeのファイル、いいえ NS Simple-Video-Playback.xcodeproj ファイル。pod installこのコマンドにより、.xcworkspaceプロジェクト用にこのファイルが作成されます。

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

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

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

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

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

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

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

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

      • 私たちはそれが期待したときにオーディオが再生されるようにするために、以下のコードが必要です。たとえば、このコードを設定しないと、ミュートスイッチがオンになったときにビデオが聞こえません。
      • サンプルで簡単にするために、これをアプリデリゲートに入れています。独自のアプリでこれを使用する方法の詳細については、「オーディオセッションプログラミングガイド」を参照してください。
      //  AppDelegate.m
      //  Simple-Video-Playback
      //
      //  Copyright © 2018 Brightcove. All rights reserved.
      //
      
      #import "AppDelegate.h"
      #import <AVFoundation/AVFoundation.h>
      
      @interface AppDelegate ()
      
      @end
      
      @implementation AppDelegate
      
      
      - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Override point for customization after application launch.
      
      NSError *categoryError = nil;
      BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&categoryError];
      
      if (!success)
      {
      		NSLog(@"AppDelegate Debug - Error setting AVAudioSession category.  Because of this, there may be no sound. `%@`", categoryError);
      }
      return YES;
      }
      
      - (void)applicationWillResignActive:(UIApplication *)application {
      // 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 throttle down OpenGL ES frame rates. Games should use this method to pause the game.
      }
      
      - (void)applicationDidEnterBackground:(UIApplication *)application {
      // 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.
      }
      
      - (void)applicationWillEnterForeground:(UIApplication *)application {
      // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
      }
      
      - (void)applicationDidBecomeActive:(UIApplication *)application {
      // 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.
      }
      
      - (void)applicationWillTerminate:(UIApplication *)application {
      // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
      }
      
      @end

    ビューコントローラクラス宣言を構築する

    ビューコントローラクラスを更新して Brightcove SDK を含めます。

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

    Brightcoveプレーヤーの SDK ヘッダーファイルをインポートする

    1. Brightcove Player SDK に次の import ステートメントを追加します。

      @import BrightcovePlayerSDK;

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

    //  ViewController.h
    //  Simple-Video-Playback
    //
    //  Copyright © 2018 Brightcove. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    @import BrightcovePlayerSDK;
    
    @interface ViewController : UIViewController
    
    @end

    ビューコントローラ実装の構築

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

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

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

    Video Cloud アカウントにアクセスするには、トークンとプレイリスト ID の値を追加します。

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

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

      • 12行目です:Brightcove再生 API ポリシーキーを定義します。
      • 13行目:ビデオクラウドアカウント ID を定義します。
      • 14行目:ビデオクラウドビデオ ID を定義します。
      // ** Customize these values with your own account information **
      static NSString * const kViewControllerPlaybackServicePolicyKey = @"your policy key";
      static NSString * const kViewControllerAccountID = @"your account id";
      static NSString * const kViewControllerVideoID = @"your video id";

    プロパティを宣言する

    1. ViewController インターフェイスセクションで、次のクラス宣言を追加します。

      • 16行目です:Brightcoveの代理オブジェクトをに追加しますinterface。これにより、アプリがビデオ再生イベントをリッスンして応答できるようになります。
      • 18行目線:クラスを定義します。BCOVPlaybackServiceこのクラスは、Playback API からデータを取得するための非同期メソッドを提供します。
      • 19行目:を定義します。このにはBCOVPlaybackController、再生機能を制御するためのメソッドがあります。
      • 20行目です:Brightcove UI コントロールのプレーヤービューを定義します。
      • 21行目です:ビデオコンテナビューを定義します。
      @interface ViewController () <BCOVPlaybackControllerDelegate>
      
      @property (nonatomic, strong) BCOVPlaybackService *playbackService;
      @property (nonatomic, strong) id<BCOVPlaybackController> playbackController;
      @property (nonatomic) BCOVPUIPlayerView *playerView;
      @property (nonatomic, weak) IBOutlet UIView *videoContainer;
      
      @end

    初期化方法の定義

    1. ViewController実装セクションで、initを呼び出す関数setup次のステップで定義する関数。

      @implementation ViewController
      #pragma mark Setup Methods
      
      - (instancetype)initWithCoder:(NSCoder *)coder
      {
      self = [super initWithCoder:coder];
      if (self)
      {
      		[self setup];
      }
      return self;
      }

    プレーヤーを設定する

    1. init関数の下に、setupアプリケーションのロード時に呼び出されるという名前の関数を作成します。

      • 40行目です:共有マネージャを使用して再生コントローラを作成します。BCOVPlayerSDKManagerこのクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。
      • 42行目:オプション:BCOVVideoクラスを上書きした場合、または Brightcove プレーヤーと再生サービスまたはカタログを使用しない場合は、Video Cloud アカウント ID を Video Cloud Analytics に送信する必要があります。これにより、このアプリのデータを Video Cloud Analytics で表示できます。

      • 44〜46行:デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。
      • 48行目です:アカウント ID とポリシーキーでプレイバックサービスを初期化します。

      - (void)setup
      {
      _playbackController = [BCOVPlayerSDKManager.sharedManager createPlaybackController];
      
      _playbackController.analytics.account = kViewControllerAccountID; // Optional
      
      _playbackController.delegate = self;
      _playbackController.autoAdvance = YES;
      _playbackController.autoPlay = YES;
      
      _playbackService = [[BCOVPlaybackService alloc] initWithAccountId:kViewControllerAccountID policyKey:kViewControllerPlaybackServicePolicyKey];
      }

    プレーヤーを設定する

    1. viewDidLoad関数で、次の操作を実行します。

      • 56行目です:標準の VOD レイアウトを使用して、Brightcoveプレーヤーコントロールを作成および設定します。
      • 58行線:プレーヤービューをメインビューのサブビューとして追加します。
      • 59行:自動サイズ変更マスクをオフにします
      • 60~65行目線:自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
      • 66行目です:プレーヤービューを、関連付けられたグローバル変数に割り当てます。
      • 69行目線:プレーヤービューを再生コントローラに関連付けます。
      • 71号線:requestContentFromPlaybackService関数を呼び出します。この関数は次のステップで定義します。

      - (void)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.
        BCOVPUIPlayerView *playerView = [[BCOVPUIPlayerView alloc] initWithPlaybackController:self.playbackController options:nil controlsView:[BCOVPUIBasicControlView basicControlViewWithVODLayout] ];
      
        _videoContainer addSubview:playerView];
        playerView.translatesAutoresizingMaskIntoConstraints = NO;
        [NSLayoutConstraint activateConstraints:@[
            [playerView.topAnchor constraintEqualToAnchor:_videoContainer.topAnchor],
            [playerView.rightAnchor constraintEqualToAnchor:_videoContainer.rightAnchor],
            [playerView.leftAnchor constraintEqualToAnchor:_videoContainer.leftAnchor],
            [playerView.bottomAnchor constraintEqualToAnchor:_videoContainer.bottomAnchor],
        ]];
        _playerView = playerView;
      
        // Associate the playerView with the playback controller.
        _playerView.playbackController = _playbackController;
      
        [self requestContentFromPlaybackService];
      }

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

    ビデオコンテンツを再生するには、Video Cloud ライブラリにビデオをリクエストします。

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

      - (void)requestContentFromPlaybackService
      {
      [self.playbackService findVideoWithVideoID:kViewControllerVideoID parameters:nil completion:^(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error) {
      
      	if (video)
      	{
      		[self.playbackController setVideos:@[ video ]];
      	}
      	else
      	{
      		NSLog(@"ViewController Debug - Error retrieving video: `%@`", error);
      	}
      
      }];
      }

    コードを見る

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

    //
    //  ViewController.m
    //  Simple-Video-Playback
    //
    //  Copyright © 2018 Brightcove. All rights reserved.
    //
    
    #import "ViewController.h"
    
    // ** Customize these values with your own account information **
    static NSString * const kViewControllerPlaybackServicePolicyKey = @"your policy key";
    static NSString * const kViewControllerAccountID = @"your account id";
    static NSString * const kViewControllerVideoID = @"your video id";
    
    @interface ViewController () <BCOVPlaybackControllerDelegate>
    
    @property (nonatomic, strong) BCOVPlaybackService *playbackService;
    @property (nonatomic, strong) id<BCOVPlaybackController> playbackController;
    @property (nonatomic) BCOVPUIPlayerView *playerView;
    @property (nonatomic, weak) IBOutlet UIView *videoContainer;
    
    @end
    
    @implementation ViewController
    #pragma mark Setup Methods
    
    - (instancetype)initWithCoder:(NSCoder *)coder
    {
    self = [super initWithCoder:coder];
    if (self)
    {
    		[self setup];
    }
    return self;
    }
    
    - (void)setup
    {
    _playbackController = [BCOVPlayerSDKManager.sharedManager createPlaybackController];
    
    _playbackController.analytics.account = kViewControllerAccountID; // optional
    
    _playbackController.delegate = self;
    _playbackController.autoAdvance = YES;
    _playbackController.autoPlay = YES;
    
    _playbackService = [[BCOVPlaybackService alloc] initWithAccountId:kViewControllerAccountID policyKey:kViewControllerPlaybackServicePolicyKey];
    }
    
    - (void)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.
    BCOVPUIPlayerView *playerView = [[BCOVPUIPlayerView alloc] initWithPlaybackController:self.playbackController options:nil controlsView:[BCOVPUIBasicControlView basicControlViewWithVODLayout] ];
    
    [_videoContainer addSubview:playerView];
      playerView.translatesAutoresizingMaskIntoConstraints = NO;
      [NSLayoutConstraint activateConstraints:@[
        [playerView.topAnchor constraintEqualToAnchor:_videoContainer.topAnchor],
        [playerView.rightAnchor constraintEqualToAnchor:_videoContainer.rightAnchor],
        [playerView.leftAnchor constraintEqualToAnchor:_videoContainer.leftAnchor],
        [playerView.bottomAnchor constraintEqualToAnchor:_videoContainer.bottomAnchor],
    ]];
    _playerView = playerView;
    
    // Associate the playerView with the playback controller.
    _playerView.playbackController = _playbackController;
    
    [self requestContentFromPlaybackService];
    }
    
    - (void)requestContentFromPlaybackService
    {
    [self.playbackService findVideoWithVideoID:kViewControllerVideoID parameters:nil completion:^(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error) {
    
    	if (video)
    	{
    		[self.playbackController setVideos:@[ video ]];
    	}
    	else
    	{
    		NSLog(@"ViewController Debug - Error retrieving video: `%@`", error);
    	}
    
    }];
    }
    
    @end

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

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

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

      // ** Customize these values with your own account information **
      static NSString * const kViewControllerAccountID = @"your account id";

    プロパティを宣言する

    1. ViewController インターフェイスセクションで、次のデリゲートとクラス宣言を追加します。

      • 14行目:Brightcoveの代理オブジェクトをに追加しますinterface
      • 16行目です:を定義します。このにはBCOVPlaybackController、再生機能を制御するためのメソッドがあります。
      • 17行目:Brightcove UI コントロールのプレーヤービューを定義します。
      • 18行目線:ビデオコンテナビューを定義します。

      @interface ViewController () <BCOVPlaybackControllerDelegate>
      
      @property (nonatomic, strong) id<BCOVPlaybackController> playbackController;
      @property (nonatomic) BCOVPUIPlayerView *playerView;
      @property (nonatomic, weak) IBOutlet UIView *videoContainer;
      
      @end

    初期化メソッドを定義する

    1. ViewController実装セクションで、initを呼び出す関数setup次のステップで定義する関数。

      @implementation ViewController
      #pragma mark Setup Methods
      
      - (instancetype)initWithCoder:(NSCoder *)coder
      {
      self = [super initWithCoder:coder];
      if (self)
      {
      	[self setup];
      }
      return self;
      }

    プレーヤーを設定する

    1. init関数の下に、setupアプリケーションのロード時に呼び出されるという名前のメソッドを作成します。
      • 37行目線:共有マネージャを使用して再生コントローラを作成します。BCOVPlayerSDKManagerこのクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。
      • 39行目:アカウント ID を送信して、アプリをBrightcoveに登録します。
      • 41-43 行:デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。

      - (void)setup
      {
      _playbackController = [BCOVPlayerSDKManager.sharedManager createPlaybackController];
      
      _playbackController.analytics.account = kViewControllerAccountID;
      
      _playbackController.delegate = self;
      _playbackController.autoAdvance = YES;
      _playbackController.autoPlay = YES;
      }

    プレーヤーを設定して再生を開始する

    1. viewDidLoadメソッドで次の操作を実行します。

      • 50~53行目です:ビデオソースの配列を作成します。videoWithURL次のステップで関数を定義します。
      • 56行目です:標準の VOD レイアウトでプレーヤービューを作成します。
      • 58行線:プレーヤービューをメインビューのサブビューとして追加します。
      • 59行:自動サイズ変更マスクをオフにします
      • 60~65行目線:自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
      • 66行線:プレーヤービューを再生コントローラに関連付けます。
      • 69号線:コントローラの再生キューにビデオ配列を追加します。
      • 74行:最初のビデオの再生を開始します。

      - (void)viewDidLoad {
      [super viewDidLoad];
      
      // create an array of videos
      NSArray *videos = @[
      	[self videoWithURL:[NSURL URLWithString:@"https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4"]],
      	[self videoWithURL:[NSURL URLWithString:@"https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4"]]
      ];
      
      // Set up our player view. Create with a standard VOD layout.
      BCOVPUIPlayerView *playerView = [[BCOVPUIPlayerView alloc] initWithPlaybackController:self.playbackController options:nil controlsView:[BCOVPUIBasicControlView basicControlViewWithVODLayout] ];
      
      [_videoContainer addSubview:playerView];
      playerView.translatesAutoresizingMaskIntoConstraints = NO;
      [NSLayoutConstraint activateConstraints:@[
        [playerView.topAnchor constraintEqualToAnchor:_videoContainer.topAnchor],
        [playerView.rightAnchor constraintEqualToAnchor:_videoContainer.rightAnchor],
        [playerView.leftAnchor constraintEqualToAnchor:_videoContainer.leftAnchor],
        [playerView.bottomAnchor constraintEqualToAnchor:_videoContainer.bottomAnchor],
      ]];
      _playerView = playerView;
      
      // Associate the playerView with the playback controller.
      _playerView.playbackController = _playbackController;
      
      // add the video array to the controller's playback queue
      [self.playbackController setVideos:videos];
      // play the first video
      [self.playbackController play];
      }

    残り

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

      - (BCOVVideo *)videoWithURL:(NSURL *)url
      {
      // set the delivery method for BCOVSources that belong to a video
      BCOVSource *source = [[BCOVSource alloc] initWithURL:url deliveryMethod:kBCOVSourceDeliveryHLS properties:nil];
      return [[BCOVVideo alloc] initWithSource:source cuePoints:[BCOVCuePointCollection collectionWithArray:@[]] properties:@{}];
      }

    コードを見る

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

    //
    //  ViewController.m
    //  Simple-Video-Playback
    //
    //  Copyright © 2018 Brightcove. All rights reserved.
    //
    
    #import "ViewController.h"
    
    // ** Customize these values with your own account information **
    static NSString * const kViewControllerAccountID = @"your account id";
    
    @interface ViewController () <BCOVPlaybackControllerDelegate>
    
    @property (nonatomic, strong) id<BCOVPlaybackController> playbackController;
    @property (nonatomic) BCOVPUIPlayerView *playerView;
    @property (nonatomic, weak) IBOutlet UIView *videoContainer;
    
    @end
    
    @implementation ViewController
    #pragma mark Setup Methods
    
    - (instancetype)initWithCoder:(NSCoder *)coder
    {
    self = [super initWithCoder:coder];
    if (self)
    {
    	[self setup];
    }
    return self;
    }
    
    - (void)setup
    {
    _playbackController = [BCOVPlayerSDKManager.sharedManager createPlaybackController];
    
    _playbackController.analytics.account = kViewControllerAccountID; // optional
    
    _playbackController.delegate = self;
    _playbackController.autoAdvance = YES;
    _playbackController.autoPlay = YES;
    }
    
    - (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // create an array of videos
    NSArray *videos = @[
    	[self videoWithURL:[NSURL URLWithString:@"https://solutions.brightcove.com/bcls/assets/videos/Great_Horned_Owl.mp4"]],
    	[self videoWithURL:[NSURL URLWithString:@"https://solutions.brightcove.com/bcls/assets/videos/Great_Blue_Heron.mp4"]]
    ];
    
    // Set up our player view. Create with a standard VOD layout.
    BCOVPUIPlayerView *playerView = [[BCOVPUIPlayerView alloc] initWithPlaybackController:self.playbackController options:nil controlsView:[BCOVPUIBasicControlView basicControlViewWithVODLayout] ];
    
    // add the view as a subview of the main view
    [_videoContainer addSubview:playerView];
    playerView.translatesAutoresizingMaskIntoConstraints = NO;
    [NSLayoutConstraint activateConstraints:@[
      [playerView.topAnchor constraintEqualToAnchor:_videoContainer.topAnchor],
      [playerView.rightAnchor constraintEqualToAnchor:_videoContainer.rightAnchor],
      [playerView.leftAnchor constraintEqualToAnchor:_videoContainer.leftAnchor],
      [playerView.bottomAnchor constraintEqualToAnchor:_videoContainer.bottomAnchor],
    ]];
    _playerView = playerView;
    
    // Associate the playerView with the playback controller.
    _playerView.playbackController = _playbackController;
    
    // add the video array to the controller's playback queue
    [self.playbackController setVideos:videos];
    // play the first video
    [self.playbackController play];
    }
    
    - (BCOVVideo *)videoWithURL:(NSURL *)url
    {
    // set the delivery method for BCOVSources that belong to a video
    BCOVSource *source = [[BCOVSource alloc] initWithURL:url deliveryMethod:kBCOVSourceDeliveryHLS properties:nil];
    return [[BCOVVideo alloc] initWithSource:source cuePoints:[BCOVCuePointCollection collectionWithArray:@[]] properties:@{}];
    }
    
    - (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }
    
    @end

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

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

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

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

      Storyboard view
      ストーリーボードビュー」
    3. アシスタントエディタを表示し、ViewController.mファイルを開きます。

      Assistant editor
      アシスタントエディタ
    4. @property for の横にある開いた円を選択しvideoContainer、それを 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シミュレータでビルドして実行する準備ができました。Video Cloud ライブラリからビデオを再生できるはずです。

    iPhone sample
    iPhoneサンプル

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

    iPhone sample
    iPhoneサンプル

    ページの最終更新日04 Oct 2021