Restricciones de reproducción con los SDK nativos

En este tema, aprenderá a utilizar las restricciones de reproducción con los SDK nativos de Brightcove.

Introducción

De forma predeterminada, los SDK nativos se comunican con la API de reproducción de Brightcove para recuperar el contenido de su video y lista de reproducción. Un nuevo sistema para administrar los derechos de reproducción y las restricciones se encuentra frente a la API de reproducción y proporciona autorización de reproducción mediante licencias DRM.

Puede usar derechos de reproducción con o sin DRM, pero si elige usar restricciones de tiempo de ejecución, deberá usar un token web JSON (JWT).

La protección de claves de licencia ofrece un nivel adicional de seguridad cuando se usa Dynamic Delivery con contenido protegido por DRM o HTTP Live Streaming Encryption (HLSe). Las solicitudes de licencia se pueden autenticar mediante un token web JSON (JWT) firmado.

El JWT se utiliza al solicitar la licencia de video, una vez que el video se ha cargado en el reproductor y se ha seleccionado la fuente.

Para obtener más información sobre esta característica, consulte lo siguiente:

Requisitos

Para utilizar las restricciones de reproducción, necesitará las siguientes versiones de los SDK nativos de Brightcove:

  • Androide: SDK nativo para Android versión 6.11.0 o posterior
  • iOS: SDK nativo para iOS versión 6.7.0 o posterior

Adiciones

Las características adicionales para usar Restricciones de reproducción incluyen:

  • Androide: SDK nativo para iOS versión 7.1.3 soporte fijo para Live HLSe License Keys Protection
  • iOS: El SDK nativo para iOS versión 6.10.5 agregó compatibilidad con la protección de claves de licencia Live HLSe

¿Como funciona?

Las restricciones de reproducción se refieren a la solución completa, que incluye:

  • Derechos de reproducción
  • Protección de claves de licencia

Derechos de reproducción

De forma predeterminada, los SDK nativos realizan una solicitud a la API de reproducción si tiene una clave de política. El SDK envía la solicitud al siguiente punto final y recupera su contenido:

edge.api.brightcove.com

Para verificar los derechos de reproducción con su solicitud de API de reproducción, no incluirá la clave de política. Cuando no hay clave de política, el SDK envía la solicitud a este extremo:

edge-auth.api.brightcove.com

Si se aprueban todas las comprobaciones asociadas con los derechos de reproducción, se devolverá su contenido.

Protección de claves de licencia

La protección de contenido DRM o HLSe utiliza solicitudes de licencia / clave, que pueden proteger cada solicitud de transmisión, con el uso de un JSON Web Token (JWT).

Sus solicitudes a la API de reproducción incluirán la clave de política y los SDK enviarán la solicitud al siguiente punto final:

edge.api.brightcove.com

Androide: Uso de derechos de reproducción

Para realizar solicitudes de API de reproducción que verifiquen los derechos de reproducción, siga estos pasos:

  1. Empiece con el Aplicación de muestra básica.

  2. Utilice el patrón del generador de catálogos sin la clave de política.

    Catalog catalog = new Catalog.Builder(eventEmitter, account).build();

    Si está siguiendo la aplicación de muestra de Brightcove, obtiene el ID de cuenta como se muestra aquí:

    String account = getString(R.string.account);
  3. Opcional: Si desea utilizar restricciones de tiempo de ejecución, debe crear un JWT y pasarlo con la solicitud de catálogo.

    1. Cree su JWT. Para obtener más detalles, consulte la Descripción general: Documento de restricciones de reproducción de Brightcove.
    2. Pase su JWT con la solicitud de catálogo configurando el JWT en el HttpRequestConfig . Para obtener más detalles, consulte la Androide: Uso de la sección Protección de claves de licencia.

Androide: Uso de la protección de claves de licencia

El SDK nativo para Android actualmente admite la protección de clave / licencia para fuentes HLSe y Widevine DASH. Proporcionará su token de autorización como parte de la solicitud de catálogo de Brightcove para un solo video o una lista de reproducción.

Para realizar una solicitud de catálogo de Brightcove, siga estos pasos:

  1. Crear un HttpRequestConfig y establezca el token de autorización de Brightcove en el valor de su token web JSON.

    HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
      .setBrightcoveAuthorizationToken("your jwt")
      .build();
    
  2. Utilice uno de los siguientes métodos de catálogo con su HttpRequestConfig objeto:

    Para una solicitud de video, use uno de los siguientes:

    findVideoByID(String, HttpRequestConfig, VideoListener)
    
    findVideoByReferenceID(String, HttpRequestConfig, VideoListener)
    

    Para una solicitud de lista de reproducción, use uno de los siguientes:

    findPlaylistByID(String, HttpRequestConfig, PlaylistListener)
    
    findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener)
    

    El SDK maneja los detalles del uso del token para la adquisición de licencias de HLSe y Widevine.

Ejemplo de código

A continuación, se muestra un ejemplo que muestra cómo pasar su token de autorización al realizar una solicitud de catálogo:

String myToken = "your jwt";
HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
  .setBrightcoveAuthorizationToken(myToken)
  .build();
...

Catalog catalog = new Catalog.Builder(eventEmitter, account)
  .setPolicy(getString(R.string.policy))
  .build();
catalog.findVideoByReferenceID(videoReferenceId, httpRequestConfig, new VideoListener(){...});

Reproducción sin conexión

El catálogo sin conexión findVideo , requestPurchaseLicense y requestRentalLicense todos los métodos toman un HttpRequestConfig como argumento.

He aquí un ejemplo:

private HttpRequestConfig httpRequestConfig;
private String myToken = "your jwt";
...
HttpRequestConfig.Builder httpRequestConfigBuilder = new HttpRequestConfig.Builder();
httpRequestConfigBuilder.setBrightcoveAuthorizationToken(myToken);
httpRequestConfig = httpRequestConfigBuilder.build();
playlist.findPlaylist(catalog, httpRequestConfig, new PlaylistListener() {
    @Override
    public void onPlaylist(Playlist playlist) {
        videoListAdapter.setVideoList(playlist.getVideos());
        onVideoListUpdated(false);
        brightcoveVideoView.addAll(playlist.getVideos());
    }

    @Override
    public void onError(String error) {
        String message = showToast("Failed to find playlist[%s]: %s", playlist.displayName, error);
        Log.w(TAG, message);
        onVideoListUpdated(true);
    }
});

Para obtener más detalles, consulte la Aplicación de muestra de reproducción sin conexión.

Protección de claves de licencia con reglas de entrega

Para combinar la protección de claves de licencia con las reglas de entrega, configure el HttpRequestConfig.Builder para hacer lo siguiente:

  • Establecer el token de autorización de Brightcove (JWT)
  • Establecer el ID de configuración de la regla de entrega

La configuración de Builder resultante se vería así:

HttpRequestConfig httpRequestConfig = new HttpRequestConfig.Builder()
  .addQueryParameter(HttpRequestConfig.KEY_DELIVERY_RULE_CONFIG_ID, "your rules id")
  .setBrightcoveAuthorizationToken("your jwt")
  .build();

Respuestas

Las siguientes respuestas están asociadas con la protección de claves de licencia:

  • 200 - Se permite que la licencia continúe
  • 401 - No se debe permitir que la entrega de la licencia continúe

iOS: Uso de derechos de reproducción

Para realizar solicitudes de API de reproducción que verifiquen los derechos de reproducción, siga estos pasos:

  1. Empiece con el Aplicación de muestra básica.

  2. Crear una instancia de BCOVPlaybackService , configurando la clave de política en nil .

    let playbackService = BCOVPlaybackService(accountId: kViewControllerAccountID, policyKey: nil)
  3. Opcional: Si desea utilizar restricciones de tiempo de ejecución, debe crear un JWT y pasarlo con la solicitud de catálogo.

    1. Cree su JWT. Para obtener más detalles, consulte la Descripción general: Documento de restricciones de reproducción de Brightcove.
    2. Pasa tu JWT con la solicitud de catálogo. Para obtener más información, consulte el iOS: Uso de la sección Protección de claves de licencia.

iOS: Uso de la protección de claves de licencia

Cuando utilice la protección de claves de licencia, deberá utilizar los métodos del servicio de reproducción que le permiten pasar su token web JSON (JWT). Esto se hace usando el authToken parámetro.

Para una solicitud de video, use uno de los siguientes:

- (void)findVideoWithVideoID:(NSString *)videoID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findVideoWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error))completionHandler;

Para una solicitud de lista de reproducción, use uno de los siguientes:

- (void)findPlaylistWithPlaylistID:(NSString *)playlistID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;
- (void)findPlaylistWithReferenceID:(NSString *)referenceID authToken:(NSString *)authToken parameters:(NSDictionary *)parameters completion:(void (^)(BCOVPlaylist *playlist, NSDictionary *jsonResponse, NSError *error))completionHandler;

Los detalles del uso del token para la adquisición de licencias de HLSe y FairPlay son manejados por el SDK.

Para obtener más detalles, consulte la Servicio de autorización de reproducción sección del SDK nativo para referencia de iOS.

Reproducción sin conexión

Si está utilizando el servicio de autorización de reproducción con reproducción sin conexión, existe un nuevo método para renovar una licencia de FairPlay que acepta un token de autorización:

// Request license renewal
    [BCOVOfflineVideoManager.sharedManager renewFairPlayLicense:offlineVideoToken
        video:video // recent video from Playback API or Playback Service class
        authToken: authToken
        Parameters: parameters
        completion:^(BCOVOfflineVideoToken offlineVideoToken, NSError *error)
    {
        // handle errors
    }];

Cuando finalice la renovación de la licencia, el bloque de finalización se llamará con el mismo token de video sin conexión que se pasó. Un NSError indicará cualquier problema que haya ocurrido (o nulo si no hay error).

Para obtener más detalles, consulte la Renovación de una licencia FairPlay sección del SDK nativo para referencia de iOS.

Protección de claves de licencia con reglas de entrega

Para combinar la protección de claves de licencia con las reglas de entrega, haga lo siguiente:

  • Defina el parámetro para su ID de reglas de entrega
  • Pase el ID de las reglas de entrega como parámetro con la llamada de catálogo a la API de reproducción
  • Pase su JSON Web Token (JWT) usando el authToken parámetro

Aquí hay un ejemplo de código:

- (void)requestContentFromPlaybackService
  {
    NSDictionary *playbackAPIParameters = @{@"config_id":@"your rules id"};

    [self.playbackService findVideoWithVideoID:kViewControllerVideoID
      authToken:(NSString *)authToken
      parameters:playbackAPIParameters
      completion:^(BCOVVideo *video, NSDictionary *jsonResponse, NSError *error) {

      if (video)
      {
        [self.playbackController setVideos:@[ video ]];
      }
      else
      {
        NSLog(@"ViewController Debug - Error retrieving video playlist: `%@`", error);
      }
    }];
  }

Respuestas

Las siguientes respuestas están asociadas con la protección de claves de licencia:

  • 200 - Se permite que la licencia continúe
  • 401 - No se debe permitir que la entrega de la licencia continúe