리눅스에서 사운드 또는 그래픽을 다루기 위해 무엇을 알아야 하나요?

dltkddyd의 이미지

리눅스에서 사운드 또는 그래픽을 다루려고 할 때에 가장 기본적으로 무엇을 이용해야 하나요. 화면에 출력을 하거나 입력을 받아들일 때, cout 또는 cin 이라는 객체를 사용하듯이 사운드 그래픽을 다룰 때에는 어떤 객체를 사용해야 하는 건가요?

마잇의 이미지

가장 바닥에 있는 API가 사운드는 ALSA, 그래픽은 X11 이렇게 알고 있는데 보통 프로그램 개발자 분들은 이걸 직접 안 쓰고 Gtk, Qt 이런 라이브러리를 사용해서 개발 합니다.

Gtk의 경우 오디오는 gstreamer가 같은 프레임웍이고 qt는 오디오 지원도 포함 되어 있다고 알고 있습니다.

다른 라이브러들도 많긴 한데 gtk, qt가 리눅스 데스크탑용 프로그램 제작에는 가장 많이 쓰입니다.


--
마잇

dltkddyd의 이미지

리눅스에 /dev/dsp라는 것이 사운드를 다루는 장치라고 하길래 이 장치 파일 찾아봤지만 제 페도라 14에는 이 파일이 없습니다. 언급하신 방법 말고 제 컴퓨터에서 /dev/dsp로 접근할 수는 있는 방법은 없는 건가요?

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

마잇의 이미지

간단하게 aplay(alsa), paplay(pulseaudio) 같은 프로그램을 이용해서 pcm 데이터를 직접 재생할 수도 있습니다.

/dev/dsp로 직접 접근 하는 방식은 지나간 일 입니다. 페도라는 모르겠는데 우분투의 경우 호환성을 위해 /dev/dsp를 생성해주는 snd-pcm-oss 같은 커널 모듈이 아예 기본으로 설치 되지가 않습니다. /dev/snd 아래를 뒤지면 같은 용도의 파일이 있을지 모르겠으나 이건 제가 잘 모르겠습니다.

지금은 커널 사운드 카드 드라이버 + 저수준 API를 ALSA가 제공 하는데 예전엔 OSS라는 것이 쓰였었습니다. 그 때 부터 사용된 사운드 인터페이스가 /dev/dsp 였습니다. 지금도 snd-*-oss 커널 모듈을 올리면 저 장치가 생기고 거기에 wav(pcm) 파일을 쓰면 소리가 날 겁니다.

OSS 호환 커널 모듈이 기본으로 로드 되지 않는 이유는 짐작 하시겠지만 지금은 OSS만 의존적으로 동작하는 프로그램들이 거의 없습니다. 꼭 필요한 경우라면 aoss(alsa), padsp(pulseaudio) 같은 wrapper 프로그램을 사용 합니다.

pulseaudio는 alsa 보다는 한 단계 더 추상화 된 오디오 프레임웍 입니다. 데스트탑 환경은 alsa에 직접 접근하지 않고 pulseaudio를 사용하는 것이 표준으로 자리 잡았습니다.

pulseaudio는 프로세스 별 볼륨 조절, 동적으로 입출력 장치 변환, 네트웍으로 오디오 전송 같은 기능 들이 있습니다. gstreamer는 다양한 영상, 음성 코덱을 이용한 인코딩/디코딩을 지원 합니다. 윈도우즈로 치면 DirectShow?


--
마잇

dltkddyd의 이미지

/dev/snd의 snd가 파일이 아닌 폴더명입니다. 그리고 snd 폴더 안에는

d~~ by-path
c~~ controlC0
c~~ hwC0D0
c~~ pcmC0D0c
c~~ pcmC0D0p
c~~ pcmC0D01p
c~~ pcmC0D02c
c~~ seq
c~~ timer

라는 것이 목록으로 나옵니다. d표시는 디렉토리이고, 저 c는 뭔가요? 저게 장치명인가요? 그렇다면 저것을 어떻게 사용한다는 것이죠?

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

마잇의 이미지

aplay, padsp를 사용하시거나

alsa, 혹은 pulseaudio 라이브러리 문서를 참고 하십시오.


--
마잇

마잇의 이미지

댓글 달기

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