Points clés à retenir
- Encodez un seul fichier de sortie MP4 soumis à examen avant l’export vers YouTube, plutôt que de faire accepter à la chaîne toutes les variantes de source.
- Commencez les exports avec une visibilité privée afin de ne pas confondre la fin du traitement avec l’approbation éditoriale ou la publication publique.
- Conservez l’accès OAuth dans des ensembles nommés d’informations d’identification de Template et gardez les secrets du compte Transloadit hors du code du navigateur.
Le téléversement direct sur YouTube est pratique jusqu’à ce que chaque navigateur, client mobile et outil interne applique sa propre validation, ses propres hypothèses d’encodage, ses propres règles de métadonnées et sa propre gestion des nouvelles tentatives. Un flux de travail en trois étapes crée un seul passage de relais contrôlé : accepter la source, normaliser le livrable, puis le publier sur une chaîne selon une politique de visibilité explicite.
L’essentiel
- Validez le titre, la description et les mots-clés dans l’application avant de les fournir comme champs du Template, et conservez la catégorie et la visibilité comme valeurs fixes du Template plutôt que comme données fournies par le client.
- Enregistrez l’identifiant de l’Assembly et l’identifiant renvoyé par la plateforme afin que les nouvelles tentatives ne puissent pas créer silencieusement des vidéos dupliquées.
- Testez les autorisations et les quotas de la chaîne avec le compte de destination réel avant d’activer la publication sans intervention humaine.
Définir la publication comme une transition d’état
Téléverser des octets, terminer un encodage et rendre une vidéo publique sont trois événements distincts. Modélisez-les séparément. L’application doit savoir quel utilisateur a fourni la source, quelles métadonnées ont été approuvées, quelle version du flux de travail a été exécutée et si une personne ou une politique peut rendre accessible l’enregistrement obtenu sur la chaîne. Un Step /youtube/store terminé prouve que YouTube a accepté l’export ; il ne prouve pas que le contenu doit être public.
Commencez avec la visibilité définie sur private. Rapprochez l’identité de destination renvoyée de l’enregistrement de l’application, laissez les responsables éditoriaux vérifier la lecture et les métadonnées, puis effectuez la publication publique ou non répertoriée par une action explicitement autorisée. Cette frontière empêche un flux de travail technique réussi de contourner la modération, la planification ou l’examen des droits.
Transfert terminé
La source est parvenue à l’Assembly et est disponible pour les Steps en aval.
Traitement terminé
Le MP4 contrôlé existe et a passé les vérifications techniques choisies par le Template.
Publication approuvée
L’application a mis la destination en cohérence avec son enregistrement et autorisé son audience.
Construire le Template verrouillé pour YouTube
Le graphe de base comporte un Step de téléversement, un Step d’encodage et un Step d’export vers YouTube. /upload/handle porte le nom :original et n’a pas de valeur use. /video/encode lit :original et produit un rendu MP4 aux limites définies. /youtube/store lit uniquement ce rendu, de sorte qu’un téléversement brut provenant d’une caméra ne peut pas contourner la politique d’encodage.
Gardez allow_steps_override à false lorsque des clients mobiles ou des navigateurs créent des Assemblies à partir du Template. Fournissez uniquement des champs title, description et keywords ayant été examinés, depuis un serveur de confiance. L’exemple fixe category à education et visibility à private dans le Template enregistré ; les appelants ne peuvent pas les modifier au moyen des champs. Validez les métadonnées d’exécution avant de signer ou de créer l’Assembly, plutôt que de découvrir des erreurs après un encodage volumineux.
{
"allow_steps_override": false,
"auth": {
"max_number_of_files": 1,
"max_size": 2147483648
},
"steps": {
":original": {
"robot": "/upload/handle"
},
"youtube_ready": {
"use": ":original",
"robot": "/video/encode",
"preset": "web/mp4/1080p",
"width": 1920,
"height": 1080,
"resize_strategy": "fit",
"zoom": false
},
"youtube_private": {
"use": "youtube_ready",
"robot": "/youtube/store",
"credentials": "youtube-channel",
"title": "${fields.title}",
"description": "${fields.description}",
"category": "education",
"keywords": "${fields.keywords}",
"visibility": "private",
"result": true
}
}
}Protéger les informations d’identification de la chaîne et les métadonnées
Créez un ensemble d’informations d’identification de Template pour YouTube via le flux OAuth et référencez uniquement son nom dans le Template. Le navigateur ne doit jamais recevoir le jeton OAuth ni l’Auth Secret de Transloadit. Le serveur doit sélectionner le Template fixe, autoriser la chaîne cible et limiter les utilisateurs qui peuvent fournir des métadonnées de publication.
N’interpolez pas de HTML arbitraire, de secrets ni de données d’enregistrements internes dans la description publique. Appliquez une limite de 80 caractères au titre et limitez la longueur et le nombre des mots-clés dans l’application. Si le produit nécessite une autre catégorie ou une autre visibilité, effectuez une modification autorisée du Template enregistré ou sélectionnez un Template examiné séparément ; n’acceptez pas de remplacements arbitraires fournis par le client.
Mettre l’état en cohérence après l’achèvement sans publier de doublons
L’encodage vidéo et le téléversement vers une plateforme distante peuvent durer plus longtemps qu’une requête interactive. Enregistrez durablement une opération de publication locale avant de créer l’Assembly, associez-y l’identifiant de l’Assembly dès qu’il existe et complétez l’enregistrement à partir d’un webhook dont la signature a été vérifiée ou d’une consultation ultérieure de l’Assembly Status. Conservez l’identité YouTube renvoyée avec l’opération plutôt que de traiter l’URL du résultat comme seul enregistrement.
Un dépassement du délai d’attente ne prouve pas que l’export a échoué. Avant de réessayer, vérifiez l’opération enregistrée et l’Assembly Status. Une clé d’idempotence stable, fondée sur la version de la source, la chaîne, la version du flux de travail et l’événement de publication prévu, empêche qu’une réponse perdue entraîne la création d’une seconde vidéo privée qui passe inaperçue.
Tester le contrat de destination
Utilisez la chaîne de destination réelle pour une vidéo de test privée. Vérifiez les dimensions après encodage, l’audio, la durée, le comportement de troncature du titre, la catégorie, les mots-clés et la confidentialité. Testez une autorisation OAuth expirée, un utilisateur sans autorisation sur la chaîne, un titre dépassant la limite de l’application, une source non prise en charge et une notification d’achèvement répétée.
Surveillez les échecs par phase : réception, encodage ou export vers YouTube. Enregistrez le temps passé en file d’attente, la durée du traitement, le nombre d’octets en sortie, la durée de l’export, l’identité de destination et l’état final. Conservez les erreurs brutes du fournisseur dans des diagnostics protégés et présentez aux responsables éditoriaux une action stable, comme reconnecter les informations d’identification, corriger les métadonnées ou relancer l’opération existante.
Séparer la conservation des sources de la diffusion sur la chaîne
YouTube est une destination de publication, pas nécessairement l’archive des sources de l’application. Décidez si le fichier maître téléversé, le fichier encodé destiné à la diffusion ou les deux doivent rester dans un stockage contrôlé par l’application. La conservation d’une source connue permet le réencodage ultérieur, l’examen des droits, la migration vers un autre fournisseur et la récupération après une suppression accidentelle de la chaîne.
N’effectuez la suppression qu’après avoir rapproché l’identité de destination de l’enregistrement de l’application et lorsque la politique de conservation du produit le permet. Une vidéo YouTube privée peut tout de même être supprimée, bloquée ou dissociée du compte de l’application ; ne faites donc pas de sa présence sur la plateforme la seule preuve de la réussite du flux de travail source.
Détails techniques à connaître
- /upload/handle doit porter le nom :original, ne doit pas définir use et ne peut apparaître qu’une fois dans un ensemble d’Assembly Instructions.
- Le schéma de /youtube/store exige credentials, title, description, category, keywords et visibility. La valeur visibility n’a pas de valeur par défaut et doit être public, private ou unlisted ; son omission entraîne donc un échec de validation. Définissez-la sur private pour un flux de travail dans lequel l’examen précède la publication.
- Le schéma de /youtube/store limite les titres à 80 caractères et restreint category à une énumération fixe. YouTube documente une limite de 5 000 caractères pour la description, que l’application doit faire respecter, car le schéma du Robot accepte toute longueur de chaîne.
- Les mots-clés YouTube sont fournis dans une seule chaîne séparée par des virgules plutôt que dans un tableau.
- Un Step /youtube/store peut recevoir une vidéo et une vignette personnalisée via des entrées use nommées, mais le flux de base en trois étapes envoie uniquement la vidéo encodée.
- Les informations d’identification de Template contiennent l’autorisation OAuth de YouTube. Elles ne déterminent pas quel utilisateur de l’application peut publier sur la chaîne connectée.
Une approche pratique
- 1
Définissez la source acceptée, le rendu de sortie, les limites des métadonnées et l’état d’approbation.
- 2
Créez un ensemble d’informations d’identification de Template pour YouTube et enregistrez un Template verrouillé de téléversement, d’encodage et d’export.
- 3
Soumettez une seule vidéo de test en privé et rapprochez le résultat de l’Assembly d’un enregistrement de l’application.
- 4
Testez les soumissions dupliquées, les accès OAuth expirés, les métadonnées rejetées et la publication manuelle.
Quand Transloadit est utile
Utilisez /upload/handle pour le fichier entrant, /video/encode pour un rendu MP4 aux limites définies et /youtube/store pour le téléversement sur la chaîne. Gardez le Template enregistré verrouillé, obtenez l’accès OAuth à YouTube au moyen des informations d’identification de Template, validez les métadonnées d’exécution dans l’application et commencez avec une visibilité privée.
Périmètre architectural
Transloadit peut recevoir, encoder et téléverser une vidéo sur YouTube, mais l’application reste responsable de l’autorisation de la personne qui téléverse, de l’approbation éditoriale, de la politique de métadonnées, de la gouvernance de la chaîne et du lien durable entre son enregistrement et la vidéo YouTube obtenue.
Questions fréquentes
Le flux de travail peut-il publier directement en mode public ?
Oui, /youtube/store prend en charge la visibilité publique, mais une visibilité privée est plus sûre lorsque la publication nécessite une approbation éditoriale, une validation des droits ou une approbation de modération. Faites de la publication publique une transition distincte soumise à autorisation.
YouTube transcode-t-il tout de même le MP4 téléversé ?
L’encodage par Transloadit contrôle le livrable aux limites définies qui est téléversé sur YouTube, tandis que YouTube contrôle séparément la préparation de cette vidéo pour la lecture sur sa plateforme.
Où faut-il conserver le jeton OAuth de YouTube ?
Dans un ensemble nommé d’informations d’identification de Template. Le code du navigateur ne doit recevoir ni le jeton OAuth ni l’Auth Secret de Transloadit.
Comment éviter les vidéos dupliquées après un dépassement du délai d’attente ?
Enregistrez durablement l’opération et l’identifiant de l’Assembly avant d’attendre. Vérifiez cet état et l’Assembly Status avant de créer une autre Assembly pour la même source, la même chaîne et le même événement de publication.
Ce flux de travail peut-il ajouter une vignette personnalisée ?
Oui, /youtube/store peut recevoir une vidéo et une image comme entrées nommées, mais cela ajoute une branche de traitement. Le guide de base couvre volontairement le flux de travail en trois étapes consacré uniquement à la vidéo.