9
자막을 뿌리려면 해야 여러가지 삽질모음 7공무원도 쉽게 이해하는 동영상 플레이어 해킹하기

자막을 뿌리려면 해야 할 여러가지 삽질모음

Embed Size (px)

Citation preview

Page 1: 자막을 뿌리려면 해야 할 여러가지 삽질모음

자막을 뿌리려면 해야 할 여러가지 삽질모음7급 공무원도 쉽게 이해하는 동영상 플레이어 해킹하기

Page 2: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Overview ofVideo Player engine

Media Source

Demuxer(Splitter) Video

Audio

Subtitle

Decoderto YUV

Decoderto PCM

Renderto RGB

Composite VideoOutput

AudioOutput

ExternalSubtitleSource

Page 3: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Subtitle formats● Text based

○ srt○ ssa/ass○ sami○ tmplayer○ mpsub

■ http://goo.gl/VceeF● Subpicture

○ dvd subpicture (.sub/.idx)○ bluray subpicture

● Content○ 시작시간○ 끝시간○ 내용

Page 4: 자막을 뿌리려면 해야 할 여러가지 삽질모음

SAMI● http://en.wikipedia.org/wiki/SAMI● Microsoft에서 만든 Closed Caption 형식● 상당히 많은 부분을 HTML에서 차용

○ 즉 HTML에서 표현 가능한 것 대부분 사용가능● 자막 형식 중에서 상당히 spec이 복잡한 축에 속함

● 대부분의 배포되는 자막 파일의 경우 Valid한 markup language가 아님

Page 5: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Parsing● 문자셋 정의가 되어있지 않음● 대부분 <sync> 태그를 닫지 않음

○ 그외에 다른 여러 태그에 대해서도 올바르게 닫지 않는 경우가 많음

● 잘못된 html entity를 사용하는 경우가 많음○ &amp;○ &lt;○ &gt;○ &nbsp;○ &quot;○ &apos;

● 잘못된 color code를 사용하는 경우가 많음

Page 6: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Rendering● 여러가지 layout 문제

○ 글자 align에 대한 표준이 없음○ layout engine이 필요!!!○ layout rule도 필요!!

● 가독성○ 글자만 그렸을 경우

■ 글자만 그려서는 가독성이 아주 떨어짐○ 해결 방법

■ 배경에 그늘을 씌우던가..■ 글자 테두리를 따로 그리던가..

○ 일반적으로는 테두리 + 그림자 를 같이 그림● 비디오 소스 해상도에 맞춰서 렌더링됨

○ 저해상도의 경우

Page 7: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Composite● 화면 출력전에 비디오 소스와 자막을 그린 결과물을 합성해야 함.○ 비디오 소스와 자막 그린 결과물의 형식이 다름

■ 비디오 소스는 yuv■ 자막 렌더링 결과물은 rgb

● 거기다가 Anti-aliasing이 걸려있으면 alpha 처리도 추가

● 추가로 1초에 30회 이상 합성되어야 함.

Page 8: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Implementation● VideoLan

○ parser■ http://goo.gl/DVRkx

○ renderer■ http://goo.gl/CqopE

● MPlayer○ parser

■ http://goo.gl/6FdDI○ renderer

■ http://goo.gl/ue2BR

Page 9: 자막을 뿌리려면 해야 할 여러가지 삽질모음

Implementation● GStreamer

○ parser■ http://goo.gl/8HMhv

○ renderer■ http://goo.gl/SyZLE

● XBMC○ parser

■ http://goo.gl/7UlW7○ renderer

■ http://goo.gl/WfuCn● not implemented ?