Consignation d’un enregistrement en temps réel
Consignation d’un enregistrement en temps réel
Présentation
L’enregistrement en temps réel permet aux appareils d’enregistrer des commentaires, le statut des ressources et d’autres données pendant qu’un élément multimédia est enregistré, avant qu’il ne soit enregistré avec Frame.io, pour toutes les ressources C2C générées par n’importe quel appareil dans un même projet.
Imaginez un réalisateur regardant son flux dans Video Village et qui peut appuyer sur un bouton à chaque fois que l’acteur offre une bonne performance, ou une ardoise intelligente qui permet de marquer le clap sur toutes les ressources.
De quoi ai-je besoin ?
Si vous n’avez pas lu le guide Implémentation C2C : configuration, jetez-y un coup d’œil rapide avant de continuer ! Vous aurez besoin de l’élément access_token que vous avez reçu au cours du processus d’authentification et d’autorisation de l’appareil ou de l’application C2C.
Exigences de code temporel
Pour aligner les événements d’enregistrement en temps réel avec les ressources, il faut que la ressource capturée et l’appareil utilisé pour l’enregistrement soient synchronisés ou verrouillés pour la génération. L’appareil d’enregistrement et l’appareil de journalisation seront alors responsables de l’envoi du code temporel à notre backend, où nous effectuerons une opération de synchronisation de code temporel pour aligner l’événement de journalisation avec le bon cadre.
Configuration de vos paramètres d’entrée
L’enregistrement en temps réel fonctionne sur un nouveau concept dans le modèle de données : les entrées. Une entrée représente un bouton physique sur votre appareil qui peut être configuré pour envoyer des données à Frame.io. La première chose que vous devrez décider est le nombre de boutons que vous autoriserez à effectuer ce type d’opération. Vous devrez ensuite attribuer un index à chaque bouton, en commençant par 0. Cet index sera utilisé pour identifier quel bouton a été utilisé lorsqu’un événement est envoyé à nos serveurs. Les entrées appartiennent directement aux canaux. Chaque message d’utilisation de bouton devra donc cibler un point d’entrée de canal spécifique. Pour en savoir plus sur les canaux, consultez le [guide de gestion des canaux].
La configuration de l’action de chaque bouton est gérée par l’utilisateur via l’interface utilisateur de Frame.io, permettant aux intégrations d’être aussi simples que possible. En plus de pouvoir attribuer un bouton pour qu’il devienne une « action Frame.io », si vos boutons / déclencheurs / etc. sont configurables, vous n’aurez besoin d’aucune interface utilisateur spéciale de votre côté.
Nous travaillerons avec vous pour déterminer la configuration suivante pour chacune des entrées de votre appareil :
- Index : un entier indexé à 0 qui sera utilisé pour identifier l’entrée.
- Nom d’affichage : le nom de l’entrée à montrer à l’utilisateur dans l’écran de configuration de Frame.io.
- Actions prises en charge : pour le moment, le seul type d’action est « pression simple », mais à l’avenir nous pourrions autoriser des types d’actions supplémentaires tels que « pression longue » ou « pression double » pour permettre à chaque entrée de prendre en charge plusieurs actions, chacune ayant une signification différente.
- Couleur du bouton : si le bouton est associé à une couleur, nous pouvons l’afficher pour aider les utilisateurs à s’orienter lors de la configuration des paramètres d’entrée de l’appareil.
- Type d’événement par défaut : le type d’événement généré par défaut par cette entrée :
-
Commentaire : cette entrée génère un commentaire.
-
Statut : l’entrée met à jour le statut de la ressource.
- Texte de commentaire par défaut : texte par défaut qui doit être utilisé pour les commentaires générés par cette entrée.
- Statut par défaut : statut par défaut pour mettre à jour les ressources quand cette entrée est utilisée pour le statut. Il peut s’agir de :
in_progress-needs_review-approved
En fournissant ces informations à l’avance, nous maintenons les exigences sur l’appareil réel aussi faibles que possible.
Envoi d’un événement d’enregistrement en temps réel
Les événements d’enregistrement en temps réel peuvent être envoyés avec l’appel suivant
En cas de succès, vous recevrez une erreur 204 avec une payload vide. Paramètres d’URL
channel_id: UUID du canal sur lequel cette entrée est enregistrée. Cet identifiant aura été reçu par l’appel channel create ou depuis le point d’entrée d’identité.input_index: index de l’entrée effectuant l’appel.
Corps JSON
action_type: type d’action à effectuer. Actuellement, la seule action prise en charge estsingle_press.offset: décalage entre le début de la ressource et l’enregistrement de l’événement.start: heure de début, représentée par le code temporel SMPTE + fréquence d’images au moment du déclenchement de l’entrée.
smpte_timecode: code temporel représenté sous forme de chaîne SMPTE. -rate: fréquence d’images du flux de code temporel. -playback: vitesse de lecture de la fréquence d’images, représentée comme une paire[numerator, denominator]dans un tableau. En option, ce champ peut également accepter les fractions au format chaîne,"numerator/denominator". Les fréquences d’images NTSC comme 23,98 doivent être envoyées avec leur valeur rationnelle entièrement qualifiée : [24000, 1001]. -ntsc: norme NTSC du code temporel. Il peut s’agir denon_dropounull. Si la valeur estnull,playbackdoit être une valeur entière, comme[24, 1]. Si la valeur estnon_drop,playbackdoit représenter une fréquence d’images NTSC valide, comme[24000, 1001].
duration: durée de l’événement, représentée par un code temporel SMPTE + fréquence d’images au moment du déclenchement de l’entrée. Se conforme à la même définition d’objet questart. Pour les événementssingle_press, il doit s’agir exactement d’un cadre (« 01:00:00:00 »).
Exigences de fiabilité
Les déclencheurs de chargement en temps réel doivent appliquer les mêmes directives de fiabilité que les chargements, et respecter le statut suspendu de l’appareil.
Étapes suivantes
Si ce n’est pas déjà fait, nous vous encourageons à contacter notre équipe, puis à passer au guide suivant. Nous nous ferons un plaisir de répondre à vos questions.