Linux에서 Multimedia 파일을 재생하는 프로그래밍을 할 때..

bluekazu의 이미지


안녕하십니까, 질문 있어 왔습니다.

현재 Linux ( Ubuntu 7.04 ) 상에서, 다양한 멀티미디어 파일을 재생하는 프로그램을 개발 중입니다.

video, audio, image 그리고 여러 문서 포맷 ( txt, pdf, ppt, ... ) 들에 대해 재생하려는데요,

재생 틀은 Qt로 제작하려 합니다.

동영상 ( video )을 Qt 틀 위에서 재생 시켜 주기 위해서는 codec 뿐만 아니라, 재생 라이브러리가

따로 필요한가요?

또한 사운드 ( audio )와 이미지 ( image )를 재생 시키기 위해서는 어떤 과정이 필요한지요?

문서 포맷은 대략, 기본적인 txt와 pdf 그리고 ppt 파일 포맷을 대상으로 하는데,

이 문서 파일 포맷들은 OpenOffice에서 제공하는 API를 이용하여 재생 할 수 있다고

들었습니다. 가능한지요?

Linux 플랫폼에서의 프로젝트는 이번이 처음이라 궁금한 점이 많습니다.

지도편달 부탁드립니다. 감사합니다. ^^

valentis의 이미지

Qt는 화면에 간단한 이미지를 표시할 수는 있지만
동영상 파일을 표시하기 위해서는...
그 동영상 파일 구조를 분석할 수 있는 코드(라이브러리)와...
분석한 후 영상 데이터를 가져와서 압축을 해제하기 위한 코덱...
등이 필요합니다.

Qt에서는 영상표시를 위한 위젯들(QPainter나 QImage)은 제공하고 있지만...
오디오 출력을 위해서 제공하는 QSound 위젯의 경우 wave 파일과 같은 것의 출력만 가능합니다.
제대로 오디오 출력을 하실려면 OSS나 ALSA 등을 이용해서 오디오를 출력하는 프로그램을 직접 작성하셔야 겠네요.
리눅스에서의 멀티미디어 프로그래밍에 대해서는 제 홈페이지를 참고하세요.
http://valentis.pe.kr/Suhdang/QT_Programming/Lecture_MM.html

-------------------------------------

서영진 입니다.
Homepage : http://valentis.pe.kr
blog : http://www.lifeholic.com

-------------------------------------

서영진 입니다.
Homepage : http://valentis.pe.kr
blog : http://www.lifeholic.com

체스맨의 이미지

동영상 처리에 대해서는 ffmpeg 이나 gstreamer 를 참고하세요. ffmpeg 은 gif 나 jpeg 도 로드할 수 있습니다. 일부 손봐야할 곳이 있긴 하지만 gif 애니메이션도 가능하구요.

각종 그림 포맷을 위해서는 libXXX.so 를 찾아서 파악하셔야됩니다. 예를 들어 png 라면 libpng.so 와 같은 식입니다. 사용방법을 인터넷에서 찾으실 수 있을겁니다.

pdf 나 ppt 에 대해서는 잘 모르겠습니다만, 아예 화면 처리까지 컴포넌트처럼 돼았는 라이브러리가 아닌한, 문서 포맷을 읽어서 그것을 화면에 렌더링하는데 많은 수고로움이 있을거라 예상되는군요.

특히 ppt 는 오픈 오피스 모듈을 쓴다해도 MS 툴로 작성한것과 똑같이 표시되지 않을 가능성이 많습니다

Orion Project : http://orionids.org

valentis의 이미지

ffmpeg에 보시면 libavcodec이라는 코덱과 libavformat이라는 파일 구조 분석기가 있습니다.
파일 포맷을 분석하실때는 libavformat를 사용하시면 됩니다.
코덱은 libavcodec를 이용하시면 되는데 이것과 관련된 문서들이 인터넷에 좀 있습니다.
http://wiki.kldp.org/wiki.php/sleepbysleep

참고하세요.
-------------------------------------

서영진 입니다.
Homepage : http://valentis.pe.kr
blog : http://www.lifeholic.com

-------------------------------------

서영진 입니다.
Homepage : http://valentis.pe.kr
blog : http://www.lifeholic.com

정태영의 이미지

ffmpeg 나 gstreamer 말고도 libxine 이 있죠 :)

아예 처음부터 백엔드와 프론트엔드를 분리해놓은 상태로 디자인되서 쓰기엔 libxine 이더 쓸만할 거 같아요.

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

ganadist의 이미지

각각의 장단점이 있습니다.
* mplayer
* 장점: 잘 돌아간다.
* 단점: 멀티미디어 프레임워크가 아니라 플레이어일 뿐이다.
소스 보면 머리가 아프다.

* libxine
* 장점: 플러그인이 대체적으로 분리가 되어있다.
* 단점: 은근히 버그가 많다
최근 개발속도가 더디다.

* vlc
* 장점: 플러그인이 대체적으로 분리가 되어있다.
기능구현자체는 아주 잘되어 있다.
* 단점: 다른 것들에 비해 인지도가 떨어진다.

* gstreamer
* 장점: 플러그인이 아주 잘 분리되어있다.
아주 많이 쓰인다.
각종 언어에 대한 바인딩이 잘되어 있다.
* 단점: 은근히 버그가 많다.

그리고 ffmpeg는 자체로도 사용 가능하지만 위에 언급한 프레임워크에서도 모두 사용되고 있어서 제외합니다.

----
Do not feed troll!

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

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.