전제 조건
- mimoLive에서 조작하려는 문서를 엽니다.
- 문서가 완성된 상태인지 확인하여 레이어와 같은 API 엔드포인트가 더 이상 변경되지 않도록 하세요. 레이어를 제거했다가 다시 추가하면 API를 통해 이 레이어에 연결할 때 다른 레이어 ID를 갖게 된다는 점에 유의하세요. 그러나 레이어를 재정렬하거나 레이어 변형을 추가해도 레이어 ID는 변경되지 않습니다.
- 활성화 HTTP-mimoLive 원격 제어 환경설정의 서버. "원격 제어 액세스 허용" 옵션을 선택합니다:
mimoLive의 포트 번호와 함께 IP 번호 또는 IP 주소를 기록해 두었다가 나중에 사용할 때 참고하세요. HTTP API.
미모라이브를 원격으로 제어하는 방법
원격 제어 표면으로 mimoLive 제어하기
가장 효과적인 방법은 iPad, iPhone 또는 인터넷 브라우저가 있는 기타 디바이스에서 실행할 수 있는 사용자 지정 원격 제어 표면을 만들어서 mimoLive 문서에 사용하는 것입니다.
PHP로 mimoLive 제어하기
GitHub에 잘 문서화된 PHP 스크립트 샘플이 있습니다:
https://github.com/boinx/mimoLive-HTTP-데모
mimoLive 제어 CURL
다음을 통해 mimoLive를 제어하려면 HTTP bash 명령 "curl"을 사용할 수 있습니다. curl 명령이 작동하려면 조작하려는 mimoLive 문서의 ID를 찾아야 합니다.
자동화 레이어로 mimoLive 제어하기
그리고 자동화 계층 는 몇 가지 간단한 명령을 수행하여 mimLive에서 동작을 트리거할 수 있습니다. API 엔드포인트. 또한 모든 종류의 엔드포인트에 대한 GET 요청 작업 HTTP API 를 사용할 수 있습니다.
Apple 스크립트로 mimoLive 제어하기
현재 mimoLive는 기본적으로 Apple 스크립트를 지원하지 않습니다. 그러나 해결 방법을 사용하여 mimoLive에 연결할 수 있습니다: 애플 스크립트에는 "curl"과 같은 bash 명령을 수행할 수 있는 "do shell script" 명령이 있습니다. 이전 섹션에서는 특정 레이어 또는 레이어 값을 조작하기 위해 curl 명령을 만드는 방법을 설명했습니다.
Apple 스크립트의 함정
Apple 스크립트에서 "curl"과 같은 터미널 명령을 do 셸 스크립트 명령으로 가져올 때 두 가지 함정이 있습니다: 1. 모든 " 앞에 \를 붙여야 Apple-Script 구문 분석기가 do 셸 스크립트 명령의 종료 마커가 아님을 알 수 있습니다. 는 구문 분석기에 다음 문자를 무시하도록 지시하는 이스케이프 문자입니다. 2. 여러 텍스트 부분을 &로 연결하면 단일 텍스트가 아니라 Apple 스크립트에 대한 "텍스트 목록"이 됩니다. do 셸 명령은 "텍스트 목록"에서는 작동하지 않으므로 curl 명령 텍스트 끝에 "as 텍스트"를 사용하여 단일 텍스트로 다시 변환해야 합니다.
curl 명령이 만족스러우면 Apple 스크립트에서 "do shell script" 명령으로 래핑해야 합니다:
xxxxxxxxx를 특정 레이어 API 엔드포인트로 바꿔주세요!
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
다음 예제 Apple 스크립트는 매시 30분마다 레이어를 켜는 방법을 보여줍니다: 상업용 오버레이에 유용할 수 있습니다. 특정 시간이 지나면 자동으로 꺼지는 레이어를 사용해야 합니다(예: 비루핑 동영상 소스가 있는 플레이스 레이어가 그렇게 합니다).
xxxxxxxxx를 특정 레이어 API 엔드포인트로 바꿔주세요!
-- 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
mimoLive에서 사용자 인터페이스 요소 제어하기
받기 API 엔드포인트
API 엔드포인트는 mimoLive 문서의 특정 요소를 처리하는 데 필수적입니다. 사용 가능한 API 엔드포인트 목록은 다음을 참조하세요. API 엔드포인트.
mimoLive 5.5 이전에는 터미널 명령으로 문서 ID, 예를 들어 레이어 ID를 길게 살펴보는 것이 어려웠습니다. JSON 데이터. mimoLive 5.5부터는 훨씬 쉬워졌습니다:
먼저 mimoLive HTTP 서버 기반 URL 를 클릭합니다(위 스크린샷 참조). 텍스트 편집기(예: Apple의 TextEdit)를 열고 클립보드 콘텐츠를 새로 만든 텍스트 문서에 붙여넣습니다. 다음 사항을 확인하세요. 아니요 끝에 있는 백슬래시 URL! 결과는 다음과 같아야 합니다:
http://172.28.30.202:8989
mimoLive 문서 창에서 마우스로 원하는 대상(예: 레이어, 소스, 레이어 컨트롤의 버튼)을 마우스 오른쪽 버튼으로 클릭(또는 컨트롤 클릭 또는 두 손가락 클릭)하면 컨텍스트 메뉴가 표시됩니다. 메뉴 항목 중 하나를 복사할 수 있는 API macOS 클립보드에 대한 엔드포인트를 mimoLive에서 사용하세요. API 프로젝트.
때로는 일반적인 레이어가 아닌 특정 레이어 변형을 다루는 것이 중요할 때가 있습니다. 레이어의 매개변수를 마우스 오른쪽 버튼으로 클릭하면 여러 가지 다른 API 현재 라이브 레이어 또는 특정 레이어 변형에 대한 엔드포인트입니다:
텍스트 편집기로 돌아가서 방금 복사한 내용을 붙여넣습니다. API 엔드포인트 이후 HTTP 서버 기반 URL. 이제 URL 텍스트 브라우저에서 다음과 같이 표시되어야 합니다:
http://172.28.30.202:8989/api/v1/documents/458706932/layers/BA868701-8131-49CB-8EDD-8C7E6E7CD60B
이것이 결승전입니다. API 엔드포인트를 사용하여 문서의 레이어를 주소 지정합니다. 이 예제에서는 458706932 는 문서 ID이고 BA868701-8131-49CB-8EDD-8C7E6E7CD60B 는 이 문서에서 특정 레이어의 특정 레이어 ID입니다.
특정 사용자 인터페이스 요소를 마우스 오른쪽 버튼으로 클릭하면 특정 API 엔드포인트를 가져오기 위한 컨텍스트 메뉴가 표시됩니다:
- 출처
- 레이어
- 레이어 변형
- 레이어 매개변수
- 출력 대상
- 레이어 세트
예시: 켜기 및 꺼짐 레이어
검색된 API 특정 레이어에 대한 엔드포인트는 다음 터미널 명령을 사용하여 켜고 끌 수 있습니다.
이전 단계의 API 엔드포인트를 xxxxxxxxx로 바꿔주세요!
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
URL은 인터넷 브라우저에서도 작동합니다.
"curl" 명령 없이 해당 URL을 인터넷 브라우저의 주소창에 입력할 수도 있습니다. Return 키를 누르면 브라우저가 mimoLive HTTP 서버를 호출하여 지정한 명령을 수행합니다. API 엔드포인트로 보내야 하는 JSON 데이터가 있는 경우 이 데이터도 URL에 추가할 수 있으며, 아래의 "간단한 HTTP 요청을 위해 JSON 데이터가 포함된 CURL 명령을 HTTP URL로 변환하기"를 참조하세요.
레이어의 라이브 상태를 켜거나 끄기 위해 전체 HTTP URL을 가져오는 쉬운 방법은 레이어의 라이브 버튼을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 표시한 다음 '복사 URL을 선택하여 레이어 라이브 설정하기'를 선택하면 됩니다. 그러면 사용할 수 있도록 URL이 클립보드에 복사됩니다. 스크린샷에서 Lower Third 레이어의 라이브 버튼에 대한 컨텍스트 메뉴를 볼 수 있습니다.
예시: 레이어 값 변경하기
- 레이어의 모든 매개 변수는 다음을 통해 설정할 수 있습니다. HTTP API. 새 값을 설정하려면 올바른 키를 찾아야 합니다. 이 예제에서는 제목을 Lower Third 레이어 키와 함께 tvGroup_Content__Title. 새 값을 전송하려면 JSON 파일을 HTTP 서버가 있는 PUT 요청하면 curl 명령이 약간 혼잡해집니다.
*xxxxxxxxx를 특정 레이어로 바꾸어 주세요. API 엔드포인트!
curl -d '{"input-values":{"tvGroup_Content__Title":"My new title"}}' -H "Content-Type: application/json" -X PUT "xxxxxxxxx"
레이어 프로퍼티의 업데이트를 트리거하기 위해 완전한 HTTP URL을 얻는 빠른 방법은 프로퍼티 이름을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 표시한 다음 '.....' 변경을 위한 URL 복사'를 선택하는 것입니다. "이 메뉴 명령은 HTTP URL을 클립보드에 복사하며, 인터넷 브라우저에서 이 명령이 호출되면 프로퍼티가 현재 값으로 설정됩니다. URL을 검토하여 이 속성으로 데이터를 보내기 위해 수정해야 할 부분을 확인할 수 있습니다. 스크린샷에서 Lower Third 레이어의 자막을 변경하기 위해 URL을 복사하는 컨텍스트 메뉴를 볼 수 있습니다.
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
URL의 새 값은 URL 인코딩된 값이어야 합니다!
이 예시에서 "mimoLive"와 "User" 사이의 공백은 으로 인코딩됩니다.
모범 사례
유용한 컬렉션 API 탐색할 수 있는 명령어
설정 RTMP URL 및 라이브 스트리밍 출력 대상의 스트리밍 키를 입력합니다:
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
파일 라이터 출력 대상의 파일 이름 및 경로 설정하기
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
플레이스 레이어의 비디오 소스 설정하기
yyyyyyyyyyy가 될 것입니다. UUID 를 입력합니다. (e.g CCAF4418-367A-415F-AD25-6536C3EF3512)
xxxxxxxxxxx가 API 엔드포인트를 추가합니다. (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"
오디오 볼륨 노브가 있는 레이어의 볼륨 설정하기
이 curl 명령을 사용하면 오디오 조정 노브가 있는 레이어(예: 플레이스 레이어)의 오디오 볼륨을 변경할 수 있습니다. "volume" 값은 0.0에서 1.0 사이의 값을 사용할 수 있습니다.
xxxxxxxxxxx가 API 레이어의 엔드포인트(예: 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"
배경 레이어의 색상 설정
xxxxxxxxxxx가 API 엔드포인트를 추가합니다. (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"
마지막 녹화 비디오 소스의 파일 경로 지우기
소스 저장소에 마지막 녹화 소스가 있으면 파일 녹화 출력 대상에서 발표할 최신 녹화에 대한 액세스를 제공할 수 있습니다. 키오스크 애플리케이션에서는 스테이션의 다음 사용자가 이전 사용자의 녹화를 검토할 수 없도록 마지막 녹화 경로를 지워야 합니다. 다음 자동화 레이어 명령으로 마지막 녹화 소스에서 이 정보를 지울 수 있습니다:
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)
저장 JSON mimoLive 문서의 데이터
"데이터스토어" 엔드포인트를 사용하면 문서가 다시 로드되는 동안 모든 종류의 데이터를 mimoLive 문서에 저장하여 유지할 수 있습니다. "PUT" 데이터 저장 요청과 "GET' 요청을 통해 다시 읽어오도록 요청합니다. 모든 종류의 데이터를 저장할 수 있지만 이 예에서는 다음을 저장하고 있습니다. JSON 데이터로 설정하는 것이 매우 일반적인 사용 사례인 것 같습니다. 다른 데이터를 저장하려면 -H 매개변수를 적절히 조정해야 합니다.
Curl 명령을 사용하여 데이터를 저장합니다:
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
Curl 명령을 사용하여 데이터를 다시 읽습니다:
curl -X GET http://127.0.0.1:8989/api/v1/documents/1643911183/datastores/myDataStore1
미디어 파일 소스의 소스 파일 경로 업데이트
재생 중인 동영상을 교체하거나 표시되는 광고를 교체할 수 있습니다. 미디어 파일 소스. 소스에서 업데이트 명령을 수행하여 이 작업을 수행할 수 있습니다. API 엔드포인트.
미디어 소스의 파일 참조 모드가 "절대 경로"로 설정되어 있는지 확인합니다. 미디어 소스의 API 왼쪽 열에서 마우스 오른쪽 버튼을 클릭하고 '소스 복사'를 선택하여 이 소스의 API 클립보드에 엔드포인트"를 클릭합니다. 작성 URL 를 입력합니다:
http://127.0.0.1:8989/api/v1/documents/<YOUR DOCUMENT ID>/sources/<SOURCE API ENDPOINT>?update={"filepath":"<LOCAL FILE PATH>"}
인코딩해야 합니다. JSON 데이터의 URL 를 사용하여 유효한 URL 와 같이 컬 명령어에 사용할 수 있습니다:
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
파일 경로의 시작 부분에 "~"를 사용하여 현재 사용자의 홈 디렉터리를 참조할 수 있습니다.
변환 CURL 명령과 함께 JSON 데이터 대상 HTTP URL 간단한 HTTP 요청
가끔은 간단한 HTTP 타사 자동화 앱이나 자동화 레이어 mimoLive 자체의 경우와 같이 curl 명령을 사용하는 대신 mimoLive에 요청을 전달할 수 있습니다. 이를 위해서는 curl 명령의 데이터 블록을 URL. 다음과 같이 할 수 있습니다:
다음과 같은 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
당신은 HTTP part 먼저:
http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110
여기에 ?update=을 추가합니다:
http://192.168.0.100:8989/api/v1/documents/458706932/output-destinations/4D072496-1CE3-418E-B73E-59A2927A2110?update=
모든 -데이터 문자열을 가져와 불필요한 공백을 모두 제거합니다:
{"data":{"attributes":{"settings":{"rtmpurl":"rtmp://mystreaminghost.com","streamingkey":"MYTOTALLYSECRETSTREAMKEY"}}}}
이를 인코딩하여 URL 양식에 URL을 따르지 않는 문자 이스케이프 (예: 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
마지막으로 이 모든 을 ?update= 뒤에 다음과 같이 입력합니다:
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
이제 다음을 사용할 수 있습니다. URL 간단한 HTTP 요청합니다.