Exemplos de utilização de API

Tabela de Conteúdos

Pré-requisitos

- Abra o documento que pretende manipular no mimoLive.
- Certifique-se de que o documento está num estado finalizado para que os pontos de extremidade da API, como Camadas, não sejam alterados. Tenha em atenção que, se remover uma camada e a adicionar novamente, esta camada terá um ID de camada diferente quando falar com ela através da API. No entanto, reordenar camadas ou adicionar variantes de camadas não altera o ID da camada.
- Ativar o HTTP-Servidor nas Preferências de Controlo Remoto do mimoLive. Marque a opção "Permitir acesso ao controlo remoto":

9e0a2b0b 6a64 4093 b15b 24aa12dead32

Anote o número de IP ou o endereço de IP com o número da porta do mimoLive para utilização posterior quando trabalhar com o HTTP API.

Formas de controlar o mimoLive à distância

Controlar o mimoLive com superfícies de controlo remoto

A forma mais eficaz é criar uma Superfície de Controlo Remota personalizada para o seu documento mimoLive, que pode ser executada num iPad, iPhone ou qualquer outro dispositivo com um navegador de Internet.

Controlar o mimoLive com php

Temos uma amostra bem documentada de um script PHP no GitHub:
https://github.com/boinx/mimoLive-HTTP-Demo

Controlar o mimoLive com CURL

Para controlar o mimoLive através de HTTP pode usar o comando bash "curl". Para que os comandos curl funcionem, é necessário encontrar o ID do documento mimoLive que pretende manipular.

Controlar o mimoLive com a camada de automatização

O Camada de automatização pode executar alguns comandos fáceis para desencadear acções no mimLive através das suas API Endpoints. Tem também um comando httpRequest() para efetuar qualquer tipo de OBTER acções de pedido o HTTP API é capaz de o fazer.

Controlar o mimoLive com o Apple Script

Atualmente, o mimoLive não suporta nativamente o Apple Script. No entanto, pode usar uma solução alternativa para contactar o mimoLive: Existe um comando "do shell script" no apple script que lhe permite executar comandos bash como "curl". A secção anterior explica como criar um comando curl para manipular uma determinada camada ou valor de camada.

Armadilhas no Apple Script

No Apple Script, há duas armadilhas ao trazer um comando de terminal como "curl" para o comando do shell script: 1. Todos os " têm de ser prefixados com um \ para que o analisador Apple-Script saiba que não são os marcadores de fim para o comando do shell script. O \ é um carácter de escape para dizer ao analisador para ignorar o carácter seguinte. 2. Se concatenar várias partes de texto com &, então, para o Apple Script, isto é uma "lista de texto" em vez de um único texto. O comando do shell não funciona com "lista de texto" e, por isso, tem de o converter novamente num único texto com "as text" no final do texto do seu comando curl

Quando estiveres satisfeito com o teu comando curl, tens de o envolver num comando "do shell script" no Apple Script:

*

Certifique-se de que substitui xxxxxxxxx pelo seu Endpoint de API de camada específico!

set layerAPIEndpoint to "xxxxxxxxx" -- in our example this would be "http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B"

set lowerThirdTitle to "Hello World!"
do shell script "curl -d '{\"input-values\":{\"tvGroup_Content__Title\":\"" & lowerThirdTitle & "\"}}' -H \"Content-Type: application/json\" -X PUT \"" & layerAPIEndpoint & "\"" as text

O seguinte exemplo de script da Apple mostra como ativar uma camada de meia em meia hora, à hora: Isto pode ser útil para sobreposições comerciais. Certifique-se de que utiliza uma camada que se desliga após um determinado período de tempo (por exemplo, uma camada Placer com uma fonte de filme sem looping).

*

Certifique-se de que substitui xxxxxxxxx pelo seu Endpoint de API de camada específico!

-- configure your Layer API Endpoint:
set layerAPIEndpoint to "xxxxxxxxx" -- in our example this would be "http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B"
-- repeat endlessly:
repeat
	-- get the seconds last in this hour
	set currentDate to current date
	set secondsToNextHour to 3600 - ((minutes of currentDate) * 60 + (seconds of currentDate))
	-- --------------------------------------------
	-- The following code snippet is useful only if you want to
	-- switch the layer live on half hours also.
	-- if you don't want this behaviour you can delete this part.
	-- --------------------------------------------
	-- check if we are currently in the first half of the hour
	if secondsToNextHour > 1800 then
		-- yes, we are in the first half of the hour, so only wait half the time
		set secondsToNextHour to secondsToNextHour - 1800
	end if
	-- --------------------------------------------
	-- wait until the time to trigger the layer
	delay secondsToNextHour
	-- set the specified layer to live:
	do shell script "curl \"" & layerAPIEndpoint & "/setLive\"" as text
	-- wait a couple of seconds to make sure we don't glitch in time
	delay 5
end repeat

Controlar os elementos da interface do utilizador no mimoLive

Obter um API Ponto final

Os pontos finais da API são essenciais para abordar elementos específicos no seu documento mimoLive. Para obter uma lista de pontos finais API disponíveis, consulte Pontos de extremidade da API.

Antes do mimoLive 5.5 era difícil obter a ID do documento e, por exemplo, uma ID de camada com comandos de terminal que procuravam através de longos JSON dados. Desde o mimoLive 5.5 é muito mais fácil:

Em primeiro lugar, copie o ficheiro mimoLive HTTP base do servidor URL na secção Controlo Remoto da janela de Preferências do mimoLive (ver imagem acima). Abra um editor de texto (por exemplo, TextEdit da Apple) e cole o conteúdo da Área de Transferência num documento de texto recém-criado. Certifique-se de que existe não barra invertida no final do URL! O resultado deve ser o seguinte:

http://172.28.30.202:8989

Na janela do documento mimoLive com o seu rato, pode clicar com o botão direito do rato (ou com o botão de controlo, ou com dois dedos) no objeto de interesse (por exemplo, uma Camada, uma Fonte, um botão de um controlo de Camada) para obter um menu de contexto. Existe um item de menu que lhe permite copiar o API Ponto final para a área de transferência do macOS para a utilizar no seu mimoLive API projeto.

bc6c7e19 e991 48a0 a9b8 b56d690f19b4

Por vezes, é importante abordar uma variante de camada específica em vez da camada em geral. Se clicar com o botão direito do rato no parâmetro de uma camada, verá que existem diferentes API para a camada ativa atual ou para a variante de camada específica:

6120370f a575 43db 891b ef3a91d5aec5

Volte ao seu editor de texto e cole o ficheiro que acabou de copiar API Ponto final após o HTTP Base do servidor URL. Agora o URL no seu navegador de texto deve ter o seguinte aspeto:

http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B

Esta é a última API Endpoint para endereçar uma camada no seu documento. Neste exemplo 458706932 é o ID do documento e BA868701-8131-49CB-8EDD-8C7E6E7CD60B é o ID de camada específico de uma determinada camada deste documento.

Clicar com o botão direito do rato em determinados elementos da interface do utilizador para revelar um menu de contexto para obter o ponto final específico da API funciona para o seguinte

  • Fontes
  • Camadas
  • Variantes de camada
  • Parâmetro de camada
  • Destinos de saída
  • Conjuntos de camadas
Captura de ecrã 2024 10 08 às 10.19.00

Exemplo: Ligar e desligar DESLIGADO a Camada

Com os dados recuperados API Endpoint para uma determinada camada, pode activá-lo e desactivá-lo com os seguintes comandos de terminal.

*

Certifique-se de que substitui xxxxxxxxx pelo Endpoint da API do passo anterior!

curl xxxxxxxxx/setLive
curl xxxxxxxxx/setOff
curl xxxxxxxxx/toggleLive
# our example will look like this:
curl http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/setLive
*

Os URLs também funcionam num navegador da Internet

Esses URLs (sem o comando "curl") também podem ser colocados na barra de endereços de um navegador de Internet. Assim que carregar em "return", o browser chamará o servidor HTTP mimoLive e executará o comando que especificou. Se tiver dados JSON que precisa de enviar para o ponto final da API, pode adicioná-los também ao URL, veja "Converter um comando CURL com dados JSON para um URL HTTP para pedidos HTTP simples" abaixo.

Uma forma fácil de obter o URL HTTP completo para ativar ou desativar o estado em direto de uma camada é clicar com o botão direito do rato no botão Em direto da camada para revelar um menu de contexto e selecionar 'Copiar URL para definir camada em direto'. Isto copiará o URL para a área de transferência para sua utilização. Na captura de ecrã, pode ver o menu de contexto para o botão Em direto de uma camada Lower Third.

Captura de ecrã 2024 10 08 às 10.13.16

Exemplo: Modificação de um valor de uma camada

- Todos os parâmetros de uma camada podem ser definidos através da função HTTP API. É necessário encontrar a chave correcta para definir um novo valor. No nosso exemplo, vamos definir o título de um Camada Lower Third com a chave tvGroup_Content__Title. Porque precisamos de enviar o novo valor numa JSON para o ficheiro HTTP servidor com um PUT o comando curl fica um pouco cheio.

*Certifique-se de que substitui xxxxxxxxx pela sua camada específica API Ponto final!

curl -d '{"input-values":{"tvGroup_Content__Title":"My new title"}}' -H "Content-Type: application/json" -X PUT "xxxxxxxxx"

Uma maneira rápida de obter um URL HTTP completo para acionar a atualização de uma propriedade de camada é clicar com o botão direito do mouse no nome da propriedade, revelando um menu de contexto, e selecionar "Copiar URL para alterar '.....' "Este comando de menu copia um URL HTTP para a área de transferência, que, quando chamado (por exemplo, num navegador da Internet), definirá a propriedade para o seu valor atual. Examinando o URL, pode determinar que parte do mesmo precisa de ser modificada para enviar os seus próprios dados para esta propriedade. Na captura de ecrã, pode ver o menu de contexto para copiar o URL para alterar a legenda de uma camada Lower Third.

Captura de ecrã 2024 10 08 às 10.05.39
http://127.0.0.1:8989/api/v1/documents/xxxxxxxxxxxx/layers/yyyyyyyyyyyy/variants/zzzzzzzzzzzz?include=data.attributes.input-values&fields[input-values]=tvGroup_Content__Subtitle&update=%7B%22input-values%22:%7B%22tvGroup_Content__Subtitle%22:%22mimoLive%20User%22%7D%7D

O novo valor no URL deve ser codificado no URL!

Neste exemplo, o espaço entre "mimoLive" e "User" é codificado como

Melhores práticas

Coleção de Úteis API Comandos para explorar

Definir o RTMP URL e Chave de transmissão de um destino de saída de transmissão em direto:

curl --data '{"data": { "attributes": {"settings": {"rtmpurl":"rtmp://mystreaminghost.com", "streamingkey":"MYTOTALLYSECRETSTREAMKEY"} } } }' --request PATCH http://192.168.0.100:8989/api/v1/documents/xxxxxxxxx/output-destinations/yyyyyyyyyyyyy

Definir o nome do ficheiro e o caminho de um destino de saída do File Writer

curl --data '{"data": { "attributes": {"settings": { "location": "~/Destktop/Recordings", "filename": "MyGreatShow %year-%month-%day-%hour-%minute.%extension" } } } }' --request PATCH http://192.168.0.100:8989/api/v1/documents/xxxxxxxxxxxx/output-destinations/yyyyyyyyyyyy

Definir a origem de vídeo de uma camada de estratificação

yyyyyyyyyyyyy será o UUID da fonte de vídeo. (e.g CCAF4418-367A-415F-AD25-6536C3EF3512)

xxxxxxxxxxxxxxx será o API ponto de extremidade de uma determinada variante de camada. (e.g. http://172.28.30.202:8989/api/v1/documents/2014814935/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/variants/AA868701-8131-49CB-8EDD-8C7E6E7CD60A)

curl -d '{"input-values":{"tvIn_VideoSourceAImage":"yyyyyyyyyyyyy"}}' -H "Content-Type: application/json" -X PUT "xxxxxxxxxxxxxxxx"

Definir o volume de uma camada que tenha um botão de volume de áudio

Com este comando curl, pode alterar o volume de áudio de uma camada que tenha um botão de ajuste de áudio (como a camada Placer). O valor "volume" pode assumir valores de 0,0 a 1,0.

xxxxxxxxxxxxxxx será o API ponto final da camada (por exemplo, http://10.101.2.2:8989/api/v1/documents/13195157/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B)

curl -d '{"volume": 0.5}' -H "Content-Type: application/json" -X PUT "xxxxxxxxxxxxxxxx"

Definir a cor de uma camada de fundo

xxxxxxxxxxxxxxx será o API ponto de extremidade de uma determinada variante de camada. (e.g. http://172.28.30.202:8989/api/v1/documents/2014814935/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B/variants/AA868701-8131-49CB-8EDD-8C7E6E7CD60A)

curl -d '{"input-values":{"tvGroup_Appearance__Color_1":{"red": 1.0, "blue": 0.5, "green": 0, "alpha": 0.5}}}' -H "Content-Type: application/json" -X PUT "xxxxxxxxxxxxxxxx"

Limpar o caminho do ficheiro de uma fonte de vídeo da Última Gravação

No seu Repositório de Fontes, pode ter um Fonte da Última Gravação que dará acesso à última gravação que qualquer Destino de Saída de Gravação de Ficheiros anunciará. Numa aplicação de quiosque, será necessário limpar o caminho da última gravação para que o próximo utilizador da estação não possa rever a gravação do utilizador anterior. Com o seguinte comando da Camada de Automatização pode limpar esta informação da Fonte da Última Gravação:

httpRequest(http://127.0.0.1:8989/api/v1/documents/2014814935/sources/2014814935-413AC0A3-AC43-4A7D-A228-6D0181BF1476?update=%7B%22filepath%22%3A%22%22%7D)

Armazenamento JSON Dados no documento mimoLive

Com o ponto de extremidade "datastores" pode armazenar qualquer tipo de dados no documento mimoLive para os manter durante um recarregamento do documento. É necessário utilizar um "PUT" para guardar os dados e um pedido "OBTER" para o ler de volta. Pode armazenar qualquer tipo de dados, mas neste exemplo estamos a armazenar JSON Dados porque este parece ser um caso de utilização muito comum. Se pretender armazenar dados diferentes, tem de ajustar o parâmetro -H em conformidade.

Comando Curl para armazenar dados:

curl —data '{"myData1": 1.5, "myData2":"Some text"}' -H "Content-Type: application/json" -X PUT http://127.0.0.1:8989/api/v1/documents/1643911183/datastores/myDataStore1

Comando Curl para ler os dados de volta:

curl -X GET http://127.0.0.1:8989/api/v1/documents/1643911183/datastores/myDataStore1

Atualizar o caminho do ficheiro de origem de uma fonte de ficheiro multimédia

Pode querer trocar o filme que é reproduzido ou substituir um anúncio apresentado por um Fonte do ficheiro multimédia. Isto pode ser feito com um comando de atualização executado na fonte API ponto final.

Certifique-se de que o modo de referência do ficheiro da Fonte de Média está definido para "Caminho absoluto". Obtenha o API para esta fonte, clicando com o botão direito do rato na coluna da esquerda e seleccionando "Copiar ponto de extremidade da fonte API Ponto final para a área de transferência" no menu de contexto. Criar um URL da seguinte forma:

http://127.0.0.1:8989/api/v1/documents/<YOUR DOCUMENT ID>/sources/<SOURCE API ENDPOINT>?update={"filepath":"<LOCAL FILE PATH>"}

Certifique-se de que codifica o JSON dados no URL para obter um URL que pode ser usado em um comando curl como este:

curl -X GET http://127.0.0.1:8989/api/v1/documents/1748069974/sources/1748069974-334DA2E4-DFF3-4225-8F4A-D09D40A6BD5D?update=%7B%22filepath%22:%22~/Desktop/Screen%20Recording%202022-07-27%20at%2012.18.23.mov%22%7D

Tenha em atenção que pode utilizar o "~" no início do caminho do ficheiro para fazer referência ao diretório pessoal do utilizador atual.

Conversão de um CURL comando com JSON Dados para um HTTP URL para simples HTTP Pedidos

Por vezes, só é possível enviar um simples HTTP ao mimoLive em vez de usar um comando curl, por exemplo, no caso de aplicações de automatização de terceiros ou da própria camada de automatização mimoLive. Isto requer a conversão do bloco de dados do comando curl para fazer parte do URL. Pode fazê-lo da seguinte forma:

Vamos supor que temos o seguinte comando curl:

curl --data '{"data": { "attributes": {"settings": {"rtmpurl":"rtmp://mystreaminghost.com", "streamingkey":"MYTOTALLYSECRETSTREAMKEY"} } } }' --request PATCH http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110

Tomaria o HTTP parte primeiro:

http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110

Adicione-lhe ?update=:

http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110?update=

Obtenha toda a cadeia de dados e remova todos os espaços desnecessários:

{"data":{"attributes":{"settings":{"rtmpurl":"rtmp://mystreaminghost.com","streamingkey":"MYTOTALLYSECRETSTREAMKEY"}}}}

Codificar isto para o seu URL forma por escapando aos caracteres não conformes com o URL (por exemplo, utilizando https://www.urlencoder.org/)

%7B%22data%22%3A%7B%22attributes%22%3A%7B%22settings%22%3A%7B%22rtmpurl%22%3A%22rtmp%3A%2F%2Fmystreaminghost.com%22%2C%22streamingkey%22%3A%22MYTOTALLYSECRETSTREAMKEY%22%7D%7D%7D%7D

Por fim, coloque tudo isto depois do ?update= desta forma:

http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110?update=%7B%22data%22%3A%7B%22attributes%22%3A%7B%22settings%22%3A%7B%22rtmpurl%22%3A%22rtmp%3A%2F%2Fmystreaminghost.com%22%2C%22streamingkey%22%3A%22MYTOTALLYSECRETSTREAMKEY%22%7D%7D%7D%7D

Agora pode utilizar este URL num simples HTTP pedido.

A sua opinião

Como avalia a sua experiência com esta funcionalidade do mimoLive?

Manual do utilizador: Actualizações recentes

Castr

Castr é uma plataforma de re-streaming em direto baseada na nuvem que permite aos utilizadores transmitir conteúdos para múltiplos

Ler mais "

Selecione o idioma