Uso compartido de medios

En este tema, aprenderá a compartir videos de una cuenta de Video Cloud a otra utilizando la API de CMS.

Introducción

El uso compartido de medios es una función de Video Cloud que permite a los editores compartir videos con otros editores, lo que le permite administrar videos más fácilmente en varias cuentas. Por ejemplo, los editores pueden mantener una cuenta principal de contenido de video y luego compartir videos con otras divisiones o subsidiarias de la organización.

Tenga en cuenta que todas las operaciones de uso compartido de medios también se pueden realizar en Studio. Ver Administrar la configuración de uso compartido de medios.

Medios compartidos y facturación

Para obtener información sobre cómo funciona la facturación para medios compartidos, consulte Uso compartido de medios mediante el módulo de medios.

Terminología

En el intercambio de medios, existe una relación entre una cuenta maestra (que comparte videos) y una o más cuentas de afiliados (que reciben videos compartidos) involucradas:

Terminología de uso compartido de medios
Cuenta Descripción
Maestría La cuenta que creó el video original.

El Maestro es propietario del contenido y es responsable de configurar, administrar y proporcionar contenido a los afiliados.

Afiliado La cuenta que recibe el video.

El Afiliado puede aceptar contenido compartido de un Máster.

Canal Un canal a través del cual se comparte contenido de un Master a cualquier número de Afiliados. Cuando el uso compartido de medios está habilitado default El canal se creará en su cuenta.
Relación Describe la interacción entre un Máster y un Afiliado.

Una relación se compone de un Maestro para compartir contenido, un Canal a través del cual se comparte contenido, un Contrato para aceptar contenido y un Afiliado para recibir contenido.

Contrato Describe la relación de intercambio entre un Master y un Afiliado.

El maestro crea un contrato y luego debe aceptarse para que se habilite el uso compartido. El Afiliado también puede especificar si los videos compartidos se aceptan automáticamente o deben aprobarse uno por uno.

URL base

Como para todos CMS API solicitudes, la URL base para las operaciones que se describen a continuación es:

      https://cms.api.brightcove.com/v1

Todos los puntos finales que se describen a continuación se agregarán a la URL base cuando realice solicitudes.

Autenticación

La autenticación para solicitudes requiere un encabezado de autorización:

          Authorization: Bearer {access_token}

access_token Es un token de acceso temporal de OAuth2 que debe obtenerse del servicio OAuth de Brightcove. Para obtener detalles sobre cómo obtener credenciales de cliente y usarlas para recuperar tokens de acceso, consulte la Descripción general de Brightcove OAuth.

Tenga en cuenta que todas las operaciones alrededor relaciones nuevos permisos requeridos:

      video-cloud/video/all
      video-cloud/sharing-relationships/read
      video-cloud/sharing-relationships/create
      video-cloud/sharing-relationships/update
      video-cloud/sharing-relationships/delete

Alternativamente, puede usar:

      video-cloud/sharing-relationships/all

En la página de administración de autenticación de la API de Studio, se muestran dos permisos:

  • Compartir lectura (equivalente a video-cloud/sharing-relationships/read)
  • Compartir lectura / escritura (equivalente a video-cloud/sharing-relationships/all)

Restricciones para compartir

De forma predeterminada, todos los videos se pueden compartir. Sin embargo, puede evitar compartir si:

  • La cuenta de afiliado no tiene un campo personalizado para el cual se establece un valor en el video en la cuenta maestra.
  • La cuenta maestra tiene habilitado el filtrado geográfico, pero la cuenta de afiliado no

Coincidencia de campos personalizados

Puede aplicar la coincidencia de campos personalizados para un canal, lo que significa que los videos compartidos fallarán si el video tiene valores para campos personalizados que no están presentes en la cuenta de afiliado. Los videos se seguirán compartiendo correctamente si el video no tiene valores para ningún campo personalizado que no coincida.

De forma predeterminada, la coincidencia de campos personalizados es no en vigor.

Si un video compartido falla debido a campos personalizados que no coinciden, verá un error como este en la respuesta:

      {
        "video_id": "5691312273001",
        "affiliate_id": "47509719001",
        "affiliate_video_id": null,
        "status": "PROCESSING",
        "error_message": [{"error_code":"MISSING_CUSTOM_FIELDS","error_message":"Affiliate account is missing custom fields: [subject]"}],
        "shared_at": "2018-01-03T16:29:19.080Z",
        "updated_at": "2018-01-03T16:29:19.080Z"
      }

Coincidencia de filtrado geográfico

Si la coincidencia de filtrado geográfico está habilitada para un canal, los videos no se pueden compartir si la cuenta principal tiene habilitado el filtrado geográfico y la cuenta de afiliado no.

De forma predeterminada, la coincidencia de filtrado geográfico es en vigor.

El error se verá así:

      {
        "video_id": "5691312273001",
        "affiliate_id": "47509719001",
        "affiliate_video_id": null,
        "status": "PROCESSING",
        "error_message": [{"error_code":"CONFLICT","error_message":"Affiliate account is not configured for geo restriction."}],
        "shared_at": "2018-01-03T16:29:19.080Z",
        "updated_at": "2018-01-03T16:29:19.080Z"
      
      

Ver Actualizar canal a continuación para ver cómo se actualiza un canal para aplicar campos personalizados y / o coincidencias de filtrado geográfico.

¿Qué se comparte?

Esta sección explica qué se comparte y cómo se manejan los cambios posteriores en el video.

Cuando se comparte el video

La mayoría de los campos de metadatos de video se copian del Master a la cuenta de Afiliado cuando se comparte el video. Las excepciones notables son:

  • id- el video tendrá su propia identificación única en la cuenta de afiliado
  • campos de fecha como created_at y updated_at

Todos los activos de video (representaciones, imágenes, text_tracks, etc.) son utilizados por las cuentas de afiliados para su reproducción.

Después de que se comparta el video

Una vez que se ha compartido el video, algunos cambios en el video en la cuenta maestra son heredados automáticamente por las cuentas de afiliados, y otros no.

Activos de video

A excepción de las imágenes , Los cambios maestros a los activos de video son siempre heredado por los afiliados. Afiliados no puede cambiar activos como interpretaciones, manifiestos, pistas de texto o el maestro digital.

Los cambios en las imágenes por parte del Maestro son heredados por el Afiliado a menos que el Afiliado haya reemplazado la (s) imagen (s). Una vez que un Afiliado cambia una imagen, esa imagen ya no se heredará del Maestro.

Metadatos de video

El Afiliado puede modificar los metadatos del video (como el nombre, la descripción y la identificación de referencia), y los cambios realizados en el video maestro son no heredado por el Afiliado.

Compartiendo videos

Tenga en cuenta, sin embargo, que si el Maestro re-comparte el video (esto solo se puede hacer a través de la API de CMS, no en Studio), todos los activos y metadatos (aparte de los campos de datos / tiempo) se compartirán con los Afiliados, sobrescribir cualquier cambio que los afiliados hayan realizado.

Descripción general de los pasos para compartir medios

Establecer una relación

A continuación se muestra un resumen de las operaciones para establecer una relación (haga clic en el nombre de la operación para obtener más detalles):

Operaciones de configuración
Operaciones maestras
Operación Método / criterio de valoración Descripción
Lista de canales GET /accounts/ master_account_id/channels Obtenga una lista de canales para la cuenta
Obtener detalles del canal GET /accounts/ master_account_id/channels/ channel_name [2-1] Obtener detalles de un canal
Actualizar canal POST /accounts/ master_account_id/channels/ channel_name Actualizar la configuración de los canales
Lista de afiliados del canal GET /accounts/ master_account_id/channels/default/members Obtenga los afiliados para un canal
Agregar afiliados PUT /accounts/ master_account_id/channels/default/members Agregar afiliados a un canal
Eliminar afiliado DELETE /accounts/ master_account_id/channels/default/members/ affiliate_account_id Elimina un afiliado de un canal
Operaciones afiliadas
Operación Método / criterio de valoración Descripción
Lista de contratos disponibles GET /accounts/ affiliate_account_id/contracts Obtiene todos los contratos disponibles para la cuenta
Obtenga un contrato para una cuenta específica GET /accounts/ affiliate_account_id/contracts/ master_account_id Obtiene un contrato, si lo hay, de una cuenta específica
Aprobar un contrato PATCH /accounts/ affiliate_account_id/contracts/ master_account_id Aceptar y configurar las condiciones de aceptación del contrato

Notas

  • [2-1] Actualmente solo hay un canal llamado default

Compartir vídeos

Las operaciones para compartir videos las realiza la cuenta maestra. La cuenta de Afiliado puede aceptar la participación (si auto_accept se establece en false ) y puede actualizar metadatos e imágenes de video compartidos usando el estándar Actualizar vídeo operación.

Estas son las operaciones de uso compartido que se pueden realizar una vez que se establece una relación (haga clic en el nombre de una operación para obtener más detalles):

Operaciones compartidas
Operaciones maestras
Operación Método / criterio de valoración Descripción
Listar recursos compartidos existentes GET /accounts/ master_account_id/videos/ video_id/shares Obtenga una lista de recursos compartidos existentes para un video: esto es importante por las consecuencias de volver a compartir un video cuando ya se ha compartido
Compartir un video POST /accounts/ master_account_id/videos/ video_id/shares Comparta un video con uno o más afiliados; tenga en cuenta que si el video ya se ha compartido, esta operación volver a compartirlo - eso es probablemente no que quieres hacer
Dejar de compartir un video para un afiliado DELETE /accounts/ master_account_id/videos/ video_id/shares Dejar de compartir un video para un Afiliado específico: tenga en cuenta que si no se comparte y se vuelve a compartir, el video compartido tendrá una nueva identificación de video en la cuenta de Afiliado
Operaciones afiliadas
Operación Método / criterio de valoración Descripción
Aceptar un video compartido PATCH /accounts/ affiliate_account_id/videos/ video_id Acepta un video compartido (si auto_accept esta apagado)

Nota: para identificar los videos compartidos que esperan ser aceptados, busque videos que tengan state:pending:

https://cms.api.brightcove.com/v1/accounts/{account_id}/videos?q=state:pending

o

https://cms.api.brightcove.com/v1/accounts/{account_id}/videos?query=state:PENDING

Solicitudes de API de CMS: configuración

Esta sección enumera los CMS API operaciones involucradas en la configuración del uso compartido de medios.

Operaciones maestras

Lista de canales

Lista de canales
Método GET
Punto final /accounts/ master_account_id/channels
Cuerpo de la solicitud  
Respuesta de muestra
      [
        {
          "account_id": "57838016001",
          "name": "default",
          "enforce_custom_fields": false,
          "enforce_geo": false,
          "account_name": "BrightcoveLearning",
          "created_at": "2017-08-23T17:11:18.474Z",
          "updated_at": "2017-08-23T17:11:18.474Z"
        }
      ]

Obtener detalles del canal

Obtener detalles del canal
Método GET
Punto final https://cms.api.brightcove.com/v1/accounts/ master_account_id/channels/ channel_name [5-1]
Cuerpo de la solicitud  
Respuesta de muestra
      {
        "account_id": "57838016001",
        "name": "default",
        "enforce_custom_fields": false,
        "enforce_geo": false,
        "account_name": "BrightcoveLearning",
        "created_at": "2017-08-23T17:11:18.474Z",
        "updated_at": "2017-08-23T17:11:18.474Z"
      }
Notas
  • [5-1] Actualmente solo hay un canal llamado default

Actualizar canal

Crear canal
Método PATCH
Punto final /accounts/ master_account_id/channels/ channel_name [6-1]
Cuerpo de la solicitud
      {
        "enforce_custom_fields" : true,
        "enforce_geo" : true
      }
Respuesta de muestra
      {
        "account_id": "57838016001",
        "name": "default",
        "enforce_custom_fields": true,
        "enforce_geo": true,
        "account_name": "BrightcoveLearning",
        "created_at": "2017-08-23T17:11:18.474Z",
        "updated_at": "2017-12-30T15:06:27.015Z"
      }
Notas
  • [6-1] Actualmente solo hay un canal llamado default

Lista de afiliados para el canal

Lista de afiliados del canal
Método GET
Punto final /accounts/ master_account_id/channels/default/members
Cuerpo de la solicitud  
Respuesta de muestra
      [
        {
          "account_id": "20318290001",
          "approved": false,
          "account_name": "Brightcove Training"
        },
        {
          "account_id": "1485884786001",
          "approved": true,
          "account_name": "Brightcove Learning Doc Samples"
        },
        {
          "account_id": "1752604059001",
          "approved": true,
          "account_name": "BC Training Videos"
        }
      ]

El valor de la approved El campo indica si el Afiliado ha aprobado el contrato.

Agregar afiliado al canal

Agregar afiliado
Método PUT
Punto final /accounts/ master_account_id/channels/default/members/ affiliate_account_id
Cuerpo de la solicitud
      {
        "account_id":"affiliate_account_id"
      }
Respuesta de muestra
      {
        "account_id": "1485884786001"
      }

Eliminar afiliado del canal

Eliminar afiliado
Método DELETE
Punto final /accounts/ master_account_id/channels/default/members/ affiliate_account_id
Cuerpo de la solicitud  
Respuesta de muestra 204 NO CONTENT(cuerpo de respuesta vacío)

Operaciones afiliadas

Lista de contratos disponibles

Lista de contratos
Método GET
Punto final /accounts/ affiliate_account_id/contracts
Cuerpo de la solicitud  
Respuesta de muestra
      [
        {
          "account_id": "1485884786001",
          "channel": {
            "account_id": "57838016001",
            "name": "default"
          },
          "approved": false,
          "auto_accept": false,
          "approved_at": null,
          "updated_at": "2017-08-23T17:45:41.556Z",
          "created_at": "2017-08-23T17:45:41.556Z"
        }
      ]

Los dos campos esenciales de la respuesta son:

  • approved- cuando se establece en verdadero, el afiliado acepta el contrato
  • auto-accept- cuando se establece en verdadero, los videos compartidos a través de este contrato serán automáticamente aceptados por el Afiliado; de lo contrario, deben ser aprobados uno por uno

Veremos cómo actualizar el contrato a continuación.

Obtenga un contrato para una cuenta específica

Obtener contrato
Método GET
Punto final /accounts/ affiliate_account_id/contracts/ master_account_id
Cuerpo de la solicitud  
Respuesta de muestra
      {
        "account_id": "1485884786001",
        "channel": {
          "account_id": "57838016001",
          "name": "default"
        },
        "approved": false,
        "auto_accept": false,
        "approved_at": null,
        "created_at": "2017-08-23T17:45:41.556Z",
        "updated_at": "2017-08-23T17:45:41.556Z"
      }

Aprobar contrato

Aprobar contrato
Método PATCH
Punto final /accounts/ affiliate_account_id/contracts/ master_account_id
Cuerpo de la solicitud
      {
        "approved": true,
        "auto_accept": true
      }
Respuesta de muestra
      {
        "account_id": "1485884786001",
        "channel": {
          "account_id": "57838016001",
          "name": "default"
        },
          "approved": true,
        "auto_accept": true,
        "approved_at": "2017-08-27T12:27:21.582Z",
        "created_at": "2017-08-23T17:45:41.556Z",
        "updated_at": "2017-08-27T12:27:21.582Z"
      }

Si incluyes solo "approved":true , cada video tendrá que ser aprobado individualmente.

Solicitudes de API de CMS: compartir

Esta sección detalla el CMS API solicitudes utilizadas para compartir videos. Las operaciones de uso compartido de medios las realiza la cuenta principal. La cuenta de afiliado puede aceptar acciones si auto_accept esta apagado.

Operaciones maestras

Listar recursos compartidos existentes

Para saber si un video ya se ha compartido con otras cuentas, puede utilizar la solicitud a continuación.

Lista de recursos compartidos
Método GET
Punto final /accounts/ master_account_id/videos/ video_id/shares
Cuerpo de la solicitud  
Respuesta de muestra
      [
        {
          "video_id": "5553744346001",
          "affiliate_id": "1752604059001",
          "affiliate_video_id": "5553754248001",
          "status": "COMPLETE",
          "shared_at": "2017-08-27T14:35:01.890Z",
          "updated_at": "2017-08-27T14:35:25.630Z"
        },
        {
          "video_id": "5553744346001",
          "affiliate_id": "1485884786001",
          "affiliate_video_id": "5553758415001",
          "status": "COMPLETE",
          "shared_at": "2017-08-27T14:34:34.919Z",
          "updated_at": "2017-08-27T14:35:25.212Z"
        }
      ]

Compartir (o volver a compartir) un video

La solicitud que se describe a continuación compartirá un video con una o más cuentas de afiliados.

Compartir video
Método POST
Punto final /accounts/ master_account_id/videos/ video_id/shares
Cuerpo de la solicitud
      [
        { "id": "affiliate_account_id_1" },
        { "id": "affiliate_account_id_2" }
      ]
Respuesta de muestra

Respuesta de éxito

      [
        {
          "video_id": "5553744346001",
          "affiliate_id": "1485884786001",
          "affiliate_video_id": null,
          "status": "PROCESSING",
          "shared_at": "2017-08-27T14:25:55.710Z",
          "updated_at": "2017-08-27T14:25:55.710Z"
        }
      ]

Respuesta de falla

      {
      "video_id": "5553744346001",
      "affiliate_id": "1485884786001",
      "affiliate_video_id": null,
      "status": "ERROR",
      "error_message": "[{\"error_code\":\"MISSING_CUSTOM_FIELDS\",\"error_message\":\"Affiliate account is missing custom fields: [myfieldname]\"}]",
      "shared_at": "2017-10-23T15:21:38.541Z",
      "updated_at": "2017-10-23T15:22:58.519Z"
      }

Compartir creará un nuevo video en la cuenta del afiliado. La state del video compartido será PROCESSING hasta que se complete la acción y el video se crea en la cuenta de afiliado. Es posible que el afiliado deba aceptar el video (si auto_accept se establece en false en el contrato del Afiliado; consulte la sección anterior sobre cómo configurar el uso compartido).

Dejar de compartir un video para un afiliado

Dejar de compartir video
Método DELETE
Punto final /accounts/ master_account_id/videos/ video_id/shares/ affiliate_account_id
Cuerpo de la solicitud  
Respuesta de muestra 202 ACCEPTED(cuerpo de respuesta vacío): la respuesta indica que la solicitud ha sido aceptada para su procesamiento, pero es posible que la operación no se complete hasta dentro de un par de minutos.

Operaciones afiliadas

Aceptar video compartido

Para aceptar un video compartido, el Afiliado actualiza el video compartido, configurando su state a ACTIVE. (Configurando el state a INACTIVE rechaza la acción.)

Aceptar video compartido
Método PATCH
Punto final /accounts/ affiliate_account_id/videos/ affiliate_video_id
Cuerpo de la solicitud
      
        {
          "state": "ACTIVE"
        }
      
Respuesta de muestra
      {
        "id": "5557656136001",
        "account_id": "1485884786001",
        "ad_keys": null,
        "clip_source_video_id": null,
        "complete": true,
        "created_at": "2017-08-30T13:35:51.796Z",
        "cue_points": [
        ],
        "custom_fields": {
        },
        "delivery_type": "dynamic_origin",
        "description": null,
        "digital_master_id": "4728546275001",
        "duration": 11111,
        "economics": "AD_SUPPORTED",
        "folder_id": null,
        "geo": null,
        "has_digital_master": true,
        "images": {
          "thumbnail": {
            "asset_id": "5473683978001",
            "remote": false,
            "src": "https://brightcove.vo.llnwd.net/e1/pd/57838016001/57838016001_5473683978001_4728519374001-th.jpg?pubId=1485884786001&videoId=5557656136001",
            "sources": [
              {
                "src": "https://brightcove.vo.llnwd.net/e1/pd/57838016001/57838016001_5473683978001_4728519374001-th.jpg?pubId=1485884786001&videoId=5557656136001",
                "height": 90,
                "width": 160
              },
              {
                "src": "https://brightcove.hs.llnwd.net/e1/pd/57838016001/57838016001_5473683978001_4728519374001-th.jpg?pubId=1485884786001&videoId=5557656136001",
                "height": 90,
                "width": 160
              }
            ]
          },
          "poster": {
            "asset_id": "5473684427001",
            "remote": false,
            "src": "https://brightcove.vo.llnwd.net/e1/pd/57838016001/57838016001_5473684427001_4728519374001-vs.jpg?pubId=1485884786001&videoId=5557656136001",
            "sources": [
              {
                "src": "https://brightcove.vo.llnwd.net/e1/pd/57838016001/57838016001_5473684427001_4728519374001-vs.jpg?pubId=1485884786001&videoId=5557656136001",
                "height": 720,
                "width": 1280
              },
              {
                "src": "https://brightcove.hs.llnwd.net/e1/pd/57838016001/57838016001_5473684427001_4728519374001-vs.jpg?pubId=1485884786001&videoId=5557656136001",
                "height": 720,
                "width": 1280
              }
            ]
          }
        },
        "link": null,
        "long_description": null,
        "name": "oystercatcher.mp4",
        "original_filename": "57838016001_4728546275001_4728519374001.mp4",
        "projection": null,
        "published_at": "2017-08-30T13:41:13.974Z",
        "reference_id": "2016-01-29T21:41:33.225Z-screencast-1280",
        "schedule": null,
        "sharing": {
          "by_external_acct": true,
          "by_id": "57838016001",
          "source_id": "4728519374001",
          "to_external_acct": false,
          "by_reference": true
        },
        "state": "ACTIVE",
        "tags": [
          "newtag",
          "foo"
        ],
        "text_tracks": [
        ],
        "updated_at": "2017-08-30T13:41:14.075Z"
      }

Selecciona el state a INACTIVE rechazar la acción.

Tenga en cuenta que no hay ninguna notificación especial que indique que se ha compartido un video en su cuenta. Sin embargo, si usted buscar videos para state:pending , que encontrará las acciones no aceptadas. Alternativamente, puede usar la lista de recursos compartidos pendientes en el módulo de Studio Media para ver y aceptar / rechazar los recursos compartidos pendientes:

Acciones pendientes
Acciones pendientes

Errores

Los errores de uso compartido de medios no se devuelven como una respuesta de error separada a la solicitud de la API, sino en una error_message campo en la respuesta normal:

      [
        {
          "video_id" : "1239817239128",
          "affiliate_id" : "32871239",
          "affiliate_video_id" : "30308254055202",
          "status" : "COMPLETE",
          "shared_at" : "2017-12-11T17:57:45.530Z",
          "updated_at" : "2017-12-11T18:03:32.789Z",
          "error_message" : "[{"error_code":"MISSING_CUSTOM_FIELDS","error_message":"Affiliate account is missing custom fields: [whisky]"}]"
        }
      ]

Ver la CMS API Referencia de error para más detalles.

Limitaciones

Actualmente, el uso compartido de medios tiene las siguientes limitaciones:

  • DRM: uso compartido de medios a través del CMS API actualmente no es compatible con cuentas habilitadas para DRM. Se admite compartir videos de una cuenta que no está habilitada para DRM a una cuenta que sí está habilitada para DRM, pero los videos compartidos no ser empaquetado para DRM.
  • Si el canal definido por la cuenta maestra se ha establecido enforce_custom_fields a true y luego comparte un video que tiene un campo personalizado con un valor que no está permitido por la cuenta de afiliado, ese intento de compartir fallará. El estado del recurso compartido se actualizará con un mensaje de error similar a este:

          [{"error_code": "ILLEGAL_CUSTOM_FIELD_VALUE", "error_message": "Illegal value for custom fields: [topic]"}]
          

    Si el canal definido por la cuenta maestra se ha establecido enforce_custom_fields a false y luego comparte un video que tiene un campo personalizado con un valor que no está permitido por la cuenta de afiliado, entonces el intento de compartir funcionará, pero el campo con el valor incorrecto no se incluirá en la copia de afiliado del video.

  • Al reproducir un video compartido con SSAI, el reemplazo de macro SSAI usará los metadatos del video principal en lugar del video secundario. SSAI también omitirá la búsqueda de anuncios si el vídeo principal está marcado como Advertising='Free', incluso si el vídeo secundario está etiquetado como Ad Supported.