Paso a paso: Aplicación de video simple usando Objective-C

En este tema, aprenderá a crear una aplicación de reproducción de video simple usando Brightcove Player SDK para iOS. Lo construirá utilizando el lenguaje de programación Objective-C.

Resumen

Este ejemplo reproduce un video devuelto por API de reproducción de Brightcove , que es la API más reciente y recomendada para recuperar contenido de su biblioteca de Video Cloud.

Para esta opción, necesitará una clave de política. Si no está familiarizado con las claves de política, consulte Descripción general de la API de políticas.

Empezar

Este ejemplo reproduce videos de una matriz interna de archivos de video.

Siga los pasos a continuación para familiarizarse con la configuración de un proyecto de aplicación que utiliza Brightcove Player SDK para iOS. Puede ver el código completo para cada uno de los siguientes:

Hay dos formas de probar este ejemplo:

Descarga la muestra

Descarga todo el proyecto de Xcode para experimentar.

  1. Clona o descarga el SDK nativo para muestras de iOS a su sistema local.
  2. Navega al Reproductor / VideoCloudBasicPlayer / objc aplicación de muestra.
  3. Ejecutar el pod install mando.
  4. Abra y ejecute el espacio de trabajo recién creado.

Para obtener más detalles, consulte la Ejecución de aplicaciones de muestra para el SDK nativo para iOS / tvOS documento.

Cree la aplicación siguiendo los pasos de esta guía

Siga los pasos a continuación para familiarizarse con la configuración de un proyecto de aplicación que utilice Brightcove Player SDK para tvOS. Puede ver el código completo para cada uno de los siguientes:

  1. Implementación de AppDelegate
  2. Ver encabezado del controlador
  3. Ver implementación del controlador

Crea el proyecto

Configura un proyecto en Xcode. Luego, agregue Brightcove Player SDK junto con cualquier dependencia al proyecto.

Configurar el proyecto Xcode

Cree un nuevo proyecto de Xcode para la aplicación.

  1. Inicie la creación de un nuevo proyecto de iOS en Xcode. Seleccione Crea un nuevo proyecto de Xcode. Alternativamente, en el menú superior de Xcode, puede seleccionar Archivo , Nuevo , Proyecto.

    Crear proyecto
    Crear proyecto
  2. Elija Aplicación para la plantilla y haga clic en Siguiente .

    Elija la plantilla del proyecto
    Elija la plantilla del proyecto
  3. Configure la información del proyecto de la siguiente manera:

    • Nombre del producto: Reproducción de video simple
    • Equipo: ninguno

      El campo Equipo es opcional. Si desea distribuir su aplicación en la App Store, deberá seleccionar un equipo al que pertenezca a través del Programa de desarrolladores de Apple. Se requiere el nombre del equipo para la firma de código. En este ejemplo, seleccionaremos ninguno.

    • Identificador de organización: com.example-company
      Esto hace que el nombre del producto sea único para la tienda de aplicaciones.
    • Interfaz: Storyboard
    • Idioma: C objetivo

    Haz clic en Siguiente.

    Agregar información del proyecto
    Agregar información del proyecto
  4. Elija la ubicación donde desea guardar su proyecto y haga clic en Crear .

    Guardar proyecto
    Guardar proyecto
  5. Ahora cierre el proyecto (sí, ciérrelo, ¡esto es importante!)

Agregue el SDK y sus dependencias a su proyecto

La forma más fácil de agregar el SDK y sus dependencias a su proyecto es usar CocoaPods.

CocoaPods es un administrador de dependencias que agrega bibliotecas a su proyecto. No es necesario, pero facilita la instalación. Para instalar CocoaPods, consulte las instrucciones en el CocoaPods sitio.

  1. En la carpeta de su proyecto, cree un archivo de texto sin formato llamado Podfile (sin extensión de archivo).

  2. Con un editor de texto, agregue las siguientes líneas de código al Podfile y guárdelo. Este código hace lo siguiente:

    • Línea 1: Apunta a la ubicación de GitHub para las especificaciones del pod CocoaPods
    • Línea 2: Apunta a la ubicación de GitHub para las especificaciones del pod de Brightcove
    • Línea 4: Define la versión de la plataforma iOS
    • Línea 6: Establece pods para usar marcos en lugar de bibliotecas estáticas
    • Líneas 8-10: Instale el SDK del reproductor nativo de Brightcove

    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. Abra una sesión de Terminal y navegue hasta su Reproducción de video simple Carpeta del proyecto Xcode.

    Sesión terminal
    Sesión terminal
  4. En la sesión de Terminal, escriba el siguiente comando:

    pod install

    y presione Regreso para ejecutarlo. Debería ver una serie de mensajes en el terminal que indican que Brightcove Player SDK se ha agregado a su proyecto.

  5. El pod install comando crea el .xcworkspace archivo para su proyecto.

    Observe la última línea , que es importante; a partir de este punto, debe hacer lo siguiente:

    • Abra el archivo Simple-Video-Playback.xcworkspace en Xcode
    • No use el archivo Simple-Video-Playback.xcodeproj

Codificar la aplicación de video

Cree el código para una aplicación de reproducción de video simple.

  1. En Xcode, abra el Simple-Video-Playback.xcworkspace expediente.

Establecer el comportamiento de audio para la aplicación

La sesión de audio maneja el comportamiento del audio a nivel de la aplicación. Más información sobre el AVAudioSession clase.

Para esta muestra, usaremos AVAudioSessionCategoryPlayback. Esto reproduce audio incluso cuando la pantalla está bloqueada y con el interruptor de timbre / silencio en silencio. Para simplificar, pondremos el código para esto en el Delegado de la aplicación.

  1. En su proyecto, abra el archivo de implementación de App Delegate (AppDelegate.m).

  2. En el didFinishLaunchingWithOptions método, agregue código para establecer la categoría de la sesión de audio. Asegúrese de importar el AVFoundation marco de referencia.

    • Necesitamos el código a continuación para asegurarnos de que el audio se reproduzca cuando lo esperamos. Por ejemplo, sin configurar este código, no escucharemos el video cuando el interruptor de silencio esté encendido.
    • Para simplificar la muestra, lo colocamos en el delegado de la aplicación. Para obtener más información sobre cómo usar esto en su propia aplicación, consulte la Guía de programación de sesiones de audio.
    //
    //  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

Cree la implementación de View Controller

Actualice la implementación de View Controller para reproducir un video del servicio de catálogo de Brightcove.

  1. En su proyecto, abra el archivo de implementación de View Controller (ViewController.m).

Importar el archivo de encabezado de Brightcove Player SDK

  1. Agregue la siguiente declaración de importación para Brightcove Player SDK:

    @import BrightcovePlayerSDK;

Personaliza el proyecto con tus valores

Agregue valores de identificación de token y lista de reproducción para acceder a su cuenta de Video Cloud.

Este ejemplo reproduce un video devuelto por API de reproducción de Brightcove , que es la API más reciente y recomendada para recuperar contenido de su biblioteca de Video Cloud. Si no está familiarizado con las claves de política, consulte la Descripción general de la API de políticas.

  1. Bajo la #import directivas, agregue sus propios valores para lo siguiente:

    • Línea 11: Define la clave de política de la API de reproducción de Brightcove.
    • Línea 12: Define su ID de cuenta de Video Cloud.
    • Línea 13: Define su ID de video de Video Cloud.
    // ** 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";

Declarar propiedades

  1. En la sección de la interfaz ViewController, agregue las siguientes declaraciones de clase:

    • Línea 14: Agrega los delegados de Brightcove a la interface. Esto permite que su aplicación escuche y responda a eventos de reproducción de video.
    • Línea 16: Define el BCOVPlaybackService class, que proporciona métodos asincrónicos para recuperar datos de la API de reproducción.
    • Línea 17: Define el BCOVPlaybackController , que tiene métodos para controlar la funcionalidad de reproducción.
    • Línea 18: Define la vista del reproductor para los controles de la interfaz de usuario de Brightcove.
    • Línea 19: Define la vista del contenedor de video.
    @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

Definir el método de inicialización

  1. En la sección de implementación de ViewController, defina un init función que llama a setup función que definirá en el siguiente paso.

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

Configurar el reproductor

  1. Bajo la init función, crea una función llamada setup , que se llama cuando se carga la aplicación.

    • Línea 38: Utiliza el administrador compartido para crear un controlador de reproducción. La BCOVPlayerSDKManager class es un singleton que le permite crear otros objetos en el ecosistema SDK.
    • Línea 40: Opcional: Si anula el BCOVVideo class o no utilice el catálogo o el servicio de reproducción y reproducción de Brightcove, debe enviar su ID de cuenta de Video Cloud a Video Cloud Analytics. Esto le permite ver los datos de esta aplicación en Video Cloud Analytics.

    • Líneas 42-44: configure el delegado y active las funciones de avance automático y reproducción automática.
    • Línea 46: Inicializa el servicio de reproducción con su ID de cuenta y Clave de política.

    - (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];
    }

Configurar el reproductor

  1. En el viewDidLoad función haga lo siguiente:

    • Línea 54: Cree y configure los controles del reproductor Brightcove, utilizando el diseño estándar de VOD.
    • Línea 56: Agrega la vista del reproductor como una subvista de la vista principal.
    • Línea 57: Apagar máscara de cambio de tamaño automático.
    • Líneas 58-63: Usar Diseño automático para definir restricciones dinámicas para la vista del jugador.
    • Líneas 64: Asigna la vista del jugador a su variable global asociada.
    • Líneas 67: Asocia la vista del reproductor con el controlador de reproducción.
    • Línea 69: Llama al requestContentFromPlaybackService función, que definirá en el siguiente paso.

    - (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];
    }

Solicitar contenido de la biblioteca de Brightcove

Para reproducir contenido de video, solicitará un video de su biblioteca de Video Cloud.

  1. Bajo la viewDidLoad función, crea una función llamada requestContentFromPlaybackService como sigue:

    - (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);
    	}
    
    }];
    }

Ver el código

La implementación de View Controller ahora está completa. Aquí está el código completo:

//
//  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
{
[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

Personaliza el proyecto con tus valores

Establezca el valor de su ID de cuenta, que se enviará a Brightcove en un paso posterior.

  1. Bajo la #import directivas, agregue su propio valor para su ID de cuenta de Brightcove. Esto se utilizará para registrar su aplicación en Brightcove.

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

Declarar propiedades

  1. En la sección de la interfaz ViewController, agregue los siguientes delegados y declaraciones de clase:

    • Línea 14: Agrega los delegados de Brightcove a la interface.
    • Línea 16: Define el BCOVPlaybackController , que tiene métodos para controlar la funcionalidad de reproducción.
    • Línea 17: Define la vista del reproductor para los controles de la interfaz de usuario de Brightcove.
    • Línea 18: Define la vista del contenedor de video.

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

Definir métodos de inicialización

  1. En la sección de implementación de ViewController, defina un init función que llama a setup función que definirá en el siguiente paso.

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

Configurar el reproductor

  1. Bajo la init función, crea un método llamado setup , que se llama cuando se carga la aplicación.
    • Línea 37: Crea el controlador de reproducción usando un administrador compartido. La BCOVPlayerSDKManager class es un singleton que le permite crear otros objetos en el ecosistema SDK.
    • Línea 39: Registra su aplicación con Brightcove enviando su ID de cuenta.
    • Líneas 41-43: configure el delegado y active las funciones de avance automático y reproducción automática.

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

Configure el reproductor e inicie la reproducción

  1. En el viewDidLoad método haga lo siguiente:

    • Líneas 50-53: Crea una variedad de fuentes de video. Definirás el videoWithURL función en el siguiente paso.
    • Línea 56: Cree la vista del reproductor con un diseño VOD estándar.
    • Línea 58: Agrega la vista del reproductor como una subvista de la vista principal.
    • Línea 59: Apagar máscara de cambio de tamaño automático.
    • Líneas 60-65: Usar Diseño automático para definir restricciones dinámicas para la vista del jugador.
    • Línea 66: Asocia la vista del reproductor con el controlador de reproducción.
    • Línea 69: Agrega la matriz de video a la cola de reproducción del controlador.
    • Línea 74: Inicia la reproducción del primer video.

    - (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];
    }

El resto

  1. Bajo la viewDidLoad función, cree una función que establezca el método de entrega para BCOVSources que pertenecen a un video.

    - (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:@{}];
    }

Ver el código

La implementación de View Controller ahora está completa. Aquí está el código completo:

//
//  ViewController.m
//  Simple-Video-Playback
//
//  Copyright © 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

Conectar la vista del guión gráfico

Conecta el Main.storyboard ver con elvideoContainer propiedad.

  1. En el Xcode, abra el Main.storyboard expediente.

  2. En la vista complementaria, expanda el Ver escena del controlador y luego el Ver controlador menú para exponer el Vista objeto.

    Vista de guión gráfico
    Vista de guión gráfico "
  3. Haga clic en Agregar editor a la derecha y abra el ViewController.m archivo.

    Agregar editor
    Agregar editor
  4. Seleccione el círculo abierto junto al @property por videoContainer y arrástrelo al Vista objeto para conectar estos componentes.

    Conecta la vista
    Conecta la vista

Gestionar la seguridad de los medios

App Transport Security (ATS) aplica conexiones seguras entre su aplicación y los servicios web. Con el lanzamiento de Apple del SDK de iOS 9, una nueva función llamada Seguridad de transporte de aplicaciones (ATS) fue añadido.

  1. Una de las siguientes situaciones se aplicará a su aplicación:

    • De forma predeterminada, Brightcove Native SDK para iOS utiliza una política de selección de fuente para elegir HTTPS sobre fuentes HTTP, por lo que puede crear sus aplicaciones con ATS habilitado.

      Eso es todo, está listo para ejecutar su aplicación.

       

    • Si sus activos remotos usan HTTPS en lugar de fuentes HTTP, entonces puede crear sus aplicaciones con ATS habilitado.

      Eso es todo, está listo para ejecutar su aplicación.

       

    • Si está utilizando fuentes HTTP o tiene otras llamadas HTTP en su aplicación, puede encontrar el siguiente mensaje de error:

      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.

      Esto significa que ATS está habilitado, pero su sistema no está configurado para cumplir con los requisitos de ATS. Para solucionar esta situación, consulte la Trabajar con App Transport Security (ATS) documento.

Ejecutar la aplicación

La aplicación está lista para compilarse y ejecutarse en un iPhone, iPad o el simulador de iOS. Debería poder reproducir el video desde su biblioteca de Video Cloud.

muestra de iPhone
muestra de iPhone

Para obtener más detalles, consulte Brightcove Player SDK for iOS Samples .

La aplicación está lista para compilarse y ejecutarse en un iPhone, iPad o el simulador de iOS. Debería poder reproducir los videos definidos en su matriz.

muestra de iPhone
muestra de iPhone

Para obtener más detalles, consulte Brightcove Player SDK for iOS Samples .