Đặt thiết bị ALSA mặc định cho Pulseaudio


8

Gần đây tôi đã có một soundcard / DAC bên ngoài (Fiio E17) và hiện đang cố gắng định cấu hình chính xác nó trên bản cài đặt Ubuntu 12.04 của tôi. Khi cắm nó qua USB, nó ngay lập tức được nhận ra và hiển thị dưới dạng một thiết bị mới trong cài đặt âm thanh. Phát lại cũng hoạt động tốt (ngoại trừ một số vấn đề nhỏ liên quan đến khối lượng, nằm ngoài phạm vi của câu hỏi này).

Tuy nhiên, khi thử kiểm tra phát lại 24 bit / 96 kHz bằng cách phát một tệp âm thanh như vậy mplayer, tôi đã gặp một vấn đề nhỏ:

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)

Như có thể thấy từ đầu ra, mặc dù tệp đã phát không chứa âm thanh 24 bit / 96 kHz, nhưng nó được ghép lại thành 16 bit trước khi phát lại. Chơi cùng một tệp với aplaycho thấy lý do:

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

Tuy nhiên, /proc/asound/card1/stream0xác nhận rằng phần cứng không hỗ trợ 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

Tại thời điểm này, tôi nhận thấy rằng trong tab phần cứng của cài đặt âm thanh, tôi có thể chọn hai cấu hình khác nhau cho card âm thanh: Digital Stereo (IEC958) và Analog Stereo. Chuyển đổi giữa hai điều này không dẫn đến bất kỳ thay đổi nào, theo như tôi có thể nói.

Việc chỉ định thiết bị ALSA sẽ giúp ích (nghĩa là, aplay -Dhw:1,0 sr003-02-2496.wavchỉ hoạt động tốt và phát tệp mà không cần lấy mẫu lại). Nhưng vì Pulseaudio chỉ hiển thị một thiết bị Fiio / chìm trong cài đặt âm thanh, tôi không chắc chắn làm thế nào tôi bảo Pulseaudio sử dụng thiết bị ALSA hw:1,0. Thêm load-module module-alsa-source device=hw:1,0vào /etc/pulse/default.pakết quả trong Pulseaudio hủy bỏ module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.trong khi khởi động.

Vì vậy, đó là phần giới thiệu, đây là câu hỏi thực tế của tôi :

  • Làm cách nào để tìm ra thiết bị ALSA Pulseaudio thực sự sử dụng khi tôi chọn Fiio E17 trong cài đặt âm thanh?
  • Làm cách nào để tôi bảo Pulseaudio sử dụng thiết bị ALSA hw: 1,0 khi chọn Fiio E17 trong cài đặt âm thanh của tôi?

Một số thông tin gỡ lỗi (hy vọng hữu ích):


Các dòng lệnh mplayervà là aplaygì?
CL.

@CL. Tôi chạy mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wavaplay -Dhw:1,0 sr003-02-2496.wavsử dụng đúng thiết bị, nếu đó là những gì bạn đang hỏi.
tmnt

Tôi đã hỏi về các cuộc gọi không hoạt động. Và bạn có muốn sử dụng PulseAudio hay không?
CL.

@CL. À, xin lỗi, đó chỉ là những cuộc gọi thông thường mà không có bất kỳ cờ nào, đó là aplay sr003-02-2496.wavmplayer sr003-02-2496.wav. Và vâng, tôi muốn sử dụng PulseAudio nếu có thể.
tmnt

Câu trả lời:


8

Trả lời hai câu hỏi:

Bạn có thể chọn thiết bị mặc định trong PulseAudio với GUI như điều khiển âm lượng Gnome, pavucontrol hoặc từ dòng lệnh bằng cách sử dụng pacmd set-default-sink.

Theo mặc định, PulseAudio mở các thiết bị ở mức 44,1 kHz hoặc 48 kHz, tùy theo điều này dẫn đến nỗ lực tái định hình thấp hơn (vì vậy âm thanh 96 kHz thường sẽ dẫn đến thiết bị được mở ở 48 kHz. Ngoài ra, chúng tôi mở các thiết bị cho S16LE theo mặc định.

Bây giờ, bạn có hai lựa chọn. Nếu bạn chỉ muốn chơi một vài tệp ở định dạng gốc của chúng, paplay --passthrough <file>nên thực hiện công việc cho bạn. Bạn thậm chí có thể chỉ định thiết bị nào sẽ sử dụng.

Tùy chọn khác là làm cho PA trên toàn cầu sử dụng 96/24. Bạn có thể thay đổi điều đó trong /etc/pulse/default.conf( alternate-sample-rate = 96000, default-sample-format=s24-32le). Điều này sẽ dẫn đến việc sử dụng CPU lớn hơn, mặc dù. Đây là một tình huống ngớ ngẩn, phải áp dụng cấu hình toàn cầu cho tất cả các thiết bị. Chúng tôi đang lên kế hoạch để thêm cấu hình cho mỗi thiết bị tại một số điểm.

Lưu ý, sau này, bạn chỉ nên sử dụng phụ trợ PulseAudio của mplayer thay vì nói chuyện với mplayer với ALSA và sau đó ALSA với PulseAudio. Bạn có thể làm điều đó với mplayer -ao pulse ...và nếu bạn muốn thiết lập nó vĩnh viễn, hãy thêm ao=pulsevào ~/.mplayer/config.


Cảm ơn rất nhiều vì sự giúp đỡ của bạn! mặc dù pacmd set-default-sinkchỉ cho phép tôi thiết lập một trong những bồn rửa được liệt kê pacmd list-sinks, phải không? Mặc dù tôi đoán phần thứ hai trong câu trả lời của bạn khiến câu hỏi đó không còn nữa;) Vậy nếu tôi hiểu bạn một cách chính xác, Pulseaudio không hỗ trợ tự động chuyển đổi giữa 24 và 16 bit? Sau khi thay đổi my default.conf, mplayer dường như vẫn lấy mẫu lại mọi thứ thành 16 bit trước khi chuyển nó thành xung mặc dù ( xem ở đây ), đó là vì CL. mô tả trong câu trả lời của mình?
tmnt

Ồ, và paplaydường như không thích các tệp âm thanh của tôi :) Phát tệp 24 bit dẫn đến một segfault với Code should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.và phát tệp 32 bit thậm chí làm hỏng Pulseaudio .
tmnt

4

Sau khi cập nhật lên 13.10 Pulseaudio mặc định là HDMI, có lẽ vì tôi có một màn hình phụ được gắn vào máy tính xách tay của tôi (Lenovo T430S) thông qua cổng màn hình mini của tôi. Các trang web archlinux cung cấp một câu trả lời ngọt ngào và ngắn để thiết lập lại hoặc thiết lập mặc định:

  • đăng nhập và thay đổi đầu ra mặc định thành analog

  • Chạy

    $ aplay -l

và thấy rằng tương tự là thẻ 0

  • Chạy

    danh sách $ pacmd

và tìm dòng:

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

"đầu ra: analog-stereo + input: analog-stereo" là tên hồ sơ của tôi, vì vậy hãy thêm

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

trong /etc/pulse/default.pa và lưu

  • khởi động lại pulseaudio

2

Định dạng mẫu được sử dụng trong giao diện giữa các ứng dụng và PulseAudio không phải lúc nào cũng liên quan trực tiếp với định dạng mẫu mà PulseAudio sử dụng để truy cập vào thiết bị phần cứng.

S24_3LEkhông phải là một trong những định dạng ứng dụng được hỗ trợ của PulseAudio (như được hiển thị trong aplayđầu ra). Để cho phép các ứng dụng có định dạng bất thường như vậy chạy với PulseAudio, hãy thêm một plugin thực hiện chuyển đổi định dạng tự động nếu cần thiết bị PCM mặc định trong .asoundrc:

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

Cảm ơn sự giúp đỡ của bạn, nhưng tôi sợ điều này không thay đổi bất cứ điều gì. Ngay cả sau khi thêm phần này vào .asoundrc, tôi mplayervẫn hạ âm thanh xuống 16 bit (nghĩa là đầu ra trông giống như phần được đăng trong câu hỏi của tôi) và /proc/asound/card1/stream0vẫn hiển thị sai altset đang được sử dụng. Nếu đó thực sự là một vấn đề với các định dạng được hỗ trợ của PA, thì không nên mplayergiảm âm thanh ngay cả khi chỉ định thiết bị ALSA, vì nó vẫn sử dụng Pulseaudio?
tmnt

aplaylàm việc bây giờ không? Điều này dường như là một lỗi trong mplayer.
CL.

Không, aplayvẫn thất bại với cùng một đầu ra. Tôi đã nhận thấy bây giờ mà bằng cách thiết lập default-sample-format = s24-32letrong tôi .pulse/daemon.conftôi có thể buộc PA sử dụng thiết bị đầu ra chính xác. Tuy nhiên, mplayervẫn thay đổi âm thanh và aplayvẫn thất bại khi thử phát tệp âm thanh 24 bit, vì vậy tôi đoán điều này cũng không giúp được gì.
tmnt

2

Chỉ là một cách giải quyết nhanh mà tôi phát hiện ra khi sử dụng LubFi Trusty Tahr với Fiio E17 của tôi được kết nối qua USB: Tôi cũng đang tự hỏi về bitrate, đó là lý do tại sao tôi tìm thấy bài đăng này ở đây. Nhưng vì tôi nghe nhạc trên Netbook khá cũ, tôi không muốn đặt nó thành 96/24 theo mặc định (cpu không phải là nhanh nhất) Tuy nhiên, điều làm việc với tôi là sử dụng VLC và chỉ định trong cài đặt âm thanh chuyên gia để sử dụng mô-đun ALSA cho đầu ra, sau đó sử dụng thiết bị đầu ra sau: "Fiio USB DAC-E17, thiết bị phần cứng USB Audio Direct mà không có bất kỳ chuyển đổi nào"

Bằng cách này, tôi có thể phát âm thanh 96/24 sang Fiio qua USB khi tôi muốn (cũng hiển thị trên màn hình nhỏ của Fiio) - và tôi không phải thay đổi thứ gì đó cơ bản hơn trong HĐH. Người chơi thích táo bạo hoặc trình duyệt vẫn sử dụng đầu ra pulseaudio mặc định. Đôi khi VLC nói rằng thiết bị đã được sử dụng - sau đó chỉ cần đóng bất kỳ phần mềm nào khác như táo bạo, đó là sử dụng ví dụ như đầu ra pulseaudio và nó sẽ hoạt động.

liên quan, Andi



1

Đây là câu trả lời chính xác cho câu hỏi này:

Từ ArchWiki

Xác định thiết bị ALSA hw bạn muốn sử dụng. Sau đó thêm nó vào tập tin default.pa của bạn. (Thay đổi 0,0 cho phù hợp với thiết bị của bạn.)

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

1

Thêm load-module module-alsa-source device=hw:1,0vào /etc/pulse/default.palà cách tiếp cận chính xác. Tuy nhiên, các mô-đun sau phải được dỡ tải để tránh xung đột thiết bị ( initialization failedlỗi bạn gặp phải):

  • mô-đun-udev-phát hiện
  • phát hiện mô-đun

Hãy xem xét cẩn thận /etc/pulse/default.pavà loại bỏ các dòng chứa các mô-đun. Ngoài ra, trong trường hợp này, các thiết bị không thể được tự động phát hiện, vì vậy bạn cũng muốn tải module-alsa-sinkđể chỉ định một cách chìm theo cách thủ công.


Sẽ có một phát hiện xung đột (chìm) nếu chỉ các thiết bị chụp (nguồn) được tải thủ công?
Lucas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.