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

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

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

    概要

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

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

    はじめに

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

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

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

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

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

    1. iOS 用ネイティブ SDK サンプルをローカルシステムに複製またはダウンロードします。
    2. Player/VideoCloudBasicPlayer サンプルアプリに移動します。このサンプルは Swift で書かれており、Swift Package Manager を使用します。動作する参考として使用し、独自のアプリはこのガイドの Objective-C の手順に従って構築してください。
    3. サンプルの .xcodeproj ファイルを Xcode で開きます。初回ビルド時に Xcode が Brightcove パッケージを解決します。pod install の手順はありません。
    4. シミュレータまたはデバイスを選択し、サンプルをビルドして実行します。

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

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

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

    1. AppDelegateの実装
    2. ビューコントローラの実装

    プロジェクトを作成する

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

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

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

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

      Create Project
      プロジェクトを作成する
    2. テンプレートとして App を選択し、Next をクリックします。

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

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

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

      • Interface:Storyboard。このチュートリアルは、ストーリーボードのビューを @IBOutlet プロパティに接続します。
      • 組織識別子: com.example-company
        これにより、製品名がアプリストアで一意になります。
      Add project information
      プロジェクト情報の追加
    4. プロジェクトを保存する場所を選択し、プロジェクトを作成します。

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

    Swift Package Manager で SDK を追加する(推奨)

    Brightcove Native SDK for iOS をプロジェクトに追加する推奨方法は、Swift Package Manager です。

    1. Xcode で File > Add Package Dependencies を選択します。
    2. パッケージ URL を貼り付けます: https://github.com/brightcove/brightcove-player-sdk-ios
    3. BrightcovePlayerSDK ライブラリ製品を選択し、このチュートリアルの残りの手順に進みます。

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

    既存の CocoaPods 統合では、以下の手順を使用してください。新しい統合には Swift Package Manager を推奨します。

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

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

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

      • CocoaPods と Brightcove の podspec リポジトリを指定します。
      • 対象 OS のバージョンを設定し、use_frameworks! でフレームワークを使用します。
      • アプリのターゲットに Brightcove-Player-Core/XCFramework を追加します。
      • 依存関係の管理については、How To Manage Dependencies With CocoaPods を参照してください。
      source 'https://github.com/CocoaPods/Specs.git'
      source 'https://github.com/brightcove/BrightcoveSpecs.git'
      
      platform :ios, '16.0'
      
      use_frameworks!
      
      target 'Simple-Video-Playback' do
        pod 'Brightcove-Player-Core/XCFramework'
      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
      //
      
      #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;
      }
      
      #pragma mark - UISceneSession lifecycle
      
      - (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
          // Called when a new scene session is being created.
          // Use this method to select a configuration to create the new scene with.
          return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
      }
      
      - (void)application:(UIApplication *)application didDiscardSceneSessions:(NSSet<UISceneSession *> *)sceneSessions {
          // Called when the user discards a scene session.
          // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
          // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
      }
      @end

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

    View Controller の実装を更新して、Brightcove Playback API から動画を再生します。

    1. プロジェクトで、View Controller の実装ファイル(ViewController.m)を開きます。

    Brightcove Player SDK をインポートする

    1. Brightcove Player SDK の次の import 文を追加します。

      @import BrightcovePlayerSDK;

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

    Video Cloud アカウントにアクセスするための Policy Key、アカウント ID、動画 ID を追加します。

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

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

      • 11行目:Brightcove再生 API ポリシーキーを定義します。
      • 12行目:ビデオクラウドアカウント ID を定義します。
      • 13行目:ビデオクラウドビデオ 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 インターフェイスセクションで、次のクラス宣言を追加します。

      • 14行目:Brightcoveの代理オブジェクトをに追加しますinterface。これにより、アプリがビデオ再生イベントをリッスンして応答できるようになります。
      • 16行目:クラスを定義します。BCOVPlaybackServiceこのクラスは、Playback API からデータを取得するための非同期メソッドを提供します。
      • 17行目:を定義します。このにはBCOVPlaybackController、再生機能を制御するためのメソッドがあります。
      • 18行目:Brightcove UI コントロールのプレーヤービューを定義します。
      • 19行目:ビデオコンテナビューを定義します。
      @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アプリケーションのロード時に呼び出されるという名前の関数を作成します。

      • 38行目:共有マネージャを使用して再生コントローラを作成します。BCOVPlayerSDKManagerこのクラスは、SDK エコシステム内に他のオブジェクトを作成できるシングルトンです。
      • 40行目:オプション:動画にアカウントメタデータが含まれない場合(Playback Service を使用せず URL から作成した場合など)、Video Cloud アカウント ID を Video Cloud Analytics に送信します。これにより、このアプリのデータを Video Cloud Analytics で確認できます。

      • 42〜44行:デリゲートを設定し、自動アドバンスと自動再生機能をオンにします。
      • 46行目:アカウント 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関数で、次の操作を実行します。

      • 54行目:標準の VOD レイアウトを使用して、Brightcoveプレーヤーコントロールを作成および設定します。
      • 56行目:プレーヤービューをメインビューのサブビューとして追加します。
      • 57行目:自動サイズ変更マスクをオフにします。
      • 58〜63行目:自動レイアウトを使用して、プレーヤービューの動的拘束を定義します。
      • 64行目:プレーヤービューを、関連付けられたグローバル変数に割り当てます。
      • 67行目:プレーヤービューを再生コントローラに関連付けます。
      • 69行目: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
      {
        NSDictionary *configuration = @{BCOVPlaybackService.ConfigurationKeyAssetID:kViewControllerVideoID};
        [self.playbackService findVideoWithConfiguration:configuration queryParameters:nil completion:^(BCOVVideo *video, id jsonResponse, NSError *error) {
      
          if (video)
          {
              [self.playbackController setVideos:@[ video ]];
          }
          else
          {
              NSLog(@"ViewController Debug - Error retrieving video: `%@`", error);
          }
      
        }];
      }

    コードを見る

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

    //
    //  ViewController.m
    //  Simple-Video-Playback
    //
    
    #import "ViewController.h"
    @import BrightcovePlayerSDK;
    
    // ** 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
    {
      NSDictionary *configuration = @{BCOVPlaybackService.ConfigurationKeyAssetID:kViewControllerVideoID};
      [self.playbackService findVideoWithConfiguration:configuration queryParameters:nil completion:^(BCOVVideo *video, id 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:BCOVSource.DeliveryMP4 properties:nil];
      return [[BCOVVideo alloc] initWithSource:source cuePoints:[BCOVCuePointCollection collectionWithArray:@[]] properties:@{}];
      }

    コードを見る

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

    //
    //  ViewController.m
    //  Simple-Video-Playback
    //
    //  Copyright © Brightcove. All rights reserved.
    //
    
    #import "ViewController.h"
    @import BrightcovePlayerSDK;
    
    // ** 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:BCOVSource.DeliveryMP4 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サンプル

    ページの最終更新日20 Oct 2026