Baru-baru ini saya mendapatkan kartu suara eksternal / DAC (Fiio E17) dan saat ini saya mencoba untuk mengkonfigurasi dengan benar pada instalasi Ubuntu 12.04 saya. Ketika menghubungkannya melalui USB, itu langsung dikenali dan muncul sebagai perangkat baru dalam pengaturan audio. Pemutaran juga berfungsi dengan baik (kecuali untuk beberapa masalah kecil terkait volume, yang berada di luar cakupan pertanyaan ini).
Namun, ketika mencoba menguji pemutaran 24 bit / 96 kHz dengan memutar file audio seperti itu mplayer
, saya mengalami masalah kecil:
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)
Seperti yang dapat dilihat dari output, walaupun file yang diputar memang mengandung audio 24 bit / 96 kHz, file tersebut di-resampled menjadi 16 bit sebelum diputar. Memainkan file yang sama dengan aplay
menunjukkan alasannya:
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
Namun, /proc/asound/card1/stream0
mengonfirmasi bahwa perangkat keras memang mendukung 24 bit:
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
Pada titik ini saya perhatikan bahwa pada tab perangkat keras pengaturan suara, saya dapat memilih dua profil berbeda untuk kartu suara: Digital Stereo (IEC958) dan Analog Stereo. Beralih di antara keduanya tidak menghasilkan perubahan apa pun, sejauh yang saya tahu.
Menentukan perangkat ALSA memang membantu (yaitu, aplay -Dhw:1,0 sr003-02-2496.wav
berfungsi dengan baik dan memutar file tanpa resampling). Tetapi karena Pulseaudio hanya menunjukkan satu perangkat Fiio / tenggelam dalam pengaturan suara, saya tidak yakin bagaimana saya akan memberitahu Pulseaudio untuk menggunakan perangkat ALSA hw:1,0
. Menambahkan load-module module-alsa-source device=hw:1,0
untuk /etc/pulse/default.pa
hasil di PulseAudio batal dengan module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.
saat startup.
Jadi, itulah pengantar, inilah pertanyaan aktual saya :
- Bagaimana cara mengetahui perangkat ALSA yang sebenarnya digunakan Pulseaudio saat saya memilih Fiio E17 dalam pengaturan suara?
- Bagaimana cara saya memberi tahu Pulseaudio untuk menggunakan perangkat ALSA hw: 1,0 ketika memilih Fiio E17 dalam pengaturan suara saya?
Beberapa informasi debug (semoga bermanfaat):
- Output dari
aplay -L
- Output dari
aplay -l
- Output dari
pacmd list-sinks
- Dan akhirnya, jika itu relevan, .asoundrc saya
sumber
mplayer
danaplay
baris perintah?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
danaplay -Dhw:1,0 sr003-02-2496.wav
menggunakan perangkat yang benar, jika itu yang Anda minta.aplay sr003-02-2496.wav
danmplayer sr003-02-2496.wav
. Dan ya, saya ingin menggunakan PulseAudio jika memungkinkan.Jawaban:
Menjawab dua pertanyaan:
Anda dapat memilih perangkat default di PulseAudio dengan GUI seperti kontrol volume GNOME, pavucontrol, atau dari baris perintah menggunakan
pacmd set-default-sink
.Secara default, PulseAudio membuka perangkat dengan frekuensi 44,1 kHz atau 48 kHz, yang mana yang menyebabkan upaya resampling yang lebih rendah (jadi audio 96 kHz biasanya akan menyebabkan perangkat dibuka pada 48 kHz. Selain itu, kami membuka perangkat untuk S16LE secara default.
Sekarang, Anda memiliki dua opsi. Jika Anda hanya ingin memutar beberapa file dalam format asli mereka,
paplay --passthrough <file>
lakukan pekerjaan itu untuk Anda. Anda bahkan dapat menentukan perangkat mana yang digunakan.Opsi lainnya adalah membuat PA menggunakan 96/24 secara global. Anda dapat mengubahnya di
/etc/pulse/default.conf
(alternate-sample-rate = 96000
,default-sample-format=s24-32le
). Ini akan menyebabkan penggunaan CPU yang lebih besar. Ini adalah situasi yang konyol, harus menerapkan konfigurasi global untuk semua perangkat. Kami berencana untuk menambahkan konfigurasi per perangkat di beberapa titik.Catatan, setelah ini, Anda hanya harus menggunakan backend mplayer PulseAudio daripada meminta mplayer berbicara dengan ALSA dan kemudian ALSA ke PulseAudio. Anda dapat melakukannya dengan
mplayer -ao pulse ...
dan jika Anda ingin mengaturnya secara permanen, tambahkanao=pulse
ke~/.mplayer/config
.sumber
pacmd set-default-sink
hanya memungkinkan saya mengatur salah satu wastafel yang terdaftarpacmd list-sinks
, kan? Meskipun saya kira bagian kedua dari jawaban Anda membuat pertanyaan itu masih bisa diperdebatkan;) Jadi jika saya mengerti Anda dengan benar, Pulseaudio tidak mendukung perpindahan dinamis antara 24 dan 16 bit? Setelah mengubah sayadefault.conf
, mplayer tampaknya masih mencoba ulang semuanya menjadi 16 bit sebelum menyerahkannya ke pulsa ( lihat di sini ), apakah itu karena apa yang CL. jelaskan dalam jawabannya?paplay
sepertinya tidak suka file audio saya :) Memutar file 24 bit mengarah ke segfaultCode should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.
, dan memainkan file 32bit bahkan membuat crash Pulseaudio .Setelah pembaruan ke 13.10 Pulseaudio default ke HDMI, mungkin karena saya memiliki monitor tambahan yang terpasang pada laptop saya (Lenovo T430S) melalui port mini-display saya. Situs web archlinux memberikan jawaban yang manis dan singkat untuk mengatur ulang atau mengatur default:
masuk dan ubah output default menjadi analog
Lari
$ aplay -l
dan menemukan bahwa analog adalah kartu 0
Lari
daftar $ pacmd
dan temukan garis:
"output: analog-stereo + input: analog-stereo" adalah nama profil saya, jadi tambahkan
di /etc/pulse/default.pa dan simpan
sumber
Format sampel yang digunakan dalam antarmuka antara aplikasi dan PulseAudio tidak selalu terkait langsung dengan format sampel yang digunakan PulseAudio untuk mengakses perangkat perangkat keras.
S24_3LE
bukan salah satu format aplikasi yang didukung PulseAudio (seperti yang ditunjukkan dalamaplay
output). Untuk memungkinkan aplikasi dengan format yang tidak biasa dijalankan dengan PulseAudio, tambahkan plugin yang melakukan konversi format otomatis jika perlu untuk perangkat PCM default di.asoundrc
:sumber
.asoundrc
,mplayer
masih menurunkan audio ke 16 bit (yaitu output terlihat sama dengan yang diposting dalam pertanyaan saya) dan/proc/asound/card1/stream0
masih menunjukkan altset yang salah digunakan. Jika itu benar-benar masalah dengan format yang didukung PA, tidak bolehmplayer
mengurangi audio bahkan ketika menentukan perangkat ALSA, karena masih menggunakan Pulseaudio?aplay
berhasil sekarang? Tampaknya ini adalah bug dimplayer
.aplay
masih gagal dengan output yang sama. Saya perhatikan sekarang bahwa dengan mengaturdefault-sample-format = s24-32le
di saya,.pulse/daemon.conf
saya dapat memaksa PA untuk menggunakan perangkat output yang benar. Namun,mplayer
masih mengubah sampel audio, danaplay
masih gagal ketika mencoba memutar file audio 24 bit, jadi saya kira ini tidak membantu juga.Hanya solusi cepat yang saya temukan menggunakan Lubuntu Trusty Tahr dengan Fiio E17 saya terhubung melalui USB: Saya juga bertanya-tanya tentang bitrate, itu sebabnya saya menemukan posting ini di sini. Tapi karena saya mendengarkan musik di Netbook yang agak lama, saya tidak ingin mengaturnya ke 96/24 secara default (cpu bukan yang tercepat) Namun, yang berhasil bagi saya adalah menggunakan VLC, dan menentukan dalam pengaturan audio ahli untuk menggunakan modul ALSA untuk output, dan kemudian menggunakan perangkat output berikut: "Fiio USB DAC-E17, perangkat perangkat keras USB Audio Direct tanpa konversi apa pun"
Dengan cara ini, saya dapat mengeluarkan suara 96/24 ke Fiio melalui USB ketika saya inginkan (juga ditampilkan di layar kecil Fiio) - dan saya tidak perlu mengubah sesuatu yang lebih mendasar di OS. Pemain suka audacious atau browser masih menggunakan output default pulseaudio. Kadang-kadang VLC mengatakan bahwa perangkat tersebut sudah digunakan - kemudian tutup saja perangkat lunak lain seperti audacious, yang menggunakan misalnya keluaran pulseaudio, dan itu seharusnya berfungsi.
salam, Andi
sumber
Inilah jawaban yang benar untuk pertanyaan ini:
Dari ArchWiki
Tentukan perangkat ALSA hw yang ingin Anda gunakan. Kemudian tambahkan ini ke file default.pa Anda. (Ubah 0,0 agar sesuai dengan perangkat Anda.)
sumber
Menambahkan
load-module module-alsa-source device=hw:1,0
untuk/etc/pulse/default.pa
adalah pendekatan yang benar. Namun, modul berikut harus dibongkar untuk menghindari konflik perangkat (initialization failed
kesalahan yang Anda dapatkan):Perhatikan baik-baik Anda
/etc/pulse/default.pa
dan hapus baris yang berisi modul-modul itu. Juga, dalam hal ini perangkat tidak dapat dideteksi secara otomatis, jadi Anda ingin memuatmodule-alsa-sink
untuk menentukan wastafel secara manual juga.sumber