Paso a paso: Aplicación de video simple usando Swift

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

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 / swift 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. Delegado de aplicaciones
  2. Controlador de vista

Crea el proyecto

Configura un proyecto en Xcode. Luego, agregue el SDK junto con las dependencias 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.

    Crear proyecto
    Crear proyecto
  2. Seleccione iOS y Aplicación de vista única para su nuevo proyecto. Seleccione próximo.

    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.

    • Nombre de la Organización: el nombre de tu compañía
    • Identificador de organización: com.example-company
      Esto hace que el nombre del producto sea único para la tienda de aplicaciones.
    • Interfaz: Guión gráfico En este ejemplo, estamos usando la interfaz del guión gráfico.
    • Idioma: Rápido

    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 créelo.

    Guardar proyecto
    Guardar proyecto
  5. Ahora cierra 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 comando

    pod install

    y presione Regreso para ejecutarlo.

    Si CocoaPods no puede encontrar una versión compatible para el pod, o no es la última versión, intente ejecutar lo siguiente en la aplicación Terminal:

    pod update

    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
    Espacio de trabajo
    Espacio de trabajo

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 el reproducción categoría. Esto reproduce audio incluso cuando la pantalla está bloqueada y con el interruptor de timbre / silencio en silencio. Ya que estamos reproduciendo video, usaremos el moviePlayback modo. Para simplificar, colocaremos este código en el Delegado de la aplicación.

  1. En su proyecto, abra el archivo App Delegate (AppDelegate.swift).

  2. En el didFinishLaunchingWithOptions función, agregue código para configurar 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.

    //
    //  AppDelegate.swift
    //  Simple-Video-Playback
    //
    //  Copyright © 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:.
      }
    
    }

Construya el controlador de vista

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

  1. En su proyecto, abra el archivo View Controller (ViewController.swift).

Importar el SDK nativo

Aunque Brightcove Native Player SDK para iOS está escrito en Objective-C, podemos simplemente importar los módulos del marco a nuestro proyecto Swift.

  1. Debajo de lo existente import directiva, agregue lo siguiente para importar el SDK del reproductor nativo de Brightcove:

    import BrightcovePlayerSDK

Personaliza el proyecto con tus valores

Agregue valores 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 12: Define la clave de política de la API de reproducción de Brightcove
    • Línea 13: Define su ID de cuenta de Video Cloud
    • Línea 14: Define su ID de video de Video Cloud

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

Establecer el delegado de la clase

Esto permite que su aplicación escuche y responda a eventos de reproducción de video y eventos de control del reproductor.

  1. Actualice la clase View Controller de la siguiente manera:

    class ViewController: UIViewController, BCOVPlaybackControllerDelegate {
    

Declarar constantes y establecer la vista

  1. En el ViewController class, agregue lo siguiente:

    • Línea 16: Inicializa un administrador compartido. La BCOVPlayerSDKManager class es un singleton que le permite crear otros objetos en el ecosistema SDK.
    • Línea 17: Define una constante, que inicializa el servicio de reproducción de Brightcove con su ID de cuenta y Clave de política. La BCOVPlaybackService La clase proporciona métodos asincrónicos para recuperar datos de la API de reproducción.
    • Línea 18: Define una constante para el controlador de reproducción. La BCOVPlaybackController tiene métodos para controlar la funcionalidad de reproducción.
    • Línea 19: Define una variable para la vista.

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

Crea una función de inicio

  1. Debajo del código del paso anterior, cree un init() funcionan de la siguiente manera:
    • Línea 23: Utiliza el administrador compartido para crear un controlador de reproducción.
    • Línea 27: Opcional: Envía su ID de cuenta de Video Cloud a análisis. Esto solo es necesario si anula la BCOVVideo clase o no utilice el servicio o catálogo de Brightcove Playback.

    • Líneas 29-31: configure el delegado y active las funciones de avance automático y reproducción automática.

     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
    }

Configurar el reproductor

  1. En el viewDidLoad() función, agregue lo siguiente:

    • Línea 39: Cree y configure los controles del reproductor Brightcove, utilizando el diseño estándar de VOD.
    • Línea 44: Agrega la vista del reproductor como una subvista de la vista principal.
    • Línea 45: Apagar máscara de cambio de tamaño automático.
    • Líneas 46-51: Usar Diseño automático para definir restricciones dinámicas para la vista del jugador.
    • Línea 54: Asocie la vista del reproductor con el controlador de reproducción.
    • Línea 56: Llama al requestContentFromPlaybackService función, que definiremos en el siguiente paso.

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

Solicitar contenido de la biblioteca de Brightcove

Para reproducir contenido de video, solicitará una lista de reproducción al servicio de catálogo.

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

    • Línea 60: Devuelve un objeto de video de la API de reproducción según el ID de video dado.
    • Línea 63: Agrega el video al controlador de reproducción.
    • Línea 65: Escribe un mensaje de error si no se devuelve una lista de reproducción.

    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")")
        }
      }
    }

Ver el código

El controlador de vista ahora está completo. Aquí está el código completo:

//
//  ViewController.swift
//  VideoCloudBasicPlayer
//
//  Copyright © 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")")
      }
    }
  }
}

Importar el SDK nativo

Aunque Brightcove Native Player SDK para iOS está escrito en Obj-C, podemos simplemente importar los módulos del marco a nuestro proyecto Swift.

  1. Debajo de lo existente import directiva, agregue lo siguiente para importar el SDK del reproductor nativo de Brightcove:

    import BrightcovePlayerSDK

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.

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

Establecer los delegados de la clase

Esto permite que su aplicación escuche y responda a eventos de reproducción de video y eventos de control del reproductor.

  1. Actualice la clase View Controller de la siguiente manera:

    class ViewController: UIViewController, BCOVPlaybackControllerDelegate {

Declarar constantes y establecer la vista

  1. En el ViewController class, agregue lo siguiente:

    • Línea 14: Inicializa un administrador compartido. La BCOVPlayerSDKManager class es un singleton que le permite crear otros objetos en el ecosistema SDK.
    • Línea 15: Define una constante para el controlador de reproducción. La BCOVPlaybackController tiene métodos para controlar la funcionalidad de reproducción.
    • Línea 16: Define una variable para la vista.

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

Crea una función de inicio

  1. Debajo del código del paso anterior, cree un init() funcionan de la siguiente manera:
    • Línea 20: Utiliza el administrador compartido para crear un controlador de reproducción.
    • Línea 25: Envía su ID de editor de Video Cloud a Brightcove Analytics para registrar su aplicación.

    • Líneas 28-30: Configura el delegado y activa las funciones de avance automático y reproducción automática.

    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
    }

Configurar el reproductor

  1. En el viewDidLoad() función, agregue lo siguiente:

    • Líneas 38-40: Cree una variedad de fuentes de video utilizando rutas de URL.
    • Líneas 43-45: Configura la vista del controlador de reproducción.
    • Línea 48: Agrega la vista del reproductor como una subvista de la vista principal.
    • Línea 49: Apagar máscara de cambio de tamaño automático.
    • Líneas 50-55: Usar Diseño automático para definir restricciones dinámicas para la vista del jugador.
    • Línea 58: Asocia la vista del reproductor con el controlador de reproducción.
    • Línea 61: Agrega la matriz de video a la cola de reproducción del controlador.
    • Línea 62: Inicia la reproducción del primer video.

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

Establecer el método de entrega para las fuentes de video

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

    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!
    }

Ver el código

El controlador de vista ahora está completo. Aquí está el código completo:

//
//  ViewController.swift
//  Simple-Video-Playback for Brightcove Player Customers
//
//  Copyright © 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!
    }
}

Conectar la vista del guión gráfico

Conecta el Main.storyboard ver con el videoContainerView 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.swift archivo.

    Agregar editor
    Agregar editor
  4. Seleccione el círculo abierto junto al @IBOutlet por videoContainerView 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 los videos de su lista de reproducción.

muestra de iPhone
muestra de iPhone

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