BLOG

[실습예제] Amazon Interactive Video Service Timed Metadata 사용하기 – 1부
작성일: 2020-08-26

소개

시작하기 전에

이 블로그 게시물은 개발자가 Amazon Interactive Video Service (Amazon IVS) Timed Metadata 기능을 구축하고 사용하는 방법을 배울 수 있도록 하는 2 부작 시리즈 중 1  입니다. 이 연습 자습서에서는 뷰어에게 완전한 대화형 경험을 제공하는 Amazon IVS 라이브 스트림의 전체 작업 데모를 작성합니다. 이 연습은 개발자가 기능이 작동하는 방식을 배울 수 있도록 기술의 기본적인 데모로 설계했습니다.

 

Amazon IVS와 ​​같은 기본 서비스는 확장성이 뛰어나고 안전하지만 이 데모의 디자인은 프로덕션용이 아닙니다. 프로덕션 워크 플로우를 위한 스타터 키트를 찾고 있다면 Amazon IVS 스트리밍 설정에 대한 이 블로그 게시물을 확인하세요. Timed Metadata 기능이 작동하는 방식을 배우기 위해 샌드 박스를 만들고 싶다면 이 블로그 게시물 시리즈에서 확인하실 수 있습니다. 1 부에서는 시간 제한 메타 데이터 기능을 다루고 2부에서는 완전한 대화형 환경을 만드는 데 필요한 기본 인프라를 살펴보겠습니다.

 

필요한 도구

  • Linux / Unix 환경 (Apple OS X를 사용하여 이 데모를 만들었습니다.)
  • Python 3.x
  • boto3 Python 모듈

 

 

시작하기

Amazon IVS Timed Metadata 기능을 사용하려면 실행 중인 Amazon IVS 채널과 Amazon IVS REST API와 상호 작용하는 코드의 두 가지 이상이 필요합니다. Amazon IVS 서비스의 이러한 두 가지 기능을 사용하면 다른 메타 데이터 전송 방법에서 동기화할 필요 없이 모든 채널 뷰어에게 동시에 데이터 페이로드를 전송할 수 있습니다.

 

이 기능은 채널의 콘텐츠와 상호 작용을 조정할 때 매우 유용할 수 있습니다. 좋은 예는 표시되는 특정 콘텐츠에 대해 청중에게 제공되는 설문 조사입니다. 채널의 호스트는 질문을 할 수 있으며 Timed Metadata 기능을 사용하면 시청자가 대답할 수 있는 대화 상자가 나타납니다.

 

Timed Metadata 기능은 데이터를 뷰어에게만 보내고 응답을 캡처할 수 없습니다. 완전한 솔루션을 얻으려면 개발자는 이러한 응답을 캡처하는 워크 플로를 디자인해야 합니다. 여러분께 보여드리기 위해 간단한 버전을 만들어 보았습니다. 함께 살펴볼까요?

솔루션 개요

 

연습

이 예제에서는 Python Boto3 라이브러리를 사용하여 Amazon IVS REST API와 통신합니다. PutMetadata의 명령은 JSON 형식의 데이터 사전을 제공하는 데 사용됩니다. 비디오 플레이어에는 Timed Metadata 이벤트에 대한 리스너가 있으며 함수를 실행합니다.

 

먼저 전송할 데이터 사전을 생성해야 합니다. 이 자습서에서는 텍스트 문서에서 임의 라인을 “질문”으로 선택하고 이 질문을 참 또는 거짓 질문으로 정했습니다. 세 번째 옵션은 무작위로 선택하여 사전에 원하는 “답변”을 입력할 수 있음을 보여줍니다. 어떤 질문이 선택되었고 언제 반복될 수 있었는지 알기 위해 poll_id 와 current_time 을 추가했습니다.

 

마지막으로 json.dumps 명령을 사용하여 사전을 JSON 형식의 문자열로 변환합니다. 그런 다음 Boto3 Python 라이브러리를 사용하여 해당 정보를 Amazon IVS API로 보냅니다.

 

1 단계. Amazon IVS 채널 생성

다음 가이드 중 하나를 사용하여 새 Amazon IVS 채널을 생성합니다.

팁 :

  • AWS CLI 프로필과 동일한 리전에 Amazon IVS 채널을 생성합니다. 또한 metadata.py 파일의 “session.Client ()”내에서 “region_name”변수를 사용할 수 있습니다.
  • 채널 ARN을 기록해두세요.

 

2 단계. Amazon IVS 채널로 스트리밍

다음 가이드 중 하나를 사용하여 새로 생성된 Amazon IVS 채널로 스트리밍합니다.

팁: 재생 URL을 기록해 두세요.

 

3 단계. 웹 페이지 플레이어 설정

먼저 Amazon IVS 콘솔에서 테스트 플레이어로 채널이 정상인지 확인합니다. 그런 다음 삽입 할 Timed Metadata 페이로드를 추출하기 위한 사용자 지정 코드가 필요합니다. 플레이어가 먼저 작업 결과를 모니터링하도록 합시다.

시작하려면 여기에서 player.html HTML 문서를 다운로드하세요.

팁: 마우스 오른쪽 버튼을 클릭하고 다른 이름으로 링크 저장을 선택합니다.

player.html의 문서에서 새로 생성된 스트림에 Video.js 플레이어를 가리키도록 하나의 변수를 변경해야 합니다.

 

const STREAM_URL = ” CHANGEME !!”

를 교체 CHANGEME!!받는 재생 URL 로부터 재생 구성 아마존 IVS 콘솔의 섹션을 참고하세요. URL은 .m3u8 파일 확장자로 끝나야 합니다.

 

다음으로 웹 서버 뒤에 이 파일을 호스팅해야 합니다. 파일 이름을 두 번 클릭하고 로컬 파일로 여는 것만으로는 웹 페이지가 제대로 작동하지 않습니다. 한 가지 옵션은 Amazon S3 버킷에서 파일을 호스팅하고 파일을 public으로 만드는 입니다.

 

또 다른 옵션은 Amazon S3로 정적 웹 사이트 호스팅을 활성화하고 해당 버킷에 파일을 배치하는 것입니다. Linux 또는 Unix 환경에서 개발 중이고 Python 3이 설치된 경우 Python에 내장된 웹 서버를 사용하면 됩니다. HTML 문서의 디렉토리에서 이 명령을 실행할 수 있습니다.

python3 -m http.server 5001

 

이제 선호하는 웹 브라우저 (Firefox 또는 Chrome 권장)를 player.html 문서가 있는 URL로 지정합니다. Python 3 http.server를 사용한 경우 http://127.0.0.1:5001/player.html 이어야 합니다.

 

다음과 같은 웹 페이지가 표시됩니다.

 

 

4 단계. Python 스크립트 설정

주의: Amazon IVS는 작동하려면 AWS Command Line Interface 및 boto3 Python SDK 의 업데이트가 필요한 새로운 서비스입니다. 다음 명령이 작동하지 않으면 다음 지침에 따라 AWS CLI를 업데이트 하고 boto3를 업데이트하여 계속 진행하세요.

 

다음 명령을 사용하여 Amazon IVS를 지원하는 버전이 있는지 확인할 수 있습니다.

aws ivs 도움말

 

이제 Timed Metadata 명령을 수신할 수 있는 플레이어가 있으므로 해당 명령을 삽입해 보겠습니다. 먼저 두 개의 파일이 더 필요합니다.

팁: 마우스 오른쪽 버튼을 클릭하고 다른 이름으로 링크 저장을 선택합니다.

 

다음으로 metadata.py 스크립트 내부를 살펴봅니다. 무작위로 선택된 문장 목록이 있는 facts.txt 파일이 있습니다. 데모하고 싶은 팩트로 파일을 변경하는 것이 좋습니다. 각 팩트 뒤에 새 줄이 있는지 확인하세요.

 

또한 코드를 단순하게 유지하기 위해 즉석에서 poll_id를 생성하기 위한 각 줄의 “해시”를 수행하고자 합니다. 자세히 살펴보면 이 모든 것이 10초마다 순환하는 루프에 포함되어 있음을 알 수 있습니다. 다른 사용자는 프로덕션에서 이를 사용하지 않고자 한 것으로 보이는데요, 저는 이 Timed Metadata 기능이 작동하는 것을 볼 수 있도록 새롭고 흥미로운 팩트를 10 초마다 보내는 방법을 사용하고자 합니다.

 

이 데모를 지나 프로덕션으로 이동할 때 Amazon IVS 채널로 전송 될 사전을 생성하기 위해 이러한 예제를 보다 복잡한 데이터 추출 방법으로 바꾸는 것이 좋습니다. 데모를 위해 이를 단순하게 유지하고자 합니다. 더 복잡한 Amazon IVS 워크 플로우에 대해서는 향후 AWS 미디어 블로그 게시물을 기다려주세요.

 

이 데모를 계속하면서 코드의 중요한 부분을 살펴보겠습니다. 데모가 작동하기 위해 이 Python 문서를 편집할 필요가 없습니다. 처음으로 작동하는지 확인한 후 진행하는 것이 좋습니다.

 

코드에서 가장 중요한 부분은 다음 코드를 포함하는 put_metadata () 함수입니다.

응답 = ivs.put_metadata (        channelArn = channel_arn,        metadata = metadata_payload,    )

 

이것은 이 스크립트에서 가장 중요한 부분입니다. 새로 생성된 (cat) 팩트를 사용하여 Amazon IVS 서비스에 대한 boto3 PutMetadata 호출입니다. 나머지 코드는 해당 호출을 통해 정보를 자동으로 전달하는 방법을 제공합니다.

스크립트에서 Amazon IVS 채널 ARN을 구성한 후 다음 명령을 실행합니다.

./metadata.py arn : aws : ivs : us-west-2 : 123456789 : channel / abcdEFG123

 

스크립트를 끝낼 때까지 (ctrl + C) 계속 실행됩니다. 스크립트를 실행 상태로 두면 이 워크 플로우의 HTML 부분을 개인화할 때 매우 유용합니다.

빠른 문제 해결:

  • “permission denied” 메시지를 수신한 경우 다음 명령을 실행하세요. chmod + x metadata.py
  • Python 3.x가 python3 이름 대신 python 이름에 매핑된 경우 shebang 에서 변경하거나 python metadata.py 명령을 실행하기만 하면 됩니다.

 

5 단계. 작업

브라우저에서 player.html 페이지를 확인하세요. 플레이어 아래 섹션에는 Python 스크립트가 스크립트의 PutMetadata 명령을 통해 보내는 JSON 페이로드가 표시됩니다. 페이로드를 시각화하는 데 도움이 되는 코드의 <pre /> 섹션을 만들었습니다. 또한 인터페이스의 형태로 해당 코드에 의해 생성된 왼쪽 섹션을 만들었습니다. 이는 최종 제품으로 사용하는 것과 비슷합니다. 이를 통해 정확히 무슨 일이 일어나고 있는지 이해하는 데 도움이 되도록 UI의 일부가 되기 전에 정보를 볼 수 있습니다.

 

6 단계. 버튼 설정

완전한 대화형 환경을 만들기 위해 뷰어의 답변을 데이터베이스에 배치하는 논리를 단추에 추가할 수 있습니다. 그런 다음 여러 사용자의 답변을 집계하여 결과를 표시할 수 있습니다. 더 궁금하시다면 블로그 포스트 시리즈의 2 부에서 더 자세히 알아보세요. (이 블로그 게시물은 주로 Amazon IVS Timed Metadata 기능에 중점을 두고 있으며, 2 부에서는 AWS의 다른 서비스에 대해 더 중점적으로 다룹니다.)

 

정리

향후 요금이 발생하지 않도록 이 연습에 사용된 리소스를 삭제하세요.

  • Amazon IVS Ingest로 스트리밍을 중지합니다.
  • Amazon IVS 콘솔에서 채널을 선택합니다. 삭제 버튼을 클릭하세요.
  • player.html을 S3 버킷에 넣은 경우 파일을 삭제합니다.

 

 

계속하기

이것으로 2 부로 구성된 이 블로그 시리즈의 1 부를 마칩니다. Amazon IVS Timed Metadata 기능을 사용하는 방법만 배우고 싶다면 충분합니다. 그러나 사용자가 질문에 답변하고 답변 기록을 유지하고 각 사용자에게 답변 결과를 표시할 수 있는 경험을 만드는 방법을 배우고 싶다면, 다음에 보여드릴 이 시리즈의 두 번째 부분에서 확인할 수 있습니다.

원문URL:  https://aws.amazon.com/ko/blogs/media/part-1-using-amazon-interactive-video-service-timed-metadata/

** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.