View
82
Download
1
Category
Preview:
Citation preview
자막을 뿌리려면 해야 할 여러가지 삽질모음7급 공무원도 쉽게 이해하는 동영상 플레이어 해킹하기
Overview ofVideo Player engine
Media Source
Demuxer(Splitter) Video
Audio
Subtitle
Decoderto YUV
Decoderto PCM
Renderto RGB
Composite VideoOutput
AudioOutput
ExternalSubtitleSource
Subtitle formats● Text based
○ srt○ ssa/ass○ sami○ tmplayer○ mpsub
■ http://goo.gl/VceeF● Subpicture
○ dvd subpicture (.sub/.idx)○ bluray subpicture
● Content○ 시작시간○ 끝시간○ 내용
SAMI● http://en.wikipedia.org/wiki/SAMI● Microsoft에서 만든 Closed Caption 형식● 상당히 많은 부분을 HTML에서 차용
○ 즉 HTML에서 표현 가능한 것 대부분 사용가능● 자막 형식 중에서 상당히 spec이 복잡한 축에 속함
● 대부분의 배포되는 자막 파일의 경우 Valid한 markup language가 아님
Parsing● 문자셋 정의가 되어있지 않음● 대부분 <sync> 태그를 닫지 않음
○ 그외에 다른 여러 태그에 대해서도 올바르게 닫지 않는 경우가 많음
● 잘못된 html entity를 사용하는 경우가 많음○ &○ <○ >○ ○ "○ '
● 잘못된 color code를 사용하는 경우가 많음
Rendering● 여러가지 layout 문제
○ 글자 align에 대한 표준이 없음○ layout engine이 필요!!!○ layout rule도 필요!!
● 가독성○ 글자만 그렸을 경우
■ 글자만 그려서는 가독성이 아주 떨어짐○ 해결 방법
■ 배경에 그늘을 씌우던가..■ 글자 테두리를 따로 그리던가..
○ 일반적으로는 테두리 + 그림자 를 같이 그림● 비디오 소스 해상도에 맞춰서 렌더링됨
○ 저해상도의 경우
Composite● 화면 출력전에 비디오 소스와 자막을 그린 결과물을 합성해야 함.○ 비디오 소스와 자막 그린 결과물의 형식이 다름
■ 비디오 소스는 yuv■ 자막 렌더링 결과물은 rgb
● 거기다가 Anti-aliasing이 걸려있으면 alpha 처리도 추가
● 추가로 1초에 30회 이상 합성되어야 함.
Implementation● VideoLan
○ parser■ http://goo.gl/DVRkx
○ renderer■ http://goo.gl/CqopE
● MPlayer○ parser
■ http://goo.gl/6FdDI○ renderer
■ http://goo.gl/ue2BR
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 ?
Recommended