이번에 AWS MediaConvert를 통해 ABR 형태 HLS 포맷으로 영상을 자동 컨버팅 할 수 있도록 하는 시스템을 구축하는 사항이 생겼다. 그래서 찾아보던 중 AWS MediaConvert JAVA 예제 github 소스를 발견하여 해당 소스를 활용하여 Spring-boot에서 사용할 수 있도록 모듈화 해보았다.
앞서 ABR 모드로 트랜스코딩하기 때문에 ABR에 대해 간결하게 적어본다.
ABR이란?
ABR (Available Bit Rate) : 가용 비트율
네트워크 프로그램이 활용할 수 있는 주파수 대역을 가능한 최대로 쓰면서 효과적으로 사용하도록 한다. 네트워크 트래픽을 발생시키는 장치에 피드백을 지속적으로 보내는데, 피드백을 받은 장치는 스위치 장비가 양질의 서비스를 보장할 수 있도록 하며, 네트워크 혼잡도에 따라 전송 속도를 조절한다.
출처: https://littlecarbb.tistory.com/entry/CBR-VBR-ABR이란 [Shameless Simon]
AWS github 예제에서 지원하는 기능은 다음과 같다.
https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/mediaconvert/src
GitHub - awsdocs/aws-doc-sdk-examples: Welcome to the AWS Code Examples Repository. This repo contains code examples used in th
Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.rst file below...
github.com
- 접근 계정 mediaconvert endpoint url 획득
- 트랜스코딩 Job 신규 생성
- 트랜스코딩한 Job 리스트 조회
- 트랜스코딩 중인 Job 정보 단건 조회
위 기능들 중 Job 생성, 리스트, 단건 조회만 필요하여 세가지를 별도로 모듈화 하여 구축해보았다.
== 나의 GITHUB 예제 링크 ==
https://github.com/realwater20/aws_media_convert
GitHub - realwater20/aws_media_convert
Contribute to realwater20/aws_media_convert development by creating an account on GitHub.
github.com
STEP 1) IAM 역할 생성 (IAM > 역할 > 역할 생성)
STEP 2) IAM 사용자 생성 (IAM > 사용자 > 사용자 추가)
* 권한은 기존 정책 직접 연결을 통해 S3, AWSElementMediaConvert FullAccess 권한으로 설정한다.
STEP 3) TEST MP4 S3에 업로드
STEP 4) TEST MP4 파일 컨버팅 테스트 하기
STEP 4-1) 컨버팅 Job 생성 테스트
아마 필자가 세팅해놓은 설정대로 생성하게 되면 4개의 파일이 생성된다. 아래 파일 기준으로 플레이를 하게 되면 아래와 같다.
test.m3u8 ( 180, 720, 1080 중 네트워크 속도에 따라 화질이 결정된다. - ABR 모드 )
test_180.m3u8 (180p 화질로 플레이)
test_720.m3u8 (720p 화질로 플레이)
test_1080.m3u8 (1080p 화질로 플레이)
STEP 4-2) 컨버팅 생성 Job 상세 조회
STEP 4-3) 컨버팅 생성 Job 리스트 조회
* 리스트 조회의 경우 최신 순으로 조회되도록 기본 설정되어 있으며 Request 객체를 통해 order 값을 변경할 수 있다.
위와 같이 MediaConvert API 연동에 대해서 알아보았다. 아직 화질 컨버팅에 대한 자세한 설정은 알아봐야겠으나 예제로는 QVBR로 영상을 압축하도록 되어있을것이다. 시간이 된다면 다음장에는 화질 컨버팅 관련된 옵션에 대해 자세히 알아볼것이다.