참고: VOD Streaming Server 구축 1 (AWS)
무료동영상: pixabay
(상용이용시 라이센스 확인필요)
여러 동영상 중에서 마음에 드는 동영상을 다운받는다.
개인적으로 Wood Anemones 파일을 다운받았음
create folder 기능을 두 번 이용하여 vod/mp4 폴더 만든다.
다운받은 파일을 올려 준다.
input S3와 마찬가지로 폴더 생성을 진행하면 된다.
자주 반복되는 작업은 Job template로 만들어 실재 Job을 실행시킬 때 불러와서 사용할 수 있다. 여기에서 Job이란 mp4를 HLS를 변환시키는 과정 하나를 의미한다.
Name: tpl_mp4_to_hls
Categrory: VOD
Description: template to convert mp4 files to HLS files
Add button을 클릭한다.
Youtube 처럼 network 속도가 안 좋을 때는 저 해상도로 play가 되고 network 속도가 좋을 때는 고해상도로 재생해야 하므로 HLS를 선택하였다.
1개의 Input 파일을 기반으로 3개의 해상도를 만들려고 한다. (SD, HD, FHD)
Output 동영상의 사이즈와 bitrate는 아래 표를 참고하면 된다.
개인적으로 생각하기에는 비전문가 입장에서 bitrate를 마음대로 정하는 것은 쉽지 않은 이슈인 것 같다. 그 이유는 encoding 과정에서 압축이라는 과정이 일어나기 때문이다. 압축이라는 과정이 어떤 방식으로 얼마나 많이 일어나느냐에 따라서 파일 용량과 화질이 결정된다.
그래서 아래의 표와 같이 전문가들이 만들어 놓은 가이드를 기반으로 약간 더 안정적인 선택을 하는 것이 좋다고 생각한다.
Tip: HLS 파일을 플레이 해 보았을 때 화질이 안 좋아 보인다면 그때 bitrate option을 좀 더 크게 주면 된다.
No. | Resolution | Width | Height | Pixcel | Bitrate |
---|---|---|---|---|---|
1 | SD | 720 | 480 | 345,600 | 1,200~1,500 kbps |
2 | HD | 1280 | 720 | 921,600 | 1,500~4,000 kbps |
3 | FHD | 1920 | 1080 | 2,073,600 | 4,000~8,000 kbps |
4 | UHD (4K) | 4096 | 2160 | 8,294,400 | 8,000~14,000 kbps |
참고: Internet connection and recommended encoding settings
파일명이기 때문에 동작하고는 관계가 없음
파란색으로 표시된 Output1을 누르면 설정 창으로 넘어가게 된다.
모든 설정이 완료되었다면 Create 버튼을 눌러서 Template 생성을 완료합니다.
기존에 만들어 놓았던 Template을 사용하는 경우에는 Input 설정을 추가해 주면 된다.
Service role control: Create a new service role, configure permissions 선택
New role name: mediaconvert_mp4_to_hls_role
Input S3 locations: s3://input/vod/mp4
Output S3 locations: s3://output/vod/hls
이 과정이 완료되었다면 create 가장 아래쪽에 존재하는 create 버튼을 누르면 된다.
위의 사진처럼 Job status가 Processing -> Complete로 변하는 것을 확인할 수 있다.
Error가 발생하는 사람들은 권한 문제를 다시 한번 살펴 보기를 바란다.
Streming 확인시 Wood Anemones-112429.m3u8 파일을 사용한다.
Wood Anemones-112429.m3u8는 모든 해상도의 index 파일을 포함하고 있다.
Wood Anemones-112429720x480_1.5mbps_qvbr.m3u8
Wood Anemones-1124291280x720_4mbps_qvbr.m3u8
Wood Anemones-1124291920x1080_8mbps_qvbr.m3u8
이 파일들은 각각 ts 파일들을 indexing 하고 있다.
생성된 CloudFront를 보면 Domain name을 확인할 수 있다.
HLS 파일을 Play 하려면 Akamai Player의 도움이 필요하다.
현재 https 관련 설정을 하지 않았기 때문에 akamai player도 http로 접속해야 한다. (http://players.akamai.com/players/hlsjs)
파일 이름을 클릭한다.
상세 정보 중 Object URL에서 힌트를 얻을 수 있다.
http://[cloudfront-domain-name]/vod/hls/Wood+Anemones-112429.m3u8 을 주소창에 입력하면 결과를 동영상이 다운받아져서 동작하는 것을 확인할 수 있다.
이렇게 output s3가 cloudfront에 연동되는 것을 확인하였다.
이 경우에는 Output S3에 CORS 권한을 추가해 주어야 한다.
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"PUT",
"POST",
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
그 이유는 이미 한번 호출한 적이 있기 때문에 CloudFront에서 캐싱하고 있을 가능성이 매우 크다.
Cloud Front 이동 후 Invalidations 탭으로 이동
/vod/hls/* 해당 폴더 안의 모든 파일에 대해서 invalidation을 신청하였다. (시간이 오래 걸릴 수 있습니다.)
In progress
Completed
완료된 후 다시 시도해보면 동영상이 잘 나오는 것을 확인할 수 있습니다.
감사합니다!