본문 바로가기

클라우드/Public Cloud(Naver, Amazon)

AWS media 시리즈

· PD: 홈페이지에서 파일을 다운로드 할 때와 비슷한 방법으로 동영상 파일을 통째로 보내는 방식이다파일을 통째로 보내기 때문에 파일이 스트리밍 형식에 적합하기만 하면 별도의 작업이 필요없다는 장점이 있다. 과거 유튜브가 사용하던 방식이다.

· HLS: 애플이 개발한 방식. 동영상 파일(.mp4 )을 일정한 시간 간격( 2~5)으로 등분하여 조각 파일로 만든다. 플레이어는 분할된 동영상을 받아와서 재생하고, 다음 장면이 시작되기 전에 필요한 파일들을 받아와서 재생한다. 파일 전체를 다운로드하는 PD와 달리, 필요한 부분들만 전송할 수 있어서, 트래픽 관리에 더 좋다.1 파일을 분할하여 보낸다는 점에서 현재 유튜브가 사용하고 있는 방식과 유사하다.

 

Media-live

 

AWSEncoder서비스로 Live 비디오 스트림을 실시간으로 인코딩하고 배포하는 서비스

MediaLive는 실시간 비디오 콘텐츠의 형식 및 패키지를 다른 형식 및 패키지로 전환한다. 형식을 변환하는 이유는 재생 디바이스에서 처리할 수 있게 제공하기 위해서다. 재상 디바이스의 예시로는 스마트폰이나 셋톱 박스 등이 있다.

Aws medialive 장점

간단한 배포 및 관리( 비디오 인코딩에 사용되는 모든 인프라의 프로비저닝과 관리를 자동화한다. 몇분 만에 간단히 라이브 채널 배포 가능 )

뛰어난 가용성( 기본적으로 안정성과 복원력을 제공한다. 이 서비스는 여러 가용 영역에 걸쳐 리소스를 투명하게 관리하고 상태를 자동으로 모니터링하므로 뛰어난 안정성 제공 )

브로드캐스트 수준의 기능( 누구나 손쉽게 브로드캐스트 품질의 라이브 스트리밍 비디오를 생성할 수 있다. )

효율성 향상 및 비용 절감( 인코딩 인프라에 대한 사전 투자나 물리적 리소스 관리에 할당된 운영 오버헤드 없이 사용하는 서비스에 대한 비용만 지불 )

Medialive Channel을 생성해보자

이름과 역할을 선택한다.

기존에 제공하는 HTTP live streaming(HLS) 템플릿을 사용.

input 생성

이름입력하고 input되는 프로토콜 타입을 입력한다. 네트워크 모드는 퍼블릭접근, VPC접근이 있다.

 

보안그룹 0.0.0.0/0 다 들어올 수 있게 허락

Channel class를 선택한다. 

Standard와 single_pipeline이 존재한다. standard 채널에서는 푸시 입력의 경우 수집 주소 2개를  제공하거나 풀 입력의 수집위치 2개를 요구합니다. 두 인코딩 파이프라인이 2개의 개별 가용 영역에서 프로비저닝 및 분산되고 2개의 채널 출력이 2개의 대상에 전달된다. 간단히 애기하면 Standard는 두개의 출력과 입력을 요구하는 대신 가용성이 유지되고 single_pipeline은 가용성이 유지되지 않지만 더 저렴한 비용을 제공합니다.

standard의 장애 대응 방식은 두 파이프 라인 모두 수집하고 소스 컨텐츠를 처리하며 출력을 생성합니다. 파이프 라인 중 하나의 출력을 처리하고 다른 파이프 라인은 무시합니다.(하나만 사용) 한 파이프라인에서 장애가 감지되면 자동으로 다른 출력으로 전환하며 몇분 내에 다른 파이프 라인으로 시작됩니다.

input 생성한 후 mob-input을 attach한다. output을 설정하기 전 media-package를 먼저 생성하여야 한다.

 

 

Mediapackage

 

AWS Elemental MediaPackage는 AWS 클라우드에서 실행되는 JIT(Just-In-Time) 비디오 패키징 및 제작 서비스입니다. AWS Elemental MediaPackage를 사용하면 매우 안전하고 확장 가능하며 신뢰할 수 있는 비디오 스트림을 다양한 재생 디바이스 및 CDN(콘텐츠 전송 네트워크)에 전달할 수 있습니다. AWS Elemental MediaPackage를 사용하면 최종 사용자에게 브로드캐스트급의 시청 환경을 제공하면서 콘텐츠를 유연하게 제어하고 보호할 수 있습니다. 또한 AWS Elemental MediaPackage의 내장된 복원성과 확장성을 통해 수동 개입 없이 적시에 적절한 양의 리소스를 확보할 수 있습니다.

장점

인터넷 전송을 위해 비디오를 안정적으로 준비하고 보호. (DRM이나 encryption 기능 사용시)

MediaPackage는 로드에 따라 자동으로 규모가 조장되고 정확한 용량을 미리 예측할 필요가 없다.

 

MediaPackage를 생성해보자.'

ID입력, Package에 들어오는 input type을 선택

CDN(Cloudfront)옵션을 생성할 수 있다. 생성하면 접근가능한 Cloudfront가 생김.

생성완료 된 화면. 엔드포인트 생성

라이브 스트리밍 비디오를 볼 수 있는 접근 URL생성을 위해 엔드포인트 생성

엔드 포인트는 채널에 연결되며 라이브 컨텐츠의 출력을 나타냅니다. 단일 출력에 여러 엔드포인트 생성 가능하다.

Startover window : 이 설정을 사용하면 시청자가 스트림에 연결할 떄 최대 300초 5분까지 되감거나 되돌아가기 가능

time delay : 이 설정은 12:20:00에 package가 수신하는 콘텐츠를 사용자가 12:20:05초까지 사용할 수 없도록 라이브 재생을 지연시키는 기능

 

타입, Access control 등 여러 기능이 있다. 기본 값으로 생성!

엔드포인트 생성이 완료되었고 다시 media live 출력창으로 이동한다.

HLS 그룹의 URL, username password를 입력하여야 한다.

 

이 정보 들은 mediapackage에서 가져와서 다 입력한다.

** 입력후 medialive에서 output10번을 remove 제거해준다. (error가 남) **

제거해준 후 생성! 

생성이 완료된후 채널을 start한다.

이제 휴대폰에서 접근을 해야한다. medialive input을 들어간다. (정보확인)

Rtmp live라는 앱을 다운로드받았다.

serverUrl에 rtmp 서버 입력한다.

streamkey가 live1이 된다. bps등 선택하여서 영상을 재생한다.

mediapackage창에 preview에서 휴대폰 실시간 방송을 확인가능하다.

-------------------------------------------------------------------------------------------------------------------------------

 

** mediastore vs mediapackage **
--> mediastore은 s3와 같이 지연이 적은 객체 저장소
--> mediapackage는 DRM 및 DASH, MSS와 같은 다른형식으로 재 포장하는데
사용하는 JIT 패키지 프로그램 (콘텐츠 암호화가 필요하면 MP, 속도측면 MS)

medialive의 mediastore 세팅

mediastore 세팅

container policy (access 정책)

{
  "Version" : "2012-10-17",
  "Statement" : [ {
    "Sid" : "PublicReadOverHttpOrHttps",
    "Effect" : "Allow",
    "Principal" : "*",
    "Action" : [ "mediastore:GetObject", "mediastore:DescribeObject" ],
    "Resource" : "arn:aws:mediastore:ap-northeast-2:709865169889:container/ducktest/*",
    "Condition" : {
      "Bool" : {
        "aws:SecureTransport" : [ "true", "false" ]
      }
    }
  } ]
}

CORS policy

[
  {
    "AllowedHeaders": [
      "*"
    ],
    "AllowedMethods": [
      "GET"
    ],
    "AllowedOrigins": [
      "*"
    ],
    "ExposeHeaders": [
      "*"
    ],
    "MaxAgeSeconds": 3000
  }
]