AWS 미디어 서비스를 사용하여 파일 스트리밍

이번 글에서는 스토리지 및 미디어 트랜스코딩을 위해 AWS 서비스를 사용하여 웹 스트리밍용 비디오를 처리하는 방법에 대해서 알아보겠습니다.


[실습 순서]

  1. S3 버킷 생성
  2. IAM 역할 생성
  3. MediaConvert 작업 생성

[1. S3 버킷 생성]

AWS Console을 사용하여 MediaConvert 작업의 출력을 저장할 S3 버킷을 생성합니다. 테스트 플레이어에서 콘텐츠에 대한 액세스를 활성화하려면 공개 읽기 액세스를 허용하고, CORS(Cross Origin Resource Sharing) 정책을 적용해야 합니다. AWS Console에서 S3서비스로 이동하고 버킷을 생성합니다.


버킷 이름과 리전을 선택하여 버킷을 생성한 후 속성 탭에서 정적 웹 사이트 호스팅 편집을 클릭합니다.


정적 웹 사이트 호스팅을 활성화하고 인덱스 문서에 index.html을 입력합니다. Index.html을 사용하지 않더라도 인덱스 문서 구성이 필요합니다.


권한 탭에서 CORS 구성을 클릭하고 CORS 구성 편집기에 XML을 입력하고 저장합니다. 이제 브라우저가 모든 Origin에서 S3 콘텐츠를 요청할 수 있습니다.


[2. IAM 역할 생성]

MediaConvert가 S3 버킷에서 읽고 쓰고 상태 이벤트를 CloudWatch로 내보내려면 MediaConvert가 맡을 IAM 역할을 생성해야 합니다.AWS Console에서 IAM 서비스로 이동하고 왼쪽 패널에서 역할 선택 후 생성합니다. AWS 서비스와 MediaConvert를 선택합니다. 역할 이름을 vod-MediaConvertRole로 입력 후 생성합니다. 생성한 역할을 검색 후 ARN을 메모장에 기록해둡니다.


[3. MediaConvet 작업 생성하기]

MediaConvert 작업은 S3에서 입력 비디오를 읽고 비디오를 여러 출력으로 가질 수 있는 출력 그룹으로 변환합니다. 단일 미디어 변환 작업으로 다양한 코덱 및 패키지에서 여러 버전의 입력 비디오를 만들 수 있습니다. 이번 실습에서는 단일 입력 비디오를 사용하고 비디오를 Apple HLS 출력 그룹으로 변환하는 MediaConvert 작업을 생성합니다. 

MediaConvert 콘솔로 이동하고 왼쪽 패널에서 작업으로 이동 후 생성을 진행합니다. 작업 패널에서 입력 1을 선택하여 입력 파일 URL에 s3://mediaimmersion/mediaconvert/VANLIFE.m2ts 를 입력합니다.


왼쪽 작업 패널의 출력 그룹에서 추가를 선택하고 Apple HLS로 이동합니다. 사용자 지정 그룹 이름 상자에 HLS를 원하는 이름으로 채우면 작업이나 템플릿에 많은 그룹이 있는 경우 그룹을 쉽게 식별하는 데 도움이 됩니다.


나머지 설정은 기본값으로 설정합니다. 출력 패널까지 아래로 스크롤하고 출력 추가를 두 번 클릭하여 총 3개의 출력이 있도록 합니다.

출력 그룹 섹션 작업 패널에서 출력 1을 선택하여 출력 1에 대한 출력 설정 양식으로 이동합니다.
프리셋을 선택하고 System-Avc_16x9_360p_29_97fps_1200kbps를 선택합니다.
스트림 이름에 해상도를 추가하려면 이름 한정자에 _360을 입력합니다.
세그먼트 한정자에 $dt$를 입력하여 각 미디어 세그먼트에 날짜/시간을 추가하여 미디어를 고유하게 식별합니다.


출력 2, 3을 아래와 같은 설정으로 만듭니다.

– 프리셋: System-Avc_16x9_540p_29_97fps_3500kbps, System-Avc_16x9_720p_29_97fps_5000kbps
– 이름 한정자: _540, _720
– 세그먼트 한정자: $dt$ (공통)


왼쪽의 작업 패널의 작업 설정에서 AWS 통합을 선택하고 서비스 역할 제어를 기존 서비스 역할 사용으로 변경 후 이전에 생성한 역할을 선택합니다. 작업을 생성하여 완료될 때까지 기다립니다.


동영상을 재생하려면 매니페스트 및 세그먼트 파일을 공개해야 합니다. S3 버킷에 대한 퍼블릭 액세스 및 권한을 설정해야 합니다.

이전에 생성한 S3 버킷으로 이동 후 권한 탭으로 이동합니다. 퍼블릭 액세스 차단 편집을 선택 후 모든 퍼블릭 액세스 차단을 해제합니다. 버킷의 퍼블릭 액세스를 차단한면 외부에서 파일을 읽게 하지 못하게 됩니다. 경우에 따라 퍼블릭 액세스를 차단하고 싶으면, 모든 퍼블릭 액세스 차단은 비활성화하고 세부적인 옵션을 선택하면 됩니다.


외부에서 해당 버킷에 접근 가능하도록 하기 위해서는 버킷 정책도 수정해야 합니다.

위 S3 버킷 정책의 내용은 vod-bespin 버킷 아래의 모든 객체를 가져올 수 있도록 허용하는 것입니다. 이제 /assets/VANLIFE/HLS/에 있는 파일의 URL을 복사합니다.


https://developer-tools.jwplayer.com/stream-tester 해당 링크로 이동 후 HLS Stream URL에 복사한 URL 링크를 입력하고 Test Stream 버튼을 클릭합니다. 오른쪽에 영상이 스트리밍 된다면 정상적으로 완료된 것입니다.

마지막으로 MediaConvert 작업을 삭제할 수 있는 방법은 없습니다. MediaConvert 서비스는 이러한 작업을 90일 동안 표시한 후 제거합니다.



[마무리]

일반적으로 콘텐츠의 Origin 서버는 프로덕션에 들어가기 전에 Amazon Cloudfront와 CDN 의해 시작되지만 이번 글에서는 생략하였습니다. AWS에서 제공하는 Cloudfront을 사용하면 최종 사용자에게 컨텐츠를 더 빠르게 제공하고 서버의 부하를 줄일 수 있습니다.


[참고자료]

Leave a Comment