개발 기록/Spring-boot

[Spring-boot] 영상 컨버팅 관련 AWS MediaConvert API 연동 및 ABR 모드 처리

realwater 2022. 5. 19. 17:51
반응형

이번에 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 > 역할 > 역할 생성)

다른 AWS 서비스 사용사례로 MediaConvert를 검색하여 지정한다.
권한은 그대로 지정된대로 유지한다.
필자는 MediaConvertTest로 역할명을 작성했다.

 

 

STEP 2) IAM 사용자 생성 (IAM > 사용자 > 사용자 추가)

 

* 권한은 기존 정책 직접 연결을 통해 S3, AWSElementMediaConvert FullAccess 권한으로 설정한다.

엑세스키와 비밀엑세스 키를 잘 복사해두자

STEP 3) TEST MP4 S3에 업로드

S3버킷으로 업로드 한다.

 

STEP 4) TEST MP4 파일 컨버팅 테스트 하기

config 관련 yml 설정을 해준다.

 

STEP 4-1) 컨버팅 Job 생성 테스트

정상 처리된 후 생성된 Job ID 값 확인
mediaconvert에서 정상 처리되었음을 확인 할 수 있다.
S3 버킷에도 HLS 관련 트랜스코딩 파일들이 생성되었음을 확인 할 수 있다.

 

test.m3u8 파일을 통해 정상 플레이가 됨을 확인 할 수 있다.

아마 필자가 세팅해놓은 설정대로 생성하게 되면 4개의 파일이 생성된다. 아래 파일 기준으로 플레이를 하게 되면 아래와 같다.

 

test.m3u8 ( 180, 720, 1080 중 네트워크 속도에 따라 화질이 결정된다. - ABR 모드 )

test_180.m3u8 (180p 화질로 플레이)

test_720.m3u8 (720p 화질로 플레이)

test_1080.m3u8 (1080p 화질로 플레이)

 

 

STEP 4-2) 컨버팅 생성 Job 상세 조회

status가 COMPLETE로 조회됨을 확인 할 수 있다.

 

STEP 4-3) 컨버팅 생성 Job 리스트 조회

정상 조회된 Job의 상태가 COMPLETE 2건이 조회되었다.

* 리스트 조회의 경우 최신 순으로 조회되도록 기본 설정되어 있으며 Request 객체를 통해 order 값을 변경할 수 있다.

 

 

위와 같이 MediaConvert API 연동에 대해서 알아보았다. 아직 화질 컨버팅에 대한 자세한 설정은 알아봐야겠으나 예제로는 QVBR로 영상을 압축하도록 되어있을것이다. 시간이 된다면 다음장에는 화질 컨버팅 관련된 옵션에 대해 자세히 알아볼것이다.

반응형