미디어 플레이어 자막 재생방법및 이퀄라이저

wakeup의 이미지

플레이어를 만들어 보려고 하는데요,
자막 처리는 어떻게 프로그래밍을 해야 하는지 아시는분 조언 부탁드립니다.
대충 생각해 본건데, 현재 플레이되는 프레임 정보와 smi 파일을 읽고 해당 프레임이 플레이될때
보여주면 될거같다는 막연한 생각이 드는데요...

그리고, 윈엠프나 알송같은 오디오 플레이어에서
오디오가 플레이될때, 주파수에 따라서 올라갔다 내려갔다 하는 UI는 어떻게 만드는 건지요 사진첨부 해봅니다.

참고자료나 사이트 알려주시면 고맙겠습니다.

File attachments: 
첨부파일 크기
Image icon eq.GIF3.18 KB
ganadist의 이미지

gstreamer에서는 자막을 보여주는데 2가지 플러그인이 필요합니다.

subparse와 textoverlay 플러그인이 그것인데요.

subparse 플러그인에서는 자막 파일을 파싱해서 시간정보와 그 시간에 보여줘야 할 텍스트 데이터를 분리합니다.

textoverlay 플러그인에서는 subparse에서 얻은 텍스트 데이터를 rgb데이터로 렌더링한 후, 현재 동영상의 프레임데이터와 합치는 역할을 합니다. 동영상의 프레임 데이터는 yuv이므로 자막을 렌더링한 이미지 데이터도 yuv로 변환한 다음 블렌딩시켜야합니다.

그런데 텍스트 데이터를 렌더링할 때 주의해야 할 점이 있습니다. 단순히 렌더링해서 비디오 프레임과 합치면 가독성이 무지막지하게 떨어집니다. 그래서 보통 외곽선과 그림자 처리를 하고 적절한 알파블렌딩 처리를 해야 보기 좋게 나옵니다.

그리고 smi에서는 html에서 사용되는 여러가지 태그를 사용할 수 있기 때문에 렌더링하는데 귀찮은점이 많이 생길 수 있습니다. 그리고 태그 짝이 안맞거나 잘못된 프로퍼티가 포함되어있는 경우도 아주 많습니다. 뭐 파서에서 잘 되도록 해주는 수 밖에 없습니다..

gstreamer에서의 textoverlay에서는 pango markup형식을 처리해주는 기능이 포함되어 있어서 subparse에서 pango markup형식으로 변환시킨후 textoverlay로 넘겨주도록 되어있습니다.

만약 직접 이것들을 구현하신다면 위에 언급한 것들을 고려하고 구현하는 것이 좋을 듯 합니다.

(어젯밤에 대충 답변을 적고 submit을 했는데 db서버가 나간듯 하더군요 --; 다시 어제 적은것 대충 기억에서 끄집어내어서 적습니다.)

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.