Requisitos previos
- Abra el documento que desea manipular en mimoLive.
- Asegúrese de que el documento está en un estado finalizado para que los puntos finales de la API como Capas no cambien más. Tenga en cuenta que si elimina una capa y la añade de nuevo, esta capa tendrá un ID de capa diferente cuando hable con ella a través de la API. Sin embargo, reordenar capas o añadir variantes de capas no cambiará el ID de capa.
- Habilitar el HTTP-Servidor en las Preferencias de Control Remoto de mimoLive. Marque la opción "Permitir acceso de control remoto":
Anote el número IP o la dirección IP con el número de puerto de mimoLive para su uso posterior cuando trabaje con el HTTP API.
Formas de controlar mimoLive a distancia
Control de mimoLive con superficies de control remoto
La forma más eficaz es crear una Superficie de control remoto personalizada para su documento mimoLive, que puede ejecutarse en un iPad, iPhone o cualquier otro dispositivo con navegador de Internet.
Control de mimoLive con php
Disponemos de un script PHP de ejemplo bien documentado en GitHub:
https://github.com/boinx/mimoLive-HTTP-Demo
Control de mimoLive con CURL
Para controlar mimoLive a través de HTTP puede utilizar el comando bash "curl". Para que los comandos curl funcionen necesitas encontrar el ID del documento mimoLive que quieres manipular.
Control de mimoLive con la capa de automatización
En Capa de automatización puede ejecutar algunos comandos sencillos para desencadenar acciones en mimLive mediante su API Endpoints. También dispone de un comando httpRequest() para realizar cualquier tipo de GET solicitar acciones la HTTP API es capaz de hacer.
Control de mimoLive con Apple Script
Actualmente mimoLive no soporta Apple Script de forma nativa. Sin embargo, puede utilizar una solución alternativa para llegar a mimoLive: Hay un comando "do shell script" en apple script que te permite ejecutar comandos bash como "curl". La sección anterior explica cómo crear un comando curl para manipular una determinada capa o valor de capa.
Errores en Apple Script
En Apple Script hay dos escollos cuando se lleva un comando de terminal como "curl" al comando do shell script: 1. Todos los " deben ir precedidos de un \ para que el analizador sintáctico de Apple-Script sepa que esos no son los marcadores finales del comando do shell script. El \ es un carácter de escape para indicar al analizador sintáctico que ignore el carácter siguiente. 2. Si concatena varias partes de texto con & entonces esto es una "lista de texto" para Apple Script en lugar de un único texto. El comando do shell no funcionará con "lista de texto" y por lo tanto su necesidad de convertirlo de nuevo a un solo texto con el "como texto" al final de su comando curl texto
Una vez que esté satisfecho con su comando curl necesita envolverlo en un comando "do shell script" en Apple Script:
Asegúrese de sustituir xxxxxxxxx por el punto final de la API de su capa específica.
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
El siguiente ejemplo de script de Apple muestra cómo activar una capa cada media hora: Esto puede ser útil para superposiciones comerciales. Asegúrese de utilizar una capa que se apague sola después de un cierto tiempo (por ejemplo, una capa de colocación con una fuente de película no en bucle lo hará).
Asegúrese de sustituir xxxxxxxxx por el punto final de la API de su capa específica.
-- 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
Control de los elementos de la interfaz de usuario en mimoLive
Obtener un API Punto final
Los puntos finales de la API son esenciales para abordar elementos específicos en su documento mimoLive. Para obtener una lista de los puntos finales de API disponibles, consulte Puntos finales de la API.
Antes de mimoLive 5.5 era difícil obtener el ID de documento y, por ejemplo, un ID de capa con comandos de Terminal buscando a través de largas JSON datos. Desde mimoLive 5.5 es mucho más fácil:
En primer lugar, copie el archivo mimoLive HTTP base del servidor URL de la sección Control Remoto de la ventana de Preferencias de mimoLive (ver captura de pantalla anterior). Abre un editor de texto (por ejemplo, TextEdit de Apple) y pega el contenido del Portapapeles en un documento de texto recién creado. Asegúrate de que hay no barra invertida al final del URL¡! El resultado debería ser el siguiente:
http://172.28.30.202:8989
En la ventana del documento mimoLive, con el ratón, puedes hacer clic con el botón derecho (o control-clic, o dos dedos-clic) en el objeto de interés (por ejemplo, una Capa, una Fuente, un botón de un control de Capa) para obtener un menú contextual. Hay un elemento de menú que le permite copiar el archivo API Punto final al portapapeles de macOS para utilizarlo en tu mimoLive API proyecto.
A veces es importante tratar una variante específica de la capa en lugar de la capa en general. Si hace clic con el botón derecho en el parámetro de una capa, verá que hay diferentes API para la capa activa actual o la variante de capa específica:
Vuelve a tu editor de texto y pega lo que acabas de copiar API Punto final después del HTTP Base del servidor URL. Ahora el URL en su navegador de texto debería tener este aspecto:
http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B
Esta es la última API Endpoint para dirigirse a una capa de su documento. En este ejemplo 458706932 es el ID del documento y BA868701-8131-49CB-8EDD-8C7E6E7CD60B es el ID de capa específico de una capa determinada en este documento.
Hacer clic con el botón derecho del ratón sobre determinados elementos de la interfaz de usuario para revelar un menú contextual que permita obtener el punto final de API específico funciona para lo siguiente:
- Fuentes
- Capas
- Variantes de capa
- Parámetro de capa
- Destinos de salida
- Conjuntos de capas
Ejemplo: Conectar y OFF a Capa
Con los datos recuperados API Endpoint para una determinada capa puede activarlo y desactivarlo con los siguientes comandos de terminal.
Asegúrese de sustituir xxxxxxxxx por el punto final de la API del paso 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
Las URL también funcionan en un navegador de Internet
Estas URL (sin el comando "curl") también se pueden poner en la barra de direcciones de un navegador de Internet. Al pulsar "return", el navegador llamará al servidor HTTP de mimoLive y ejecutará el comando especificado. Si tiene datos JSON que necesita enviar al punto final de la API, también puede añadirlos a la URL, consulte "Convertir un comando CURL con datos JSON en una URL HTTP para solicitudes HTTP simples" más abajo.
Una forma sencilla de obtener la URL HTTP completa para activar o desactivar el estado activo de una capa es hacer clic con el botón derecho del ratón en el botón activo de la capa para que aparezca un menú contextual y seleccionar "Copiar URL para establecer capa activa". Esto copiará la URL al portapapeles para su uso. En la captura de pantalla, puede ver el menú contextual del botón En vivo de una capa Lower Third.
Ejemplo: Cambiar el valor de una capa
- Todos los parámetros de una capa pueden establecerse a través de la función HTTP API. Debe encontrar la clave correcta para establecer un nuevo valor. En nuestro ejemplo, estableceremos el Título de un archivo Lower Third Capa con la clave tvGroup_Content__Title. Como tenemos que enviar el nuevo valor en un JSON al archivo HTTP servidor con un PUT solicitar el comando curl se llena un poco.
*Asegúrese de sustituir xxxxxxxxx por su capa específica API ¡Punto final!
curl -d '{"input-values":{"tvGroup_Content__Title":"My new title"}}' -H "Content-Type: application/json" -X PUT "xxxxxxxxx"
Una forma rápida de obtener una URL HTTP completa para activar la actualización de una propiedad de capa es hacer clic con el botón derecho del ratón sobre el nombre de la propiedad, revelando un menú contextual, y seleccionar "Copiar URL para cambiar '.....'". " Este comando de menú copia en el portapapeles una URL HTTP que, al ser invocada (por ejemplo, en un navegador de Internet), fijará la propiedad en su valor actual. Examinando la URL, puede determinar qué parte de ella debe modificarse para enviar sus propios datos a esta propiedad. En la captura de pantalla, puede ver el menú contextual para copiar la URL para cambiar el subtítulo de una capa Lower Third.
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
¡El nuevo valor de la URL debe estar codificado en la URL!
En este ejemplo el espacio entre "mimoLive" y "Usuario" se codifica como
Buenas prácticas
Colección de útiles API Comandos para explorar
Ajuste del RTMP URL y Clave de Streaming de un Destino de Salida de Streaming en Directo:
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
Configuración del nombre de archivo y la ruta de un destino de salida de la grabadora de archivos
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
Configuración de la fuente de vídeo de una capa de colocación
yyyyyyyyyyy será el UUID de la fuente de vídeo. (e.g CCAF4418-367A-415F-AD25-6536C3EF3512)
xxxxxxxxxxxxx será el API punto final de la variante de capa determinada. (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"
Ajustar el volumen de una capa que tiene un botón de volumen de audio
Con este comando curl, puede cambiar el volumen de audio de una capa que tenga un mando de ajuste de audio (como la capa Placer). El valor "volumen" puede tomar valores de 0,0 a 1,0.
xxxxxxxxxxxxx será el API punto final de la capa (por ejemplo, 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 el color de una capa de fondo
xxxxxxxxxxxxx será el API punto final de la variante de capa determinada. (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"
Borrar la ruta de archivo de una fuente de vídeo Última grabación
En su Repositorio de fuentes, puede tener una Última fuente de grabación que le proporcionará acceso a la última grabación que anuncie cualquier Destino de salida de grabación de archivos. En una aplicación de quiosco, será necesario borrar la ruta de la última grabación para que el siguiente usuario de la estación no pueda revisar la grabación del usuario anterior. Con el siguiente comando Capa de automatización puede borrar esta información de la Fuente de última grabación:
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)
Almacenamiento JSON Datos del documento mimoLive
Con el endpoint "datastores" puedes almacenar cualquier tipo de datos en el documento mimoLive para que persistan durante una recarga del documento. Es necesario utilizar un "PUT" para guardar los datos y una solicitud "GET"para volver a leerlo. Usted puede almacenar cualquier tipo de datos, sin embargo en este ejemplo estamos almacenando JSON Data porque este parece ser un caso de uso muy común. Si desea almacenar datos diferentes, deberá ajustar el parámetro -H en consecuencia.
Comando Curl para almacenar datos:
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 volver a leer los datos:
curl -X GET http://127.0.0.1:8989/api/v1/documents/1643911183/datastores/myDataStore1
Actualizar la ruta del archivo fuente de un archivo multimedia
Es posible que desee cambiar la película que se reproduce o sustituir un anuncio mostrado por un Fuente del archivo multimedia. Esto puede hacerse con un comando de actualización ejecutado en la fuente API punto final.
Asegúrese de que el modo de referencia de archivos de la fuente de medios está configurado como "Ruta absoluta". Obtenga la API de esta fuente haciendo clic con el botón derecho del ratón sobre ella en la columna de la izquierda y seleccionando "Copiar el punto final de la fuente". API Endpoint to Clipboard" en el menú contextual. Cree un URL de la siguiente forma:
http://127.0.0.1:8989/api/v1/documents/<YOUR DOCUMENT ID>/sources/<SOURCE API ENDPOINT>?update={"filepath":"<LOCAL FILE PATH>"}
Asegúrese de codificar el JSON datos en el URL para obtener un URL que se puede utilizar en un 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
Tenga en cuenta que puede utilizar "~" al principio de la ruta del archivo para hacer referencia al directorio personal del usuario actual.
Conversión de un CURL con JSON Datos A un HTTP URL por simple HTTP Solicitudes
A veces sólo es posible enviar un simple HTTP a mimoLive en lugar de utilizar un comando curl, por ejemplo, en el caso de aplicaciones de automatización de terceros o de la propia capa de automatización mimoLive. Para ello, es necesario convertir el bloque de datos del comando curl para que forme parte del archivo URL. Puede hacerlo de la siguiente manera:
Supongamos que tenemos el siguiente 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
Usted tomaría el HTTP pieza primero:
http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110
Añádale ?update=:
http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110?update=
Obtenga toda la cadena de datos y elimine todos los espacios innecesarios:
{"data":{"attributes":{"settings":{"rtmpurl":"rtmp://mystreaminghost.com","streamingkey":"MYTOTALLYSECRETSTREAMKEY"}}}}
Codifica esto en su URL forma por escape de los caracteres no conformes con URL (por ejemplo, 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 último, ponga todo esto después de ?update= de la siguiente manera:
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
Ahora puede utilizar este URL en un simple HTTP solicitud.