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 mplayer
napotkał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 aplay
pokazuje 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/stream0
Potwierdza 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.wav
dział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,0
do /etc/pulse/default.pa
wynikó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:
- Dane wyjściowe
aplay -L
- Dane wyjściowe
aplay -l
- Dane wyjściowe
pacmd list-sinks
- I na koniec, jeśli jest to istotne, mój .asoundrc
źródło
mplayer
iaplay
?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
iaplay -Dhw:1,0 sr003-02-2496.wav
używam właściwego urządzenia, jeśli o to pytasz.aplay sr003-02-2496.wav
implayer sr003-02-2496.wav
. I tak, chciałbym użyć PulseAudio, jeśli to możliwe.Odpowiedzi:
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, dodajao=pulse
do~/.mplayer/config
.źródło
pacmd set-default-sink
pozwala mi tylko ustawić jeden z wymienionych zlewówpacmd 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 mojegodefault.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?paplay
wydaje mi się , że nie lubię moich plików audio :) Odtwarzanie pliku 24-bitowego prowadzi do usterkiCode 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 .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ę:
„output: analog-stereo + input: analog-stereo” to nazwa mojego profilu, więc dodaj
w /etc/pulse/default.pa i zapisz
źródło
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_3LE
nie jest jednym z obsługiwanych formatów aplikacji PulseAudio (jak pokazano naaplay
wydruku). 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
:źródło
.asoundrc
,mplayer
nadal 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/stream0
nadal pokazuje nieprawidłowy zastosowany zestaw wysokości. Jeśli tak naprawdę był problem z formatami obsługiwanymi przez PA, nie należymplayer
próbkować z dźwiękiem nawet przy określaniu urządzenia ALSA, ponieważ nadal używa Pulseaudio?aplay
działa teraz? To wydaje się być błędemmplayer
.aplay
nadal nie działa z tym samym wyjściem. Zauważyłem teraz, że ustawiającdefault-sample-format = s24-32le
moje.pulse/daemon.conf
, mogę zmusić PA do używania właściwego urządzenia wyjściowego. Jednakmplayer
nadal próbkuje dźwięk iaplay
nadal nie działa przy próbie odtworzenia 24-bitowego pliku audio, więc myślę, że to też nie pomaga.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
źródło
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.)
źródło
Dodanie
load-module module-alsa-source device=hw:1,0
do/etc/pulse/default.pa
jest poprawnym podejściem. Należy jednak zwolnić następujące moduły, aby uniknąć konfliktów urządzeń (initialization failed
wystąpił błąd):Przyjrzyj się uważnie
/etc/pulse/default.pa
i 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-sink
aby ręcznie określić również zlew.źródło