SMI파일은 싱크정보를 이용해 동영상에 자막이나 특정 정보를 입히는 과정입니다.
아마 준서아빠 블로그를 보시는 분들은 어떤 녀석인지 잘 알고 계시리라 생각합니다.

Silverlight에서 SMI파일 자막 입히는 방법은 예전에도 한번 소개해 드렸는데요.
Silverlight, 동영상에 한글 smi 자막 넣고 웹에서 플레이

Silverlight 1.0 버젼에서는 한글 자막 기능을 위해 SetFontSource 방식을 이용해 폰트를
내려 보내 주는 작업을 하는 등 여간 귀찮지 않았습니다만, Silverlight2부터는 시스템폰트를
이용 가능하기 때문에 추가 작업이 필요 없습니다.

그럼 시작해 보도록 할까요.

[WMV의 Metadata에 SMI파일을 넣고 서비스]
간단히 Expression Encoder를 이용해 WMV에 SMI를 Metadata로 삽입 후 서비스 하는 방식입니다.

Expression Encoder 2 Beta설치
Silverlight2 Beta1 설치 - 현재 Beta지만 완성도와 성능, Silverlight1과의 호화성으로 볼때 문제 없습니다.

smi_t.jpg

1. Expression Encoder 2에서 아무 영상이나 Import
2. 우측 Metadata 탭에서 Script Command의 Import 클릭 후 SMI파일 선택
3. Output 탭에서 Job Output의 Template을 Expression으로 선택 후 인코딩 실행

인코딩이 완료되면 SMI파일의 자막이 보이는 것을 확인 가능합니다.

smi2_t.jpg


참고정보

1. WMV파일 컨테이너의 헤더 영역에 Metadata가 저장됩니다.
2. 영상과 자막이 합쳐진 것이 아닙니다.(자막을 동적으로 제어 가능합니다.)
3. 영상이 플레이되는 중 Textblock을 없애거나 크기를 조절하는 것이 프로그래밍적으로
충분히 가능합니다.
4. Output Template을 "Expression" 미디어 템플릿으로 잡은 이유는 이 템플릿이
Caption을 보여주는 루틴을 기본 포함하기 때문입니다.

WMV와 SMI를 분리해 서비스하는 방법은 쉽지 않을 것 같습니다.
SMI파일은 보통 Frame 번호로 Sync가 처리되는데요. Media Element의 Position이
천분의 1초(millisecond) 단위로 서비스 되기 때문입니다.

PS.
곧 발표될 Expression Encoder2 SDK를 이용해 이런 과정을 자동화 시킬 수 있습니다.
VC-1 코덱을 이용해 자막 + HD급 고화질을 Silverlight로, 웹에서 서비스 한다면 어떨까요?
교육사이트에서 영어나 외국어 교육 동영상 서비스에 Silverlight의 자막 기능을 이용하면 어떨까요?


예전링크 : http://www.uxkorea.net/blog_post_235.aspx





profile

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.

코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터