Ustawienie domyślnego urządzenia ALSA dla Pulseaudio

8

Niedawno dostałem zewnętrzną kartę dźwiękową / DAC (Fiio E17) i obecnie próbuję poprawnie skonfigurować ją w mojej instalacji Ubuntu 12.04. Po podłączeniu go przez USB jest natychmiast rozpoznawane i pojawia się jako nowe urządzenie w ustawieniach audio. Odtwarzanie działa również w większości dobrze (z wyjątkiem niektórych drobnych problemów związanych z głośnością, które są poza zakresem tego pytania).

Jednak podczas próby przetestowania odtwarzania 24-bit / 96 kHz przez odtwarzanie takiego pliku audio mplayernapotkałem mały problem:

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)

Jak widać z wyjścia, mimo że odtwarzany plik zawiera dźwięk 24 bity / 96 kHz, przed odtworzeniem jest ponownie próbkowany do 16 bitów. Odtwarzanie tego samego pliku z aplaypokazuje przyczynę:

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/stream0Potwierdza jednak, że sprzęt obsługuje 24 bity:

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

W tym momencie zauważyłem, że w zakładce sprzętowej ustawień dźwięku mogę wybrać dwa różne profile karty dźwiękowej: Digital Stereo (IEC958) i Analog Stereo. O ile wiem, przełączanie się między tymi dwoma nie powoduje żadnych zmian.

Określenie urządzenia ALSA jednak pomaga (to znaczy aplay -Dhw:1,0 sr003-02-2496.wavdziała dobrze i odtwarza plik bez ponownego próbkowania). Ale ponieważ Pulseaudio pokazuje tylko jedno urządzenie Fiio / zlew w ustawieniach dźwięku, nie jestem pewien, jak powiedziałbym Pulseaudio, aby korzystało z urządzenia ALSA hw:1,0. Dodanie load-module module-alsa-source device=hw:1,0do /etc/pulse/default.pawyników powoduje przerwanie Pulseaudio module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.podczas uruchamiania.

Oto wstęp, oto moje aktualne pytania :

  • Jak dowiedzieć się, którego urządzenia ALSA używa Pulseaudio, kiedy wybieram Fiio E17 w ustawieniach dźwięku?
  • Jak mam powiedzieć Pulseaudio, aby używało urządzenia ALSA hw: 1,0 przy wyborze Fiio E17 w ustawieniach dźwięku?

Kilka innych (mam nadzieję, że pomocnych) informacji do debugowania:

tmnt
źródło
Jakie są wiersze poleceń mplayeri aplay?
CL.
@CL. Biegam mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wavi aplay -Dhw:1,0 sr003-02-2496.wavużywam właściwego urządzenia, jeśli o to pytasz.
tnt
Pytałem o połączenia, które nie działały. I chcesz korzystać z PulseAudio czy nie?
CL.
@CL. Ach, przepraszam, to są zwykłe połączenia bez flag, to znaczy aplay sr003-02-2496.wavi mplayer sr003-02-2496.wav. I tak, chciałbym użyć PulseAudio, jeśli to możliwe.
tnt

Odpowiedzi:

8

Odpowiadając na dwa pytania:

Możesz wybrać domyślne urządzenie w PulseAudio za pomocą GUI, takiego jak regulacja głośności GNOME, pavucontrol lub z wiersza poleceń, używając pacmd set-default-sink.

Domyślnie PulseAudio otwiera urządzenia dla 44,1 kHz lub 48 kHz, w zależności od tego, co prowadzi do mniejszego wysiłku ponownego próbkowania (tak więc dźwięk 96 kHz zwykle prowadzi do otwarcia urządzenia przy 48 kHz. Ponadto domyślnie otwieramy urządzenia dla S16LE.

Teraz masz dwie opcje. Jeśli chcesz po prostu odtworzyć kilka plików w ich rodzimym formacie, paplay --passthrough <file>powinieneś zrobić to za Ciebie. Możesz nawet określić, którego urządzenia użyć.

Inną opcją jest globalne użycie PA w trybie 96/24. Możesz to zmienić w /etc/pulse/default.conf( alternate-sample-rate = 96000, default-sample-format=s24-32le). Doprowadzi to jednak do większego wykorzystania procesora. To trochę głupia sytuacja, ponieważ trzeba zastosować globalną konfigurację dla wszystkich urządzeń. W pewnym momencie planujemy dodać konfigurację dla poszczególnych urządzeń.

Zauważ, że po tym powinieneś po prostu użyć backendu PulseAudio mplayera zamiast rozmawiać mplayera z ALSA, a następnie ALSA z PulseAudio. Możesz to zrobić za pomocą, mplayer -ao pulse ...a jeśli chcesz to ustawić na stałe, dodaj ao=pulsedo ~/.mplayer/config.

Arun Raghavan
źródło
Dziękuję bardzo za Twoją pomoc! pacmd set-default-sinkpozwala mi tylko ustawić jeden z wymienionych zlewów pacmd list-sinks, prawda? Chociaż myślę, że druga część twojej odpowiedzi i tak sprawia, że ​​to pytanie jest dyskusyjne;) Więc jeśli rozumiem cię poprawnie, Pulseaudio nie obsługuje dynamicznego przełączania między 24 a 16 bitami? Po zmianie mojego default.conf, mplayer nadal wydaje się przeskalowywać wszystko do 16 bitów, zanim przekazałem go do pulsu ( patrz tutaj ), to dlatego, że CL. opisuje w swojej odpowiedzi?
tmnt
Aha, i paplaywydaje mi się , że nie lubię moich plików audio :) Odtwarzanie pliku 24-bitowego prowadzi do usterki Code should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting., a odtwarzanie pliku 32-bitowego nawet powoduje awarię Pulseaudio .
tmnt
4

Po aktualizacji do 13.10 Pulseaudio domyślnie ustawiło HDMI, prawdopodobnie dlatego, że mam dodatkowy monitor podłączony do mojego laptopa (Lenovo T430S) przez mój port mini-wyświetlacza. Witryna archlinux podała słodką i krótką odpowiedź na reset lub ustawienie domyślne:

  • zaloguj się i zmień domyślne wyjście na analogowe

  • Biegać

    $ aplay -l

i znajdź, że analog jest kartą 0

  • Biegać

    Lista $ pacmd

i znajdź linię:

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

„output: analog-stereo + input: analog-stereo” to nazwa mojego profilu, więc dodaj

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

w /etc/pulse/default.pa i zapisz

  • uruchom ponownie pulseaudio
użytkownik235147
źródło
2

Przykładowy format używany w interfejsie między aplikacjami a PulseAudio nie zawsze jest bezpośrednio związany z przykładowym formatem używanym przez PulseAudio do uzyskiwania dostępu do urządzenia sprzętowego.

S24_3LEnie jest jednym z obsługiwanych formatów aplikacji PulseAudio (jak pokazano na aplaywydruku). Aby umożliwić aplikacjom o tak nietypowych formatach działanie z PulseAudio, dodaj wtyczkę, która wykonuje automatyczną konwersję formatu, jeśli jest to konieczne dla domyślnego urządzenia PCM w twoim .asoundrc:

pcm.!default {
    type linear
    slave.pcm pulse
}
CL.
źródło
Dziękuję za pomoc, ale obawiam się, że nic to nie zmieniło. Nawet po dodaniu tego do mojego .asoundrc, mplayernadal próbkuje dźwięk w dół do 16 bitów (tzn. Wyjście wygląda tak samo jak ten zamieszczony w moim pytaniu) i /proc/asound/card1/stream0nadal pokazuje nieprawidłowy zastosowany zestaw wysokości. Jeśli tak naprawdę był problem z formatami obsługiwanymi przez PA, nie należy mplayerpróbkować z dźwiękiem nawet przy określaniu urządzenia ALSA, ponieważ nadal używa Pulseaudio?
tnt
Czy aplaydziała teraz? To wydaje się być błędem mplayer.
CL.
Nie, aplaynadal nie działa z tym samym wyjściem. Zauważyłem teraz, że ustawiając default-sample-format = s24-32lemoje .pulse/daemon.conf, mogę zmusić PA do używania właściwego urządzenia wyjściowego. Jednak mplayernadal próbkuje dźwięk i aplaynadal nie działa przy próbie odtworzenia 24-bitowego pliku audio, więc myślę, że to też nie pomaga.
tnt
2

Krótkie obejście, które znalazłem za pomocą Lubuntu Trusty Tahr z moim Fiio E17 podłączonym przez USB: Zastanawiałem się również o przepływności, dlatego znalazłem te posty tutaj. Ale ponieważ słucham muzyki na raczej starym Netbooku, nie chciałem domyślnie ustawiać jej na 96/24 (procesor nie jest najszybszy). Jednak działało dla mnie użycie VLC i określenie w ustawieniach audio eksperta aby użyć modułu ALSA jako wyjścia, a następnie użyj następującego urządzenia wyjściowego: „Fiio USB DAC-E17, urządzenie sprzętowe USB Audio Direct bez konwersji”

W ten sposób mogłem wyprowadzić dźwięk 96/24 do Fiio przez USB, kiedy chciałem (pokazuje również na małym ekranie Fiio) - i nie musiałem zmieniać czegoś bardziej podstawowego w systemie operacyjnym. Gracze tacy jak zuchwały lub przeglądarki nadal używają domyślnego wyjścia pulseaudio. Czasami VLC mówi, że urządzenie jest już używane - a następnie po prostu zamknij inne oprogramowanie, takie jak audacious, które używa np. Wyjścia pulseaudio i powinno działać.

pozdrowienia, Andi

I ja
źródło
Zobacz także: askubuntu.com/questions/334626/…
landroni
1

Oto poprawna odpowiedź na to pytanie:

Z ArchWiki

Określ urządzenie ALSA, którego chcesz użyć. Następnie dodaj to do pliku default.pa. (Zmień 0,0 w zależności od urządzenia.)

load-module module-alsa-sink device=hw:0,0
Hydranix
źródło
1

Dodanie load-module module-alsa-source device=hw:1,0do /etc/pulse/default.pajest poprawnym podejściem. Należy jednak zwolnić następujące moduły, aby uniknąć konfliktów urządzeń ( initialization failedwystąpił błąd):

  • moduł-udev-detekcja
  • wykrywanie modułów

Przyjrzyj się uważnie /etc/pulse/default.pai usuń linie zawierające te moduły. Ponadto w tym przypadku urządzenia nie mogą zostać automatycznie wykryte, więc chcesz załadować, module-alsa-sinkaby ręcznie określić również zlew.

Huan Zhang
źródło
Czy odtwarzanie (ujście) wykryłoby konflikt, gdyby ręcznie ładowano tylko urządzenia przechwytujące (źródłowe)?
Lucas