การตั้งค่าอุปกรณ์ ALSA เริ่มต้นสำหรับ Pulseaudio


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 บิต / 96 กิโลเฮิร์ตซ์ แต่ก็มีการปรับเป็น 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ผลลัพธ์ใน Pulseaudio ยกเลิกmodule.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.ในระหว่างการเริ่มต้น

ดังนั้นนี่คือการแนะนำนี่คือคำถามจริงของฉัน:

  • ฉันจะทราบได้อย่างไรว่าอุปกรณ์ใดของ Pulsaudio ที่ใช้งานจริงเมื่อฉันเลือก Fiio E17 ในการตั้งค่าเสียง
  • ฉันจะบอก Pulseaudio ให้ใช้อุปกรณ์ ALSA ได้อย่างไร: 1,0 เมื่อเลือก Fiio E17 ในการตั้งค่าเสียงของฉัน

ข้อมูลการแก้ไขข้อบกพร่อง (หวังว่ามีประโยชน์) เพิ่มเติม:


สิ่งที่เป็นmplayerและaplayบรรทัดคำสั่ง?
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

ตอบคำถามสองข้อ:

คุณสามารถเลือกอุปกรณ์เริ่มต้นใน PulseAudio กับ GUI เช่นการควบคุมปริมาณ GNOME, pavucontrol pacmd set-default-sinkหรือจากบรรทัดคำสั่งโดยใช้

ตามค่าเริ่มต้น PulseAudio จะเปิดอุปกรณ์สำหรับ 44.1 kHz หรือ 48 kHz แล้วแต่จำนวนใดจะทำให้เกิดความพยายามในการ resampling ต่ำกว่า (โดยปกติแล้วเสียง 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 ที่มากขึ้น นี่เป็นสถานการณ์ที่ค่อนข้างงี่เง่าต้องใช้การกำหนดค่าทั่วโลกสำหรับอุปกรณ์ทั้งหมด เรากำลังวางแผนที่จะเพิ่มการกำหนดค่าอุปกรณ์ต่อในบางจุด

หมายเหตุหลังจากนี้คุณควรใช้แบ็คเอนด์ PulseAudio ของ mplayer แทนที่จะต้องคุยกับ ALSA จากนั้น ALSA ไปที่ PulseAudio คุณสามารถทำได้ด้วยmplayer -ao pulse ...และถ้าคุณต้องการที่จะตั้งขึ้นอย่างถาวรเพิ่มการao=pulse~/.mplayer/config


ขอบคุณมากสำหรับความช่วยเหลือของคุณ! pacmd set-default-sinkให้ฉันตั้งอ่างล้างมือที่แสดงรายการโดยpacmd list-sinksใช่มั้ย แม้ว่าฉันเดาว่าส่วนที่สองของคำตอบของคุณทำให้คำถามนั้นเป็นที่สงสัยอย่างไรก็ตาม) ถ้าฉันเข้าใจคุณอย่างถูกต้อง Pulseaudio ไม่สนับสนุนการสลับระหว่าง 24 และ 16 บิตแบบไดนามิกหรือไม่ หลังจากเปลี่ยนของฉันdefault.confแล้ว mplayer ก็ยังคงสุ่มตัวอย่างทุกอย่างเป็น 16 บิตก่อนที่จะส่งมันให้ชีพจรแม้ว่า ( ดูที่นี่ ) นั่นเป็นเพราะ CL อะไร อธิบายในคำตอบของเขา?
tmnt

Oh, และpaplayดูเหมือนจะไม่เหมือนไฟล์เสียงของฉัน :) เล่นนำไปสู่ไฟล์ 24 บิตเพื่อ segfault ด้วยCode should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.และการเล่นไฟล์ 32bit แม้เกิดปัญหา PulseAudio
tmnt

4

หลังจากอัปเดตเป็น 13.10 Pulseaudio ที่เป็นค่าเริ่มต้นเป็น HDMI อาจเป็นเพราะฉันมีจอภาพพิเศษที่ต่ออยู่กับแล็ปท็อป (Lenovo T430S) ผ่านพอร์ต mini-display ของฉัน เว็บไซต์ ArchLinuxให้คำตอบที่หวานและระยะสั้นที่จะตั้งค่าหรือตั้งค่าเริ่มต้น:

  • เข้าสู่ระบบและเปลี่ยนเอาต์พุตเริ่มต้นเป็นอนาล็อก

  • วิ่ง

    $ aplay -l

และพบว่าอะนาล็อกคือการ์ด 0

  • วิ่ง

    $ pacmd รายการ

และค้นหาบรรทัด:

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

"output: analog-stereo + input: analog-stereo" เป็นชื่อโปรไฟล์ของฉันดังนั้นเพิ่ม

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

ใน /etc/pulse/default.pa และบันทึก

  • รีสตาร์ท pulseaudio

2

รูปแบบตัวอย่างที่ใช้ในอินเทอร์เฟซระหว่างแอปพลิเคชันและ PulseAudio ไม่เกี่ยวข้องโดยตรงกับรูปแบบตัวอย่างที่ PulseAudio ใช้ในการเข้าถึงอุปกรณ์ฮาร์ดแวร์

S24_3LEไม่ใช่หนึ่งในรูปแบบแอพพลิเคชั่นที่รองรับของ PulseAudio (ดังที่แสดงในaplayผลลัพธ์) ในการอนุญาตให้แอปพลิเคชันที่มีรูปแบบที่ผิดปกติดังกล่าวสามารถทำงานกับ PulseAudio ได้ให้เพิ่มปลั๊กอินที่ทำการแปลงรูปแบบอัตโนมัติหากต้องการอุปกรณ์ PCM เริ่มต้นใน.asoundrc:

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

ขอบคุณสำหรับความช่วยเหลือของคุณ แต่ฉันเกรงว่าสิ่งนี้จะไม่เปลี่ยนแปลงอะไรเลย แม้หลังจากเพิ่มสิ่งนี้ลงในของฉัน.asoundrcแล้วmplayerก็ยังลดเสียงตัวอย่างเป็น 16 บิต (เช่นเอาต์พุตดูเหมือนกับที่โพสต์ในคำถามของฉัน) และ/proc/asound/card1/stream0ยังคงแสดง altset ผิดที่ใช้อยู่ หากเป็นปัญหากับฟอร์แมทที่รองรับของ PA ไม่ควรจะลองmplayerตัวอย่างเสียงแม้แต่ตอนที่ระบุอุปกรณ์ ALSA เพราะมันยังใช้ Pulseaudio อยู่
tmnt

ไม่aplayทำงานในขณะนี้? mplayerนี้ดูเหมือนจะเป็นข้อผิดพลาดใน
CL

ไม่aplayยังคงล้มเหลวด้วยเอาต์พุตเดียวกัน ฉันสังเกตเห็นว่าการตั้งค่าdefault-sample-format = s24-32leใน.pulse/daemon.confฉันสามารถบังคับ PA ให้ใช้อุปกรณ์เอาต์พุตที่ถูกต้องได้ อย่างไรก็ตามmplayerยังคงเรียกคืนเสียงอีกครั้งและaplayยังล้มเหลวเมื่อพยายามเล่นไฟล์เสียง 24 บิตดังนั้นฉันเดาว่านี่จะไม่ช่วยอะไรเช่นกัน
tmnt

2

เป็นวิธีแก้ปัญหาอย่างรวดเร็วที่ฉันพบโดยใช้ Lubuntu Trusty Tahr กับ Fiio E17 ที่เชื่อมต่อผ่าน USB: ฉันยังสงสัยเกี่ยวกับบิตเรตนั่นคือเหตุผลที่ฉันพบบทความนี้ที่นี่ แต่เนื่องจากฉันฟังเพลงบนเน็ตบุ๊กที่ค่อนข้างเก่าฉันไม่ต้องการตั้งเป็น 96/24 โดยค่าเริ่มต้น (cpu ไม่ใช่วิธีที่เร็วที่สุด) อย่างไรก็ตามสิ่งที่ใช้ได้ผลสำหรับฉันคือใช้ VLC และระบุในการตั้งค่าเสียงผู้เชี่ยวชาญ การใช้โมดูล ALSA สำหรับเอาท์พุทแล้วใช้อุปกรณ์ส่งออกต่อไปนี้: "Fiio USB DAC-E17, อุปกรณ์ฮาร์ดแวร์ USB Audio Direct โดยไม่มีการแปลง"

ด้วยวิธีนี้ฉันสามารถส่งสัญญาณเสียง 96/24 ไปยัง Fiio ผ่าน USB เมื่อฉันต้องการ (แสดงบนหน้าจอเล็ก ๆ ของ Fiio) - และฉันไม่ต้องเปลี่ยนอะไรที่เป็นพื้นฐานในระบบปฏิบัติการ ผู้เล่นอย่างกล้าหาญหรือเบราว์เซอร์ยังคงใช้เอาต์พุต pulseaudio เริ่มต้น บางครั้ง VLC บอกว่าอุปกรณ์นั้นถูกใช้งานอยู่ - จากนั้นก็ปิดซอฟต์แวร์อื่น ๆ อย่างกล้าหาญที่ใช้งานเช่นเอาท์พุท pulseaudio และมันควรจะทำงาน

ขอแสดงความนับถือ Andi


ดูเพิ่มเติมที่: askubuntu.com/questions/334626/…
landroni

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 ตรวจพบ
  • โมดูลตรวจสอบ

ระวังของคุณ/etc/pulse/default.paและลบบรรทัดที่มีโมดูลเหล่านั้น นอกจากนี้ในกรณีนี้อุปกรณ์ไม่สามารถตรวจพบได้โดยอัตโนมัติดังนั้นคุณต้องการโหลดmodule-alsa-sinkเพื่อระบุ sink ด้วยตนเองเช่นกัน


จะมีข้อขัดแย้งในการตรวจจับการเล่น (ซิงค์) หรือไม่ถ้าอุปกรณ์การจับภาพ (ต้นฉบับ) ถูกโหลดด้วยตนเองเท่านั้น?
ลูคัส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.