Instruções: Como registrar imagens em tempo real

Introdução

O registro em tempo real permite que os dispositivos registrem comentários, o status dos ativos e outros dados enquanto uma filmagem está sendo gravada no set, antes de ser registrada no Frame.io, para quaisquer ativos C2C gerados por qualquer dispositivo no mesmo projeto.

Imagine um diretor assistindo à sua transmissão na Video Village, podendo apertar um botão sempre que o ator tiver um bom desempenho, ou uma Smart Slate capaz de marcar o momento da batida de palmas em todos os ativos.

O que vou precisar?

Caso ainda não tenha lido o guia Implementação do C2C: Configuração, dê uma olhada rápida nele antes de continuar! Você precisará do access_token recebido durante o guia de autenticação e autorização do dispositivo de hardware ou do aplicativo C2C.

Requisitos de código de tempo

Para alinhar os eventos de registro em tempo real com os ativos, esperamos que tanto o ativo que está sendo capturado quanto o dispositivo usado para o registro estejam sincronizados por jam-syned ou gen-locked. Tanto o dispositivo de gravação quanto o de registro serão, então, responsáveis por enviar o código de tempo para nosso back-end, onde realizaremos uma operação de sincronização de código de tempo para alinhar o evento de registro com o quadro correto.

Configurando suas entradas

O registro em tempo real opera com base em um novo conceito no modelo de dados: as entradas. Uma entrada representa um botão físico em seu dispositivo que pode ser configurado para enviar dados ao Frame.io. A primeira coisa que você precisará decidir é o número de botões que permitirá para realizar esse tipo de operação e, em seguida, atribuir um índice, começando em 0, a cada botão. Esse índice será usado para identificar qual botão foi pressionado quando o evento for enviado aos nossos servidores. As entradas pertencem diretamente aos canais. Portanto, cada mensagem de pressão de botão precisará ser direcionada a um ponto de acesso de canal específico. Para saber mais sobre canais, consulte o [guia de gerenciamento de canais].

A configuração da função de cada botão é feita pelo usuário por meio da interface do usuário do Frame.io, o que permite que as integrações sejam o mais simples possível. Não será necessário que você implemente nenhum recurso especial na interface do usuário, além de poder atribuir a um botão a função de “ação do Frame.io”, caso seus botões, gatilhos etc. sejam configuráveis.

Trabalharemos com você para determinar a seguinte configuração para cada entrada do seu dispositivo:

  • Índice: um número inteiro com índice 0 que será usado para identificar a entrada.
  • Nome de exibição: o nome da entrada a ser exibido ao usuário na tela de configuração do Frame.io.
  • Ações suportadas: no momento, o único tipo de ação é “toque único”, mas, no futuro, poderemos permitir tipos de ação adicionais, como “toque prolongado” ou “toque duplo”, para que cada entrada suporte múltiplas ações, cada uma com um significado diferente.
  • Cor do botão: se o seu botão tiver uma cor associada, podemos exibi-la para ajudar os usuários a se orientarem ao configurar as definições de entrada do dispositivo.
  • Tipo de evento padrão: o tipo de evento que essa entrada gera por padrão:
  • Comentário: essa entrada gera um comentário

  • Status: a entrada atualiza o status do ativo

  • Texto padrão do comentário: o texto padrão que deve ser usado nos comentários gerados por essa entrada
  • Status padrão: o status padrão com o qual os ativos devem ser atualizados quando essa entrada for usada para definir o status. Pode ser:
  • in_progress - needs_review - approved

Ao fornecer essas informações com antecedência, minimizamos ao máximo a carga sobre o seu dispositivo.

Envio de um evento de registro em tempo real

Os eventos de registro em tempo real podem ser enviados com a seguinte chamada

${
>curl -X POST https://api.frame.io/v2/devices/channels/{channel_id}/inputs/{input_index}/trigger \
> --header 'Authorization: Bearer [access_token]' \
> --header 'Content-Type: application/json' \
> --header 'x-client-version: 2.0.0' \
> --data-binary @- <<'__JSON__'
> {
> "action_type": "single_press",
> "offset": 0,
> "start": {
> "smpte_timecode": "01:00:00:00",
> "rate": {
> "playback": [24_000, 1001],
> "ntsc": "non_drop"
> }
> },
> "duration": {
> "smpte_timecode": "00:00:00:01",
> "rate": {
> "playback": [24_000, 1001],
> "ntsc": "non_drop"
> }
> }
> }
>__JSON__
>} | python -m json.tool

Em caso de sucesso, você receberá um código de resposta 204 com um conteúdo vazio. Parâmetros de URL

  • channel_id: o UUID do canal ao qual esta entrada está registrada. Esse ID terá sido recebido pela chamada channel create ou pelo identity endpoint.
  • input_index: o índice da entrada que está realizando a chamada

Corpo JSON

  • action_type: o tipo de ação a ser executada. Atualmente, a única ação suportada é single_press.
  • offset: o deslocamento a partir do início do ativo no qual o evento deve ser registrado.
  • start: hora de início, representada pelo SMPTE timecode e taxa de quadros no momento em que a entrada foi acionada.
  • smpte_timecode: código de tempo representado como uma string SMPTE. - rate: taxa de quadros do fluxo de código de tempo. - playback: velocidade de reprodução da taxa de quadros, representada como um par [numerator, denominator] em uma matriz. Como opção, este campo também aceita frações no formato de string, &quot;numerator/denominator&quot;. Taxas de quadros NTSC, como 23,98, devem ser enviadas como valores racionais totalmente qualificados: [24000, 1001]. - ntsc: o padrão NTSC do código de tempo. Pode ser “non_drop&quot; ou null. Se null, playback deve representar um valor inteiro, como [24, 1]. Se &quot;non_drop&quot;, playback deve corresponder a uma taxa de quadros NTSC válida, como, por exemplo, [24000, 1001].
  • duration: duração do evento, representada por um SMPTE timecode e taxa de quadros no momento em que a entrada foi acionada. Está em conformidade com a mesma definição de objeto que start. Para eventos single_press, deve ser exatamente 1 quadro (&quot;01:00:00:00&quot;).

Requisitos de confiabilidade

Os gatilhos de upload em tempo real devem aplicar as mesmas diretrizes de confiabilidade como uploads e respeitar o status de pausa do dispositivo.

Próximas etapas

Se ainda não o fez, recomendamos que entre em contato com nossa equipe e, em seguida, siga para o próximo guia. Estamos ansiosos para ter notícias suas!