Paper Contacter le support | état du système L'état du système

Partage de médias

Dans cette rubrique, vous apprendrez à partager des vidéos d’une Video Cloud compte à un autre en utilisant le CMS API.

Introduction

Le partage multimédia est une caractéristique de Video Cloud cela permet aux éditeurs de partager des vidéos avec d'autres éditeurs, ce qui vous permet de gérer plus facilement les vidéos de plusieurs comptes. Par exemple, les éditeurs peuvent conserver un compte principal de contenu vidéo, puis partager des vidéos avec d'autres divisions ou filiales de l'organisation.

Notez que toutes les opérations de partage de médias peuvent également être effectuées dans Studio. Voir Gestion des paramètres de partage de médias.

Médias partagés et facturation

Pour plus d'informations sur le fonctionnement de la facturation pour les médias partagés, veuillez consulter Partage de médias en utilisant le module média.

Terminologie

Dans le partage de médias, il existe une relation entre un compte principal (qui partage des vidéos) et un ou plusieurs comptes affiliés (qui reçoivent des vidéos partagées) impliqués:

Terminologie de partage de médias
Mon Compte Description
Maître Le compte qui a créé la vidéo originale.

Le Master est propriétaire du contenu et est responsable de la configuration, de la gestion et de la fourniture du contenu aux affiliés.

Affiliation Le compte qui reçoit la vidéo.

L'Affilié peut accepter le contenu partagé par un Master.

Channel Un pipeline à travers lequel le contenu est partagé à partir d'un maître vers n'importe quel nombre d'affiliés. Lorsque le partage de médias est activé default La chaîne sera créée dans votre compte.
Lien familial Décrit l'interaction entre un maître et un affilié.

Une relation est composée d'un maître pour partager du contenu, d'un canal à travers lequel le contenu est partagé, d'un contrat pour accepter le contenu et d'un affilié pour recevoir du contenu.

Contrat Décrit la relation de partage entre un maître et un affilié.

Un contrat est créé par le maître, puis doit être accepté pour que le partage soit activé. L'Affilié peut également spécifier si les vidéos partagées sont acceptées automatiquement ou doivent être approuvées une par une.

URL de base

Comme pour tous CMS API requêtes, l'URL de base des opérations décrites ci-dessous est la suivante:

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

Tous les points de terminaison décrits ci-dessous seront ajoutés à l'URL de base lorsque vous formulerez des demandes.

Authentification

L'authentification pour les demandes nécessite un en-tête Authorization:

          Authorization: Bearer {access_token}

Le système d'implants dentaires access_token est un jeton d'accès OAuth2 temporaire qui doit être obtenu auprès du service Brightcove OAuth. Pour plus de détails sur la façon d'obtenir les informations d'identification du client et de les utiliser pour récupérer des jetons d'accès, consultez le Présentation de Brightcove OAuth.

Notez que toutes les opérations autour des relations nouvelles autorisations requises:

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

Alternativement, vous pouvez simplement utiliser:

      video-cloud/sharing-relationships/all

Dans la page Admin API Authentication Studio, deux autorisations sont affichées:

  • Partage lu (équivalent à video-cloud/sharing-relationships/read)
  • Partage en lecture / écriture (équivalent à video-cloud/sharing-relationships/all)

Restrictions sur le partage

Par défaut, toutes les vidéos peuvent être partagées. Vous pouvez cependant empêcher le partage si:

  • Le compte d'affiliation n'a pas de champ personnalisé pour lequel une valeur est définie sur la vidéo dans le compte principal
  • Le géo-filtrage est activé sur le compte principal, mais le compte d'affilié ne

Correspondance de champ personnalisée

Vous pouvez appliquer une correspondance de champ personnalisée pour un canal, ce qui signifie que les partages vidéo échoueront si la vidéo a des valeurs pour les champs personnalisés qui ne sont pas présents dans le compte d'affilié. Les vidéos continueront à se partager correctement si la vidéo n'a pas de valeur pour les champs personnalisés non correspondants

Par défaut, la correspondance de champ personnalisée est n'est pas forcée.

Si un partage vidéo échoue en raison de champs personnalisés non correspondants, une erreur de ce type apparaît dans la réponse:

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

Filtrage par géo-filtrage

Si le ciblage par géo-filtrage est activé pour une chaîne, les vidéos ne peuvent pas être partagées si le géocodage du compte principal est activé et pas le compte d'affilié.

Par défaut, filtrage géographique is forcée.

L'erreur ressemblera à ceci:

      {
        "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"
      
      

Voir Mettre à jour ci-dessous pour voir comment vous mettez à jour un canal pour appliquer un champ personnalisé et / ou un filtrage de géolocalisation.

Qu'est-ce qui est partagé?

Cette section explique ce qui est partagé et comment les modifications ultérieures de la vidéo sont gérées.

Lorsque la vidéo est partagée

La plupart des champs de métadonnées vidéo sont copiés du compte principal vers le compte affilié lorsque la vidéo est partagée. Les exceptions notables sont:

  • id - la vidéo aura son propre identifiant unique dans le compte affilié
  • champs de date tels que created_at et updated_at

Tous les éléments vidéo (rendus, images, text_tracks, etc.) sont utilisés par les comptes affiliés pour la lecture.

Après la vidéo est partagée

Une fois la vidéo partagée, certaines modifications apportées à la vidéo dans le compte principal sont héritées automatiquement par les comptes affiliés, et d'autres non.

Actifs vidéo

Sauf pour les images, Les modifications apportées aux éléments vidéo par Master sont toujours hérité par des affiliés. Affiliés ne peut pas changer d'actif tels que les rendus, les manifestes, les pistes de texte ou le master numérique.

Les modifications apportées aux images par le maître sont héritées par l'affilié sauf si l'Affilié a remplacé l'image (s). Une fois qu'un affilié a modifié une image, cette image ne sera plus héritée du maître.

Métadonnées vidéo

Toutes les métadonnées vidéo (telles que le nom, la description et l'ID de référence) peuvent être modifiées par l'affilié et les modifications apportées à la vidéo principale n'est pas hérité par l'Affilié.

Transférer des vidéos

Notez cependant que si le maître re-part la vidéo (cela ne peut être fait que par le CMS API(pas dans Studio), tous les actifs et métadonnées (à l’exception des champs de données / heure) seront partagés avec les affiliés, l'écrasement des modifications apportées par les affiliés.

Vue d'ensemble des étapes de partage de médias

Mettre en place une relation

Voici un résumé des opérations pour établir une relation (cliquez sur le nom de l'opération pour plus de détails):

Opérations de configuration
Opérations maîtresses
Opération Méthode / Endpoint Description
Lister les chaînes GET /accounts/ master_account_id/channels Obtenir une liste de chaînes pour le compte
Obtenir les détails de la chaîne GET /accounts/ master_account_id/channels/ channel_name [2-1] Obtenir les détails d'une chaîne
Mettre à jour POST /accounts/ master_account_id/channels/ channel_name Mettre à jour les paramètres
Liste des affiliés de la chaîne GET /accounts/ master_account_id/channels/default/members Obtenez les affiliés pour une chaîne
Ajouter des affiliés PUT /accounts/ master_account_id/channels/default/members Ajouter des affiliés à une chaîne
Supprimer l'affiliation DELETE /accounts/ master_account_id/channels/default/members/ affiliate_account_id Supprime un affilié d'une chaîne
Opérations d'affiliation
Opération Méthode / Endpoint Description
Liste des contrats disponibles GET /accounts/ affiliate_account_id/contracts Obtient tous les contrats disponibles pour le compte
Obtenir un contrat pour un compte spécifique GET /accounts/ affiliate_account_id/contracts/ master_account_id Obtient un contrat, le cas échéant, à partir d'un compte spécifique
Approuver un contrat PATCH /accounts/ affiliate_account_id/contracts/ master_account_id Accepter et configurer les conditions d'acceptation du contrat

Remarques

  • [2-1] Actuellement, il n'y a qu'un seul canal nommé default

Partage de vidéos

Les opérations de partage vidéo sont effectuées par le compte principal. Le compte affilié peut accepter le partage (si auto_accept est fixé à false) et peut mettre à jour les métadonnées vidéo et les images partagées en utilisant la norme Mise à jour vidéo fonctionnement.

Voici les opérations de partage qui peuvent être effectuées une fois qu'une relation est établie (cliquez sur un nom d'opération pour plus de détails):

Partage des opérations
Opérations maîtresses
Opération Méthode / Endpoint Description
Liste des partages existants GET /accounts/ master_account_id/videos/ video_id/shares Obtenir une liste des partages existants pour une vidéo - ceci est important à cause des conséquences de re-partager une vidéo quand il a déjà été partagé
Partager une vidéo POST /accounts/ master_account_id/videos/ video_id/shares Partagez une vidéo avec un ou plusieurs affiliés - notez que si la vidéo a déjà été partagée, cette opération re-partage - C'est probablement n'est pas que veux-tu faire
Annuler le partage d'une vidéo pour un affilié DELETE /accounts/ master_account_id/videos/ video_id/shares Ne partage pas une vidéo pour un affilié spécifique - notez que le fait de ne pas partager et de re-partager résultera à ce que la vidéo partagée ait un nouvel identifiant vidéo dans le compte affilié
Opérations d'affiliation
Opération Méthode / Endpoint Description
Accepter une vidéo partagée PATCH /accounts/ affiliate_account_id/videos/ video_id Accepter une vidéo partagée (si auto_accept est éteint)

CMS API demandes - configuration

Cette section répertorie les CMS API opérations impliquées dans la mise en place du partage multimédia.

Opérations maîtresses

Liste des canaux

Lister les chaînes
méthode GET
Endpoint /accounts/ master_account_id/channels
Demander un corps
Exemple de réponse
      [
        {
          "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"
        }
      ]

Obtenir les détails de la chaîne

Obtenir les détails de la chaîne
méthode GET
Endpoint https://cms.api.brightcove.com/v1/accounts/ master_account_id/channels/ channel_name [5-1]
Demander un corps
Exemple de réponse
      {
        "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"
      }
Remarques
  • [5-1] Actuellement, il n'y a qu'un seul canal nommé default

Mettre à jour

Créer une chaîne
méthode PATCH
Endpoint /accounts/ master_account_id/channels/ channel_name [6-1]
Demander un corps
      {
        "enforce_custom_fields" : true,
        "enforce_geo" : true
      }
Exemple de réponse
      {
        "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"
      }
Remarques
  • [6-1] Actuellement, il n'y a qu'un seul canal nommé default

Liste des affiliés pour la chaîne

Liste des affiliés
méthode GET
Endpoint /accounts/ master_account_id/channels/default/members
Demander un corps
Exemple de réponse
      [
        {
          "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"
        }
      ]

La valeur de l' approved Ce champ indique si l'Affilié a approuvé le contrat.

Ajouter un affilié à la chaîne

Ajouter un affilié
méthode PUT
Endpoint /accounts/ master_account_id/channels/default/members/ affiliate_account_id
Demander un corps
      {
        "account_id":"affiliate_account_id"
      }
Exemple de réponse
      {
        "account_id": "1485884786001"
      }

Supprimer l'affilié de la chaîne

Supprimer l'affiliation
méthode DELETE
Endpoint /accounts/ master_account_id/channels/default/members/ affiliate_account_id
Demander un corps
Exemple de réponse 204 NO CONTENT (corps de réponse vide)

Opérations d'affiliation

Liste des contrats disponibles

Liste des contrats
méthode GET
Endpoint /accounts/ affiliate_account_id/contracts
Demander un corps
Exemple de réponse
      [
        {
          "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"
        }
      ]

Les deux champs essentiels de la réponse sont:

  • approved - lorsqu'il est défini sur true, le contrat est accepté par l'affilié
  • auto-accept - lorsqu'elle est définie sur true, les vidéos partagées via ce contrat seront automatiquement acceptées par l'Affilié; sinon, ils doivent être approuvés un par un

Nous verrons comment mettre à jour le contrat ci-dessous.

Obtenir un contrat pour un compte spécifique

Obtenir un contrat
méthode GET
Endpoint /accounts/ affiliate_account_id/contracts/ master_account_id
Demander un corps
Exemple de réponse
      {
        "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"
      }

Approuver le contrat

Approuver le contrat
méthode PATCH
Endpoint /accounts/ affiliate_account_id/contracts/ master_account_id
Demander un corps
      {
        "approved": true,
        "auto_accept": true
      }
Exemple de réponse
      {
        "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 vous incluez seulement "approved":true, chaque vidéo devra être approuvée individuellement.

CMS API demandes - partage

Cette section détaille les CMS API demandes utilisées dans le partage de vidéos. Les opérations de partage de contenu multimédia sont effectuées par le compte principal. Le compte de l'affilié peut accepter des actions si auto_accept est éteint.

Opérations maîtresses

Liste des partages existants

Pour savoir si une vidéo a déjà été partagée avec d'autres comptes, vous pouvez utiliser la demande ci-dessous.

Actions de la liste
méthode GET
Endpoint /accounts/ master_account_id/videos/ video_id/shares
Demander un corps
Exemple de réponse
      [
        {
          "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"
        }
      ]

Partage (ou partage) d'une vidéo

La demande décrite ci-dessous partagera une vidéo avec un ou plusieurs comptes affiliés.

Partager la vidéo
méthode POST
Endpoint /accounts/ master_account_id/videos/ video_id/shares
Demander un corps
      [
        { "id": "affiliate_account_id_1" },
        { "id": "affiliate_account_id_2" }
      ]
Exemple de réponse

Réponse de succès

      [
        {
          "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"
        }
      ]

Réponse d'échec

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

Le partage créera une nouvelle vidéo dans le compte de l'affilié. le state de la part de vidéo sera PROCESSING jusqu'à ce que la part soit complète et la vidéo est créée dans le compte affilié. L'Affilié peut encore avoir besoin d'accepter la vidéo (si auto_accept est fixé à false sur le contrat par l'Affilié - voir la section précédente sur la mise en place du partage).

Ne pas partager une vidéo pour un affilié

Unshare Video
méthode DELETE
Endpoint /accounts/ master_account_id/videos/ video_id/shares/ affiliate_account_id
Demander un corps
Exemple de réponse 202 ACCEPTED (corps de réponse vide) - la réponse indique que la demande a été acceptée pour le traitement, mais l'opération peut ne pas être terminée pour quelques minutes

Opérations d'affiliation

Accepter la vidéo partagée

Pour accepter une vidéo partagée, l'affilié met à jour la vidéo partagée, définissant sa state à ACTIVE. (Réglage de la state à INACTIVE rejette la part.)

Accepter la vidéo partagée
méthode PATCH
Endpoint /accounts/ affiliate_account_id/videos/ affiliate_video_id
Demander un corps
      
        {
          "state": "ACTIVE"
        }
      
Exemple de réponse
      {
        "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": "http://brightcove.vo.llnwd.net/e1/pd/57838016001/57838016001_5473683978001_4728519374001-th.jpg?pubId=1485884786001&videoId=5557656136001",
            "sources": [
              {
                "src": "http://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": "http://brightcove.vo.llnwd.net/e1/pd/57838016001/57838016001_5473684427001_4728519374001-vs.jpg?pubId=1485884786001&videoId=5557656136001",
            "sources": [
              {
                "src": "http://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"
      }

Met le state à INACTIVE rejeter la part.

Notez qu'il n'y a pas de notification spéciale indiquant qu'une vidéo a été partagée avec votre compte. Cependant, si vous rechercher des vidéos pour state:pending, qui va trouver des actions non acceptées. Vous pouvez également utiliser la liste Partages en attente dans le module Studio Media pour afficher et accepter / rejeter les partages en attente:

Actions en attente
Actions en attente

Erreurs

Les erreurs de partage de média ne sont pas renvoyées en tant que réponse d'erreur distincte à la demande d'API, mais plutôt dans une error_message champ dans la réponse normale:

      [
        {
          "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]"}]"
        }
      ]

Voir le CMS API Référence d'erreur pour plus de détails.

Limites

Actuellement, le partage de médias a les limites suivantes:

  • DRM: partage de média via le CMS API n'est actuellement pas pris en charge pour les comptes activés par DRM. Le partage de vidéos d'un compte non activé par DRM vers un compte activé par DRM est pris en charge, mais les vidéos partagées resteront n'est pas être emballé pour DRM.
  • Si le canal défini par le compte principal a été défini enforce_custom_fields à true, puis partage une vidéo qui a un champ personnalisé avec une valeur qui n'est pas autorisée par le compte d'affiliation, cette tentative de partage échouera. Le statut de partage sera mis à jour avec un message d'erreur quelque chose comme ceci:

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

    Si le canal défini par le compte principal a été défini enforce_custom_fields à false, puis partage une vidéo qui a un champ personnalisé avec une valeur qui n'est pas autorisée par le compte d'affilié, alors la tentative de partage fonctionnera, mais le champ avec la mauvaise valeur ne sera pas inclus dans la copie d'affiliation de la vidéo.

  • Lors de la lecture d'une vidéo partagée avec SSAI, le remplacement de macro SSAI utilise les métadonnées de la vidéo parente au lieu de la vidéo enfant. SSAI ignorera également la recherche d'annonces si la vidéo parent est marquée comme Advertising='Free', même si la vidéo enfant est étiquetée comme Ad Supported.

Dernière mise à jour de la page le 12 juin 2020