본문 바로가기

Silverlight

Expression Encoder 2 SDK로 인코딩 자동화 - 02. 인코딩 코드 작성

안녕하세요. 김수영입니다.

EE2 SDK로 인코딩 자동화 하기 두번째 시간입니다.

EE2를 실행하면 우측에 여러 옵션을 설정할 수 있는 탭이 존재합니다. 이 탭의 여러 옵션들을 SDK에서 코드로 어떻게 작성하는지에 대해 알아 보겠습니다.

EE2 탭은 {Encode}, {Enhance}, {Metadata}, {Output} 이 존재 합니다.

{Encode}
 - 오디오, 비디오의 코덱 화면 비율과 같은 인코딩에 있어 가장 중요한 설정입니다.
{Enhance}
 - 여러 미디어를 작업 할 때 오버레이(Overlay)와 같은 부분을 설정 합니다.(지금 인코딩 자동화에서는 다루지 않습니다.)
{Metadata}
 - Title, Authour과 같은 메타데어터와 Marker를 지정합니다. Marker 지정은 미디어의 인덱스 생성 및 인코딩 후 썸네일을 추출 할 수 있습니다.
{Output}
 - 한장의 썸네일 추출을 위한 설정과 인코딩 출력 폴더 등을 설정 합니다.

{EE2 설정 옵션들}


UCC 관련 사이트를 개발 한다고 가정 하였을 경우 사용자가 미디어를 업로드 하면, 서버는 그 업로드 된 미디어를 서비스 형식에 맞게 인코딩 작업을 수행 하면 됩니다. 현재 서비스에 맞는 인코딩 설정을 위의 탭에 나와 있는 항목을 잘~~ 설정해 주면 됩니다.

기본적인 인코딩 작성 코드 입니다.

미디어의 컨테이너인 {MediaItem} 인스턴스를 생성 후 {Job} 오브젝트를 통해 인코딩 작업을 수행 합니다. 그러나 좀더 파워풀한 기능을 구현 하기에는 지금 코드로는 많이 부족합니다. -.-

그럼 각각의 탭별로 세부 옵션에 대한 간단한 설명과 코드로 작성은 어떻게 하는지 살펴 보겠습니다.

01.{Encode}
EE2 에서는 오디오, 비디오의 코덱, 화면비율, 비트레이트 등과 같은 여러 정보를 가지고 있는 컨테이너를 프로파일(Profile)이라고 합니다.
이 프로파일은 그림에서 보는것 처럼 EE2에서 기본적으로 제공해 주는 {Streaming Broadband}, {WMA Good Quality Audio}와 같은 프로파일을 사용 할 수도 있고, 아니면 각 세부 항목을 사용자가 새롭게 설정 할 수 있습니다. {Streaming Broadband}는 VC-1 코덱을 사용하고 사이즈는 512*384에 비트레이트는 5초 등과 같은 세부 설정이 되어 있습니다. 여기서 한가지 유의 사항은 {Streaming Broadband} 같은 프로파일 설정의 사이즈와 아래에 나오는 {Video Profile -> Size}의 사이즈와는 다른 의미를 가지고 있습니다.

웹에서 영화 한편을 다운 받았습니다. 곰탱이 플레이어로 재생을 해 보면 실제 영화 화면과 외곽의 검은색 영역(레터박스(Letterbox)) 부분이 있습니다. 바로 이 차이 입니다. 프로파일 설정에서의 화면 사이즈는 실제 영화 화면 입니다. 그리고 {Video Profile -> Size} 에서는 동영상의 컨테이너가 되는 부분의 사이즈를 말합니다. 컨데이너의 사이즈가 정해지면 실제 영화 화면을 컨네이너에 맞게 늘일지, 검은색 영역을 넣을지 등과 같은 부분 설정을 {Video Profile -> Size -> Resize Mode}에서 설정을 합니다.

- VideoProfile 작성


- AudioProfile 작성



- Video Size 변경




02.{Metadata}
동영상의 파일명만으로는 이 동영상의 제목이라든지, 작성자 등을 알 수 없습니다. 이와 같은 정보를 미리 메타데이터로 입력 가능합니다. 그리고 이 탭에서는 동영상의 특정 위치를 지정하거나, 그 지정된 위치의 이미지를 생성할 수 있는 {Markers} 설정도 가능합니다.
{Marker}GenerateThumbnail 속성을 true로 설정을 하면 인코딩 작업 완료 후에 해당 위치의 섬네일을 생성 할 수 있습니다.

- Metadata 작성



- Markers 작성
03.{Output}
마지막 탭입니다. 이 부분은 대표이지 같이 하나의 썸네일을 추출 할 수 있게 설정 하는 부분과 인코딩된 파일의 출력 폴더 설정들을 할 수 있습니다. 인코딩 작업을 실제적으로 수행하는 {Job} 오브젝트는 {EncodeProgress}{EncodeCompleted} 란 이벤트를 지원해 줍니다.

- {EncodeProgress} : 인코딩과정이 진행되는 상태를 백분율로 나타냄.
- {EncodeCompleted} : 인코딩과정이 완료된 후 발생(인코딩 완료 후 특정 스토리지에 저장하거니 DB 처리등 비즈니스 로직을 처리해 주면 됩니다.)

- Thumbnail 작성


- Job 작성(인코딩 작업 수행)


인코딩 작업을 위해 여러 옵션 설정을 위한 코드 작성 및 인코딩 작업을 수행하는지 알아 봤습니다. 아직 EE2가 발표 된지 얼마 되지 않아 참고 자료가 많이 있지는 않습니다. 인코딩 자동화를 준비하시는 분들에 조금이나마 도움이 되었기를 바랍니다.

다음 강좌는 마지막으로 EE2 SDK 에서 썸네일 이미지 추출하는 방법에 대해 정리해 보도록 하겠습니다.

{목차}
EE2 SDK로 인코딩 자동화 - 01. 개발 준비

EE2 SDK로 인코딩 자동화 - 02. 인코딩 코드 작성
EE2 SDK로 인코딩 자동화 - 03. Tip & Tech 썸네일 추출 방법


To be continued...

감사합니다.

김수영
Visual C# MVP
훈스닷넷 C# 시샵
.NET N’Gene
네오위즈 게임즈


[출처] http://blog.it-hero.co.kr/blog_post_82.aspx