본문 바로가기

Cloud AWS

Amazon AWS :: Transcoding - 동영상 공유 웹사이트 만들기 #2

 



 

 


Amazon AWS :: Transcoding - 동영상 공유 웹사이트 만들기 #2


본자료는 저자의 허락하에 공유되는 자료입니다.

국내 전문 CDN 사업자인 GS네오텍은 2015년에 Amazon Web Service의 AWS Premier Consulting 파트너로서 WiseN 이라는 서비스 브랜드로 클라우드 사업을 함께 하고 있습니다. 

미디어 공유 웹사이트 만들기 #2 트랜스코딩

다루는 내용


가이드 문서 (26. 미디어 공유 웹사이트 만들기 #1 미디어 업로드)에서 구성한 웹 서비스는 이미지 뿐만 아니라 동영상 파일도 업로드 및 다운로드가 가능하다. 그러나 동영상의 경우 단순 다운로드가 아닌 스트리밍 서비스가 필요하므로 스트리밍에 필요한 설정과 트랜스코딩에 대해서 실습해 본다.

  • 미디어 컨텐츠 스트리밍
  • 아마존 Elastic Transcoder를 이용하여 미디어 컨텐츠 트랜스코딩


실습

아마존 S3 버킷 확인
버킷 확인 (생성되어 있는 버킷을 확인한다.)
혼돈을 방지하기 위해 S3에 저장되어 있는 객체는 삭제하도록 한다.

  1. 콘솔에서 S3 클릭
  2. webapp-media-sharing 버킷명 클릭
  3. Properties 클릭
  4. Permissions 클릭
  5. Edit bucket policy 클릭
    아래와 같이 정책이 정의되어 있다.

데이터베이스 확인
데이터베이스 확인 (생성되어 있는 DB를 확인한다.)
혼돈을 방지하기 위해 DynamoDB에 저장되어 있는 아이템은 삭제하도록 한다.

  1. 콘솔에서 DynamoDB 클릭
  2. 테이블명 : webapp-media-db 확인

트랜스코딩
파이프라인 생성

  1. 콘솔에서 Elastic Transcoder 클릭
  2. Create a new Pipeline 클릭
  3. Create New Pipeline 페이지
    업로드되는 파일이 저장되는 버킷과 트랜스코딩된 결과 파일이 저장되는 버킷, 썸네일을 저장하는 버킷을 각각 지정할 수 있지만 여기서는 동일한 버킷을 사용한다.
    ∙ Pipeline Name : webapp-media-pipeline
    Input Bucket : webapp-media-sharing
    IAM Role : Create console default role 선택
    Configuration for Amazon S3 Bucket for Transcoded Files and Playlists
    Bucket : webapp-media-sharing
    Storage Classs : Standard 선택
    Configuration for Amazon S3 Bucket for Thumbnails
    Bucket : webapp-media-sharing
    Storage Class : Reduced Redundancy 선택
    Create Pipeline 클릭
  4. Pipelines 상세 페이지
    Pipeline ID : 1425629152273-lk5cdl 복사

Job 생성
트랜스코딩 작업을 수동으로 실행할 수 있다. 이 실습에서는 EC2에서 API로 Job을 실행하므로 생성하지 않아도 된다.

  1. Create New Job 클릭
  2. Create a New Transcoding Job 페이지

프리셋 설정
Preset은 트랜스코딩 결과 파일의 포맷을 결정한다. 미디어 서비스에서는 통칭 프로파일이라 불리며 사용자 정의 설정이 가능하다.

  1. Elastic Transcoder의 왼쪽 메뉴에서 Presets 클릭
  2. Create New Preset 클릭
  3. Create a New Transcoding Preset 페이지
    Start With Preset : System preset: Generic 360p 4:3 선택
    Name : WebApp Transcoding 360p 4:3 입력

    Video
    Padding Policy : Pad 선택

    Thumbnails
    Interval : 10
    Sizing Policy : ShrinkToFill
    Padding Policy : Pad

    Create Preset 클릭
  4. Presets 상세 페이지
    Preset ID : 1425630108668-4zdw5u 복사

컨텐츠 전송 (스트리밍)
미디어가 웹 페이지에서 Flash player등으로 재생되기 위해서는 서버에서 컨텐츠를 스트리밍해주어야한다. 아마존 CloudFront는 HTTP뿐만 아니라 RTMP를 사용한 스트리밍이 가능하다.
아마존 CloudFront 스트리밍

  1. 콘솔에서 CloudFront 클릭
  2. Create Distribution 클릭
  3. Select a delivery method for your content 페이지
    RTMP 섹션의 Get Started 클릭
  4. Create Distribution 페이지
    Origin Domain Name : webapp-media-sharing.s3.amazonaws.com 선택
    Create Distribution 클릭

    ∙ Status가 Deployed될 때까지 기다린다.
    Domain Name : s2fxgrwa1qbisa.cloudfront.net 확인

웹 서버 설정
CloudFormation으로 웹 서버 단 설정을 한다. EC2 인스턴스, 보안그룹, ELB, Auto Scaling, IAM 관련 리소스가 설정된다. 즉, 위에서 설정한 S3, DynamoDB, Elastic Transcoder, CloudFront 설정은 변경하지 않는다.

  1. 콘솔에서 CloudFormation 클릭
  2. Create Stack 클릭
  3. Select Template 페이지
    Stack : WebApp-Rlab2
    Source : Specify an Amazon S3 template URL
     https://us-east-1-aws-training.s3.amazonaws.com/self-paced-lab-12/rlab-part2-cfn.template
    Next 클릭
  4. Specify Parameters 페이지
    CloudFrontDistributionName : s2fxgrwa1qbisa.cloudfront.net
    KeyName : ec2_keypair
    RLabContentS3Bucket : webapp-media-sharing
    RLabDynamoDBTable : webapp-media-db
    RlabETPipeline : 1425629152273-lk5cdl
    RLabETPreset : 1425630108668-4zdw5u

    Next 클릭
  5. Options 페이지
    Key : Name
    Value : WebApp Rlab Server2
    Next 클릭
  6. Review 페이지
    I acknowledge that this template might cause AWS CloudFormation to create IAM resources. : 체크
    Create 클릭
  7. 콘솔에서 EC2 클릭
  8. 왼쪽 메뉴에서 Load Balancers 클릭
  9. 새로 생성된 ELB의 DNS Name 확인
    WebApp-Rl-ElasticL-1LFV2NGV3L3LI-505264650.us-west-2.elb.amazonaws.com

미디어 서비스 테스트

  1. 브라우져에서 ELB DNS Name 접속
  2. 테스트 미디어 파일 업로드

    ∙ 샘플 미디어 파일 : http://rlab-content.s3.amazonaws.com/video_1_bigdata.mp4
  3. 스트리밍 실행 확인

참고

● CloudFomation의 user data에의해 실행되는 어플리케이션
∙ 위치 : /var/www/rlab/app
∙ 소스를 확인해 보면 생성되는 썸네일 중 3번째 파일을 사용하도록 하드코딩되어 있다. Preset에서 Thumbnail의 Interval이 기본값이 60초로 되어 있으므로 런타임이 짧은 컨텐츠로 테스트를 하면 썸네일이 2개 이하로 생성되어 정상적으로 확인이 어렵다. 런타임이 3분 이상인 컨텐츠로 테스트 하던가 Interval을 짧게 조정 해야한다. 물론 SSH 접속하여 소스를 수정해도 된다.
∙ 소스는 트랜스코딩이 완료된 후 원본 파일과 사용하지 않는 썸네일 파일을 삭제한다.

● CloudFront에서 RTMP 호출 URL
∙ rtmp://[CloudFront DNS]/cfx/st/mp4:[FileFullPathName]
∙ 예. rtmp://s2z442py1hd2oi.cloudfront.net/cfx/st/mp4:output/output/wildlife.mp4
    /cfx/st가 어플리케이션명처럼 명시되어야한다.

● 미디어 스트리밍 : http://aws.amazon.com/ko/cloudfront/streaming/

arang

Sr. Technical Trainer at GSNeotek





  Reference : GS네오텍 WiseN 서비스



www.SalesMore.co.kr