Schoo의 비디오 편지 뒷면

4076 단어 AWSvodcdnschooakamai

개시하다


이 기고는 스쿨의 2016년 말 특별기획'스쿨 advent callendar 2016'이틀째 보도다.
우리 매니저 아무래도 크리스마스 전 스케줄 다 채우고 싶어서 계속 소재를 찾고 있는 것 같아서 다음날에도 소재 w
(말하고 싶어서 괜찮아...아, 등단 의뢰는 언제나 웰컴 w)
그렇긴 하지만 어렵게 어설프게 만들고 싶지 않기 때문에 스쿨의 시스템군에서 편지 주위의 내용, 그리고 이번에 동영상을 곁들이기 전의 구성, 처리 절차가 어떤 느낌인지 보도화하고 싶습니다.

VOD(비디오 비디오)의 배포 시스템 구성도


이번에도 전체 구성도를 먼저 붙인다.
그나저나 아마 이 자료는 외부(보도 따위)에서 처음 제출한 자료일 거예요!

간단하게 설명하자면 AWS와 Akamai 그룹의 구성이죠...
이번에는 중간에서 편지 보내기 전 처리 부분(AWS 부분)을 나중에 설명하려고 한다.

비디오 인코딩의 구조


Schoo의 생방송을 보신 분들은 아시겠지만 본사의 프로그램은 본 프로그램 시작 전과 종료 후'벨소리'같은 삽입 영상이 있습니다.
녹화 영상의 소재로 쓰이는 원시 영상에는 이 부분이 포함되지 않는다.
수동으로 편집할 수도 있지만 이'벨소리 애니메이션'을 애니메이션 앞뒤에 끼워서 애니메이션 파일로 인코딩하기 위해서는 대량 인코딩 처리가 필요하다.
이상의 구성도라면 조금 간소화된 부분이기 때문에 이 부분만 잘라낸 이미지는 다음과 같다.

그리고 하나씩 더 자세히 설명해 주세요.

① 동영상 파일 업로드


상기 그림에서 보듯이 가장 왼쪽에 있는 본사 ①의 업무 부분.
위에서 말한 바와 같이 생방송 Raw 애니메이션을 직접 사용하면 일부 볼 수 없는 부분을 비디오용 애니메이션으로 편집한다.
비디오 인코딩의 원형은 회사 내부 인코딩용 PC로 MP4 용기에서 H.264+AAC 형식으로 인코딩된다.
SFTP 등을 통해 S3에 업로드합니다.

② 등록 코드Que


위 그림의 ② 부분.
Schoo의 백엔드에는 Que 기반의 파이프라인 처리를 할 수 있는 SQS 중심의 Batch 처리 시스템이 존재하는데 이 절차를 따라가기 위해 S3의 파일 업로드 이벤트를 이용했다.
이 S3의 액티브 드라이브 드라이브인 람다의 구성을 통해 이제는 흔한 패턴이 됐다.
Schoo에서 Lambda는 작업 시간과 메모리 사용량에 따라 Charge를 진행하기 때문에 "원래 애니메이션을 업로드했으니 인코딩하세요!"SQS에 Queue 쓰기

③ 애니메이션 인코딩 처리


③ 이 부분을 자세히 쓰기 시작하면 여러 가지 변화가 있을 수 있고 길어질 수 있으니 간단한 개요로 설명한다.
Schoo는 사용자 환경에 따라 기본적으로 최종 게시된 3개 영상의 비트레이트를 준비했다.
(교과 과정에 따라 비트레이트가 높은 배신도 있다.)
  • 1200kbps: 와이파이 및 고정 회선 이용자를 위한 상세 애니메이션
  • 800kbps: 중화질 애니메이션으로 광범위하게 활용할 수 있는 비트레이트
  • 480kbps: 저화질 애니메이션으로 주로 이동
  • 본사의 영상은 최종적으로 CDN(Akamai)에서 여러분께 전송되지만 Schoo 측은 마지막 1마일의 통신 환경을 알 수 없습니다.(당연하죠)
    따라서 우리는 다비트레이트의 영상 파일을 준비하여 영상 발송 목적지의 통신 속도에 적합한 비트레이트로 발송한다.
    애니메이션 플레이어에서도 비트레이트를 지정할 수 있지만 기본적으로 800kbps로 발송되며 회선 속도가 빠르면 1200kbps, 늦어도 480kbps는 틈새 없이 플레이어 옆에서 자동으로 전환된다.
    (빈틈이 없다고는 하지만 HLS에 게시되기 때문에 세그먼트 단위로 10초에 한 번씩 게시합니다.)
    조금 주제에서 벗어나 원래의 상태로 돌아가다
    이상의 이유가 있어 Que를 이용하여 3 도형에 대한 비트레이트와 애니메이션 변환 처리를 비동기적으로 처리하는 구조가 되었다.
    또한 이전에도 썼지만'벨소리 애니메이션'의 애니메이션 전후 연결 처리도 한다.
    참고로 이 처리가 시작되었을 때와 끝날 때 그림에서 생략되었지만 RDS(Aurora)에서도'애니메이션 인코딩 중'이라는 뜻의 상태 업데이트가 진행되었다.
    마지막으로 3개의 비트레이트로 비디오 인코딩을 성공적으로 마친 후 이를 모두 S3에 업로드합니다.

    ④ Que 업로드 등록


    3개 모드의 비트레이트 애니메이션 인코딩과'벨소리 애니메이션'전후 연결이 끝난 애니메이션은 S3에 업로드되며, ②와 마찬가지로 S3 활동 감지로 시작되는 람바다 기능이 있다.
    여기 람바다 기능 중 마지막으로 보낸 CDN(Akamai)의 저장장치(Netstorage)에는 "완성된 강의 영상을 인코딩했으니 파일을 올려주세요!"SQS에 Que를 등록합니다.

    ⑤ 파일 업로드


    ④에 등록된 Queue는 업로드기에서 감지하고 동영상 파일을 CDN(Akamai)의 저장 장치(Netstorage)에 업로드한다.
    또 이곳은 업로드 완료 후 처리로 그림에서 생략됐으나 RDS(Aurora)에 대해'녹화 편지 준비 완료'라는 뜻으로 상태 변경을 진행했다.
    이전에는 비디오 영상이 공개되기 전의 자동화 처리였다.

    총결산


    이 시스템을 구축할 때 "녹화 영상의 편집은 언제 어떤 형식으로 (Output으로) 완성됩니까?"작업자에게 위임됨
  • 비동기적으로 운동 이미지 인코딩
  • 운동 이미지 인코딩 기간에 일부 처리(예를 들어 초인종의 결합)를 통합할 수 있다
  • 이런 일은 필요조건으로 필요하다.
    따라서 업로드 전의 처리를 세분화하여 각 처리가 비동기적으로 실행될 수 있도록 했다.
    또한 현재 진행 상황을 추가로 확인하기 위해 모든 처리 절차가 슬랙에 진행 상황을 알린다.
    예를 들어 인코딩이 완료되었을 때 다음과 같은 알림을 건너뛸 수 있다(부분적으로 마스크를 착용하고 있다).

    그럼 이번에는 "Schoo하면 애니메이션 편지 맞죠!?"이런 요구도 있었기 때문에 영상이 보낸 주변을 기사로 만들어 봤어요.
    지난번 개발 환경에 이어 이틀 연속 어드벤트 캘린더 작업을 맡았고, 스쿨에서도 자동화를 위해 제작된 구조가 많았고, AWS 의존도가 높은 구성으로 이뤄졌다.만약 이런 생각원티드리도 모집 페이지가 있어요.이 있다면 꼭 참가해 주십시오!
    그럼 3일 연속은 없을 것 같습니다. 다음에 잘 부탁드립니다!!

    좋은 웹페이지 즐겨찾기