Pulseaudio의 기본 ALSA 장치 설정


8

최근에 외부 사운드 카드 / DAC (Fiio E17)를 받았으며 현재 Ubuntu 12.04 설치에서 올바르게 구성하려고합니다. USB를 통해 연결하면 즉시 인식되어 오디오 설정에 새 장치로 표시됩니다. 재생은 대부분 잘 작동합니다 (이 질문의 범위를 벗어난 사소한 볼륨 관련 문제는 제외).

그러나와 같은 오디오 파일을 재생하여 24 비트 / 96 kHz 재생을 테스트하려고 할 때 mplayer작은 문제가 발생했습니다.

Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 2 ch, s24le, 4608.0 kbit/100.00% (ratio: 576000->576000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 96000Hz 2ch s16le (2 bytes per sample)

출력에서 볼 수 있듯이 재생 된 파일에 24 비트 / 96kHz 오디오가 포함되어 있어도 재생 전에 16 비트로 다시 샘플링됩니다. 같은 파일을 재생하면 aplay이유가 표시됩니다.

Playing WAVE 'sr003-02-2496.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
aplay: set_params:1081: Sample format non available
Available formats:
- U8
- S16_LE
- S16_BE
- S32_LE
- S32_BE
- FLOAT_LE
- FLOAT_BE
- MU_LAW
- A_LAW

그러나 /proc/asound/card1/stream0하드웨어가 24 비트를 지원하는지 확인하십시오.

FiiO FiiO USB DAC-E17 at usb-0000:00:1a.0-1.1, full speed : USB Audio

Playback:
  Status: Running
    Interface = 3
    Altset = 1
    Packet Size = 388
    Momentary freq = 44100 Hz (0x2c.199a)
  Interface 3
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000, 96000
  Interface 3
    Altset 2
    Format: S24_3LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000, 96000

이 시점에서 사운드 설정의 하드웨어 탭에서 사운드 카드의 두 가지 프로파일 인 Digital Stereo (IEC958)와 Analog Stereo를 선택할 수 있음을 알았습니다. 내가 알 수있는 한이 두 가지를 전환해도 아무런 변화가 없습니다.

ALSA 장치를 지정하면 도움이됩니다 (즉, 제대로 aplay -Dhw:1,0 sr003-02-2496.wav작동하고 리샘플링하지 않고 파일을 재생 함). 그러나 Pulseaudio는 사운드 설정에서 하나의 Fiio 장치 / 싱크 만 표시하므로 Pulseaudio에게 ALSA 장치를 사용하도록 지시하는 방법을 잘 모르겠습니다 hw:1,0. 추가 load-module module-alsa-source device=hw:1,0/etc/pulse/default.pa로 중단 펄스 오디오의 결과 module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.를 시작할 때.

이것이 바로 소개입니다. 실제 질문은 다음과 같습니다.

  • 사운드 설정에서 Fiio E17을 선택할 때 Pulseaudio가 실제로 사용하는 ALSA 장치를 어떻게 알 수 있습니까?
  • 사운드 설정에서 Fiio E17을 선택할 때 Pulseaudio에서 ALSA 장치 hw : 1,0을 사용하도록하려면 어떻게해야합니까?

좀 더 도움이되는 디버그 정보 :


mplayeraplay명령 줄 은 무엇입니까 ?
CL.

@CL. 그것이 당신이 요구하는 것이라면 나는 올바른 장치를 실행 mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav하고 aplay -Dhw:1,0 sr003-02-2496.wav사용합니다.
tmnt

작동하지 않는 전화에 대해 묻고있었습니다. PulseAudio를 사용 하시겠습니까?
CL.

@CL. 아, 죄송합니다, 사람들은 어떤 플래그없이 단지 법선 호출이다 aplay sr003-02-2496.wav하고 mplayer sr003-02-2496.wav. 그리고 가능하다면 PulseAudio를 사용하고 싶습니다.
tmnt

답변:


8

두 가지 질문에 답하기 :

GNOME 볼륨 컨트롤, pavucontrol과 같은 GUI를 사용하거나 명령 줄에서을 사용하여 PulseAudio에서 기본 장치를 선택할 수 있습니다 pacmd set-default-sink.

기본적으로 PulseAudio는 44.1 kHz 또는 48 kHz의 장치를 열어 리샘플링 노력을 줄입니다 (96 kHz의 오디오는 일반적으로 장치가 48 kHz에서 열리도록합니다. 또한 기본적으로 S16LE의 장치를 엽니 다).

이제 두 가지 옵션이 있습니다. 몇 가지 파일을 기본 형식으로 재생 paplay --passthrough <file>하려면 작업을 수행해야합니다. 사용할 장치를 지정할 수도 있습니다.

다른 옵션은 전 세계적으로 PA가 96/24를 사용하도록하는 것입니다. /etc/pulse/default.conf( alternate-sample-rate = 96000, default-sample-format=s24-32le) 에서 변경할 수 있습니다 . 이것은 것입니다 하지만, 더 큰 CPU 사용량로 이어집니다. 이것은 모든 장치에 대해 전역 구성을 적용해야하는 어리석은 상황입니다. 우리는 언젠가 장치 별 구성을 추가 할 계획입니다.

이 후에는 mplayer가 ALSA와 통신 한 다음 ALSA와 PulseAudio를 사용하는 대신 mplayer의 PulseAudio 백엔드를 사용해야합니다. 당신과 함께 것을 할 수있는 mplayer -ao pulse ...당신이 영구적으로 설정하고 싶은 경우, 추가 ao=pulse~/.mplayer/config.


도와 주셔서 정말 감사합니다! 그래도 pacmd set-default-sink나열된 싱크 중 하나만 설정할 수 있습니다 pacmd list-sinks. 나는 대답의 두 번째 부분이 어쨌든 그 질문을 무질서하게 만든다고 생각하지만;) 당신을 올바르게 이해하면 Pulseaudio는 24 비트와 16 비트 사이의 동적 전환을 지원하지 않습니까? my을 변경 한 후에도 default.confmplayer는 여전히 모든 비트를 16 비트로 리샘플링하여 펄스로 넘겨줍니다 ( 여기 참조 )는 CL 때문입니다. 그의 답변에 설명?
tmnt

아, 그리고 paplay내 오디오 파일을 좋아하지 않는 것 같습니다 :) 24 비트 파일을 재생하면과 함께 segfault가 발생Code should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting. 하고 32 비트 파일을 재생하면 Pulseaudio와 충돌 합니다.
tmnt

4

13.10으로 업데이트 한 후 Pulseaudio의 기본값이 HDMI로 기본 설정되었습니다. 미니 디스플레이 포트를 통해 랩톱 (Lenovo T430S)에 추가 모니터가 연결되어 있기 때문일 수 있습니다. 아치 리눅스 웹 사이트는 재설정 할 수있는 다정하고 짧은 대답을 제공하거나 기본 설정 :

  • 로그인 후 기본 출력을 아날로그로 변경

  • 운영

    $ aplay -l

아날로그가 카드 0이라는 것을 알 수 있습니다.

  • 운영

    $ pacmd 목록

라인을 찾으십시오.

active profile: <output:analog-stereo+input:analog-stereo>

"output : analog-stereo + input : analog-stereo"는 내 프로필 이름이므로 add

set-card-profile 0 output:analog-stereo+input:analog-stereo

/etc/pulse/default.pa에 저장

  • 펄스 오디오 재시작

2

응용 프로그램과 PulseAudio 간의 인터페이스에 사용되는 샘플 형식이 PulseAudio가 하드웨어 장치에 액세스하는 데 사용하는 샘플 형식과 항상 직접 관련된 것은 아닙니다.

S24_3LEPulseAudio에서 지원되는 애플리케이션 형식 중 하나가 아닙니다 ( aplay출력에 표시됨). 이러한 비정상적인 형식의 응용 프로그램을 PulseAudio와 함께 실행하려면 다음의 기본 PCM 장치가 필요한 경우 자동 형식 변환을 수행하는 플러그인을 추가하십시오 .asoundrc.

pcm.!default {
    type linear
    slave.pcm pulse
}

도와 주셔서 감사합니다. 그러나 이로 인해 아무런 변화가 없었습니다. 심지어 내이를 추가 한 후 .asoundrc, mplayer여전히 (즉, 출력 내 질문에 게시 된 것과 같은 모양) 16 비트 오디오를 다운 샘플링하고 /proc/asound/card1/stream0여전히 잘못된 altset가 사용되는 예를 보여주고 있습니다. PA가 지원하는 형식에 실제로 문제가 있었다면 mplayerALSA 장치를 지정할 때도 오디오를 다운 샘플링 해서는 안됩니다. 펄스 오디오를 계속 사용하고 있기 때문입니까?
tmnt

aplay지금 작동 합니까 ? 의 버그 인 것 같습니다 mplayer.
CL.

아니요, aplay여전히 동일한 출력으로 실패합니다. default-sample-format = s24-32le내 설정 으로 .pulse/daemon.confPA가 올바른 출력 장치를 사용하도록 할 수 있음을 알았습니다 . 그러나 mplayer여전히 오디오를 리샘플링하고 aplay24 비트 오디오 파일을 재생하려고 할 때 여전히 실패하므로 이것이 도움이되지 않습니다.
tmnt

2

USB를 통해 연결된 Fiio E17과 함께 Lubuntu Trusty Tahr을 사용하여 알아 낸 빠른 해결 방법 : 비트 전송률에 대해서도 궁금합니다. 그러나 다소 오래된 넷북에서 음악을 듣고 있기 때문에 기본적으로 96/24로 설정하고 싶지 않았습니다 (cpu가 가장 빠르지는 않습니다). 그러나 VLC를 사용하고 전문가 오디오 설정에서 지정하는 것이 효과적이었습니다. ALSA 모듈을 사용하여 출력 한 후 다음 출력 장치를 사용하십시오. "Fiio USB DAC-E17, 변환이없는 USB Audio Direct 하드웨어 장치"

이 방법으로, 원할 때 USB를 통해 96/24 사운드를 USB를 통해 Fiio로 출력 할 수있었습니다 (Fiio의 작은 화면에도 표시됨). OS에서보다 기본적인 것을 변경할 필요가 없었습니다. 대담한 또는 브라우저와 같은 플레이어는 여전히 기본 펄스 오디오 출력을 사용합니다. 때로는 VLC는 장치가 이미 사용 중이라고 말하고 펄스 오디오 출력을 사용하는 대담한 다른 소프트웨어를 닫으면 작동합니다.

안디, 안디



1

이 질문에 대한 정답은 다음과 같습니다.

에서 ArchWiki

사용하려는 ALSA hw 장치를 결정하십시오. 그런 다음 default.pa 파일에 추가하십시오. (장치에 맞게 0,0을 변경하십시오.)

load-module module-alsa-sink device=hw:0,0

1

에 추가 load-module module-alsa-source device=hw:1,0하는 /etc/pulse/default.pa것이 올바른 방법입니다. 그러나 장치 충돌을 방지하려면 다음 모듈을 언로드해야합니다 ( initialization failed오류가 발생했습니다).

  • 모듈 -udev-detect
  • 모듈 감지

주의해서 살펴보고 /etc/pulse/default.pa해당 모듈이 포함 된 라인을 제거하십시오. 또한이 경우 장치를 자동으로 감지 할 수 없으므로 module-alsa-sink수동으로 싱크를 지정 하기 위해로드하려고합니다 .


캡처 (소스) 장치 만 수동으로로드 한 경우 충돌 감지 재생 (싱크)이 있습니까?
Lucas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.