Puncte:1

Comutarea dispozitivelor audio întrerupe ieșirea audio optică

drapel kr

Încerc să comut rapid între ieșirea audio a căștilor mele și difuzoarele mele. Ambele sunt conectate la placa mea de bază, care are un Ieșire linie si a Ieșire audio optică linia. În mod ideal, aș dori să fac acest lucru prin două comenzi, astfel încât să le pot adăuga ca macrocomenzi/ taste rapide.

  • Difuzoare -> Audio optic
  • Căști -> Line Out

Pot realiza trecerea de la difuzoare la căști folosind Setări > Sunet > Ieșire meniu unde listează cu succes cele 4 opțiuni audio pe care le-am conectat, dintre care celelalte două sunt conexiuni DP/HDMI prin placa grafică. Dacă încerc să trec din nou la difuzoarele mele din căști, nu se iese sunet. Am o „soluție de soluție” în care întrerup tot sunetul, trec la una dintre ieșirile plăcii grafice, aștept 5 secunde, trec la difuzoare, aștept 5 secunde, apoi redau muzică și asta a remediat până acum problema în mod fiabil.

Am încercat să folosesc pactl pentru a schimba ieșirile, ceea ce am crezut că ar fi chiuvete, dar am doar două chiuvete disponibile:

â ~ lista pactl este scurtă
55 alsa_output.pci-0000_2d_00.4.iec958-stereo PipeWire s32le 2ch 48000Hz RUNNING
52 alsa_output.pci-0000_2b_00.1.hdmi-stereo-extra1 PipeWire s16le 2ch 48000Hz SUSPENDAT

Acesta este afișat în timp ce ascultați sunetul pe difuzoare. Mai jos este în timp ce accesați audio pe căști.

â ~ lista pactl este scurtă
52 alsa_output.pci-0000_2b_00.1.hdmi-stereo-extra1 PipeWire s16le 2ch 48000Hz SUSPENDAT
55 alsa_output.pci-0000_2d_00.4.analog-stereo PipeWire s32le 2ch 48000Hz RUNNING

Presupun astea chiuvete corespund plăcii audio plăcii de bază și ieșirii GPU. În acest caz, m-aș aștepta ca schimbarea dispozitiv-port ar fi comanda pe care o caut.

â ~ pactl set-sink-port alsa_output.pci-0000_2d_00.4.iec958-stereo analog-stereo        
Eșec: Nu există o astfel de entitate

Sunt destul de confuz cu privire la cum să fac asta să funcționeze. Orice ajutor este foarte apreciat.

Mai jos sunt câteva informații despre care cred că vor fi importante. OS: Ubuntu 21.10

Mai jos este rezultatul lui informații pactl cu numele meu de utilizator eliminat:

Șir de server: /run/user/1000/pulse/native
Versiunea protocolului bibliotecii: 35
Versiunea protocolului serverului: 35
Este local: da
Index client: 68
Dimensiune gresie: 65472
Nume utilizator: {USER}
Nume gazdă: ubuntu
Nume server: PulseAudio (pe PipeWire 0.3.38)
Versiunea serverului: 15.0.0
Specificație eșantion implicită: float32le 2ch 48000Hz
Hartă implicită a canalelor: față-stânga, față-dreapta
Livrare implicită: alsa_output.pci-0000_2d_00.4.iec958-stereo
Sursa implicită: alsa_input.usb-Sonix_Technology_Co.__Ltd._USB_2.0_Camera_SN0001-02.analog-stereo
Cookie: bf70:5e64

EDITAȚI | ×

Având în vedere răspunsul și comentariile lui @kanehekili, se pare că caut să setez chiuveta-port. Modul de a face acest lucru este folosirea pactl set-sink-port {SINK_NAME} {PORT_NAME} cu toate acestea portul meu nu există conform lista pactl se scufundă:

â ~ lista pactl se scufundă
Chiuveta #47
    Stare: RUNNING
    Nume: alsa_output.pci-0000_2d_00.4.iec958-stereo
    Descriere: Starship/Matisse HD Audio Controller Digital Stereo (IEC958)
    Driver: PipeWire
    Specificație eșantion: s32le 2ch 48000Hz
    Harta canalelor: față-stânga, față-dreapta
    Modul proprietar: 4294967295
    Mut: nu
    Volum: față-stanga: 28524 / 44% / -21,68 dB, față-dreapta: 28524 / 44% / -21,68 dB
            sold 0,00
    Volumul de bază: 65536 / 100% / 0,00 dB
    Sursa monitorului: alsa_output.pci-0000_2d_00.4.iec958-stereo.monitor
    Latență: 0 usec, configurat 0 usec
    Indicatori: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY SET_FORMATS 
    Proprietăți:
        object.path = "alsa:pcm:1:iec958:1:redare"
        api.alsa.path = "iec958:1"
        api.alsa.pcm.card = „1”
        api.alsa.pcm.stream = „redare”
        audio.channels = „2”
        audio.position = „FL,FR”
        device.routes = „1”
        alsa.resolution_bits = "16"
        device.api = „alsa”
        device.class = „sunet”
        alsa.class = "generic"
        alsa.subclass = "amestec generic"
        alsa.name = "ALCS1200A Digital"
        alsa.id = "ALCS1200A Digital"
        alsa.subdevice = "0"
        alsa.subdevice_name = „subdispozitiv #0”
        alsa.device = "1"
        alsa.card = "1"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Generic la 0xfc400000 irq 80"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = "iec958-stereo"
        device.profile.description = „Stereo digital (IEC958)”
        card.profile.device = "11"
        device.id = „41”
        factory.name = "api.alsa.pcm.sink"
        priority.driver = "672"
        priority.session = "672"
        media.class = „Audio/Chiuvetă”
        node.nick = „HD-Audio Generic”
        node.name = "alsa_output.pci-0000_2d_00.4.iec958-stereo"
        device.description = "Starship/Matisse HD Audio Controller Digital Stereo (IEC958)"
        device.icon_name = "audio-card-iec958"
        device.bus = „pci”
        device.bus_path = "pci-0000:2d:00.4"
        node.pause-on-idle = „fals”
        factory.id = „18”
        client.id = „32”
        node.driver = „adevărat”
        factory.mode = „imbinare”
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = „47”
        node.max-latency = "8192/48000"
    Porturi:
        iec958-stereo-output: Ieșire digitală (S/PDIF) (tip: SPDIF, prioritate: 0, disponibilitate necunoscută)
    Port activ: ieșire stereo iec958
    Formate:
        pcm

Când încerc să schimb porturile receptorului, mă întâmpin cu o eroare

â ~ pactl set-sink-port alsa_output.pci-0000_2d_00.4.iec958-stereo analog-stereo        
Eșec: Nu există o astfel de entitate

Cele de mai sus apar chiar și atunci când se utilizează identificatorul numeric pentru chiuvetă. Se pare că portul pe care îl caut nu există, totuși pot schimba portul folosind meniul Setări pe care l-am menționat mai sus și rulând același lista pactl se scufundă schimbă porturile astfel încât mea iec958-stereo portul nu mai exista:

â ~ lista pactl se scufundă
Chiuveta #47
    Stare: RUNNING
    Nume: alsa_output.pci-0000_2d_00.4.analog-stereo
    Descriere: Starship/Matisse HD Audio Controller Analog Stereo
    Driver: PipeWire
    Specificație eșantion: s32le 2ch 48000Hz
    Harta canalelor: față-stânga, față-dreapta
    Modul proprietar: 4294967295
    Mut: nu
    Volum: față-stanga: 31249 / 48% / -19,30 dB, față-dreapta: 31249 / 48% / -19,30 dB
            sold 0,00
    Volumul de bază: 65536 / 100% / 0,00 dB
    Sursa monitorului: alsa_output.pci-0000_2d_00.4.analog-stereo.monitor
    Latență: 0 usec, configurat 0 usec
    Indicatori: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
    Proprietăți:
        object.path = "alsa:pcm:1:front:1:playback"
        api.alsa.path = „front:1”
        api.alsa.pcm.card = „1”
        api.alsa.pcm.stream = „redare”
        audio.channels = „2”
        audio.position = „FL,FR”
        device.routes = „2”
        alsa.resolution_bits = "16"
        device.api = „alsa”
        device.class = „sunet”
        alsa.class = "generic"
        alsa.subclass = "amestec generic"
        alsa.name = "ALCS1200A Analog"
        alsa.id = "ALCS1200A Analog"
        alsa.subdevice = "0"
        alsa.subdevice_name = „subdispozitiv #0”
        alsa.device = "0"
        alsa.card = "1"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Generic la 0xfc400000 irq 80"
        alsa.driver_name = "snd_hda_intel"
        device.profile.name = „analog-stereo”
        device.profile.description = „Stereo analogic”
        card.profile.device = "5"
        device.id = „41”
        factory.name = "api.alsa.pcm.sink"
        priority.driver = "689"
        priority.session = "689"
        media.class = „Audio/Chiuvetă”
        node.nick = „HD-Audio Generic”
        node.name = "alsa_output.pci-0000_2d_00.4.analog-stereo"
        device.description = "Starship/Matisse HD Audio Controller Analog Stereo"
        device.icon_name = "audio-card-analog"
        device.bus = „pci”
        device.bus_path = "pci-0000:2d:00.4"
        node.pause-on-idle = „fals”
        factory.id = „18”
        client.id = „32”
        node.driver = „adevărat”
        factory.mode = „imbinare”
        audio.adapt.follower = ""
        library.name = "audioconvert/libspa-audioconvert"
        object.id = „47”
        node.max-latency = "8192/48000"
    Porturi:
        analog-output-lineout: ieșire linie (tip: linie, prioritate: 9000, grup de disponibilitate: Legacy 4, disponibil)
        căști cu ieșire analogică: Căști (tip: Căști, prioritate: 9900, grup de disponibilitate: Legacy 5, nu este disponibil)
    Port activ: analog-output-lineout
    Formate:
        pcm
Puncte:1
drapel zw

Trucul este că trebuie să comutați intrările de la chiuvetă - care sunt disponibile numai atunci când sunt active/rulează:

lista pactl scurte sink-inputs
28 8 31 protocol-native.c float32le 2ch 48000Hz

Fluxul dvs. „28” este mapat la ieșirea „8”. Acea ieșire poate fi verificată cu:

lista pactl scurte chiuvete
1 alsa_output.pci-0000_1e_00.3.modul analog-stereo-alsa-card.c s16le 2ch 48000Hz SUSPENDAT
8 alsa_output.pci-0000_1c_00.1.hdmi-stereo-extra3 module-alsa-card.c s16le 2ch 48000Hz SUSPENDAT

Deci, în prezent, fluxul de intrare 28 (indiferent de fluxul sursă care ar fi) este direcționat către placa HDMI. Dacă doriți să schimbați ieșirea la intern cardul analogic (de exemplu, căști) doar îl poate muta prin emiterea:

pactl move-sink-input 28 1

Deci, una dintre chiuvetele tale reprezintă căștile, cealaltă difuzoarele. Deci, în loc să utilizați (", va trebui să comutați intrarea fie la 52, fie la 55.

EDITAȚI | ×

Deoarece nu sunt familiarizat cu un dispozitiv optic în afară de o căști analogice, aș încerca să remorcăm porturile de comutare:

lista pactl se scufundă
Chiuveta #16
    Stare: RUNNING
    Nume: alsa_output.pci-0000_1e_00.3.analog-stereo
    ....
    Porturi: 
        analog-output-lineout: ieșire linie (tip: linie, prioritate: 9000, disponibilă)
        căști cu ieșire analogică: Căști (tip: Căști, prioritate: 9900, disponibilă)
    Port activ: analog-output-lineout

În acest caz, puteți comuta porturile din chiuveta #16 cu:

pactl set-sink-port 16 analog-output-lineout

sau

pactl set-sink-port 16 analog-ieșire-căști

Trebuie să găsiți indexul corect și numele portului - asta se aplică numai dacă ieșirea digitală este un port.

Exemplul nu funcționează cu adevărat în mod implicit, deoarece pulseaudio și alsa de obicei automută difuzoarele dacă sunt introduse (vezi Aici pentru mai multe informații), dar cu setările corespunzătoare funcționează.

TMarks avatar
drapel kr
Mulțumesc mult pentru răspuns, eram îngrijorat că nimeni nu știa! Din păcate, încerc să nu trec de la placa mea internă la placa mea grafică, ci de la ieșirea de 3,5 mm a plăcii mele interne la ieșirea audio optică. Pot face acest lucru manual prin meniul de setări, deși cu jocul pe care l-am menționat în întrebarea mea. Din ceea ce ați descris, se pare că am încercat să schimb orice este mai jos în ierarhie decât chiuvete. În această diagramă (https://gavv.github.io/articles/pulseaudio-under-the-hood/diagrams/devices_and_streams.png) încerc să schimb caseta cu eticheta „Căști”.
kanehekili avatar
drapel zw
OK- de când ne-ai arătat chiuvete, am crezut că vrei să comuți între ele. Aici va trebui să comutați porturile - așa cum ați bănuit deja. Voi verifica dacă pot găsi ceva
TMarks avatar
drapel kr
Mulțumesc, mi-am editat întrebarea pentru a arăta ce porturi sunt disponibile pentru mine și problema pe care o întâmpin acolo.Cred că acest lucru este mai aproape de răspuns, dar nu pot vedea de ce porturile ar apărea în meniul de setări, dar nu în comanda `pactl list sinks`.
kanehekili avatar
drapel zw
Comanda dvs. lipsește numărul receptorului. Încearcă cu `pactl set-sink-port 47 iec958-stereo-output`
TMarks avatar
drapel kr
Nu pare să fie asta. Se pare că nu pot seta „portul de chiuvetă”, deoarece apare doar unul la un moment dat.
kanehekili avatar
drapel zw
ce spune `pactl list cards`? S-ar putea să trebuiască să schimbați cardurile. Căutați [aici](https://unix.stackexchange.com/questions/65246/change-pulseaudio-input-output-from-shell) pentru mai multe informații
TMarks avatar
drapel kr
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/131021/discussion-between-tmarks-and-kanehekili).
TMarks avatar
drapel kr
Am adăugat un răspuns la întrebare. Vă mulțumesc mult pentru ajutor @kanehekilli, apreciez foarte mult.
kanehekili avatar
drapel zw
Ma bucur ca ti-ai dat seama. Mulțumesc pentru timpul acordat - am învățat multe. Totuși, nu înțeleg de ce o reinstalare a rezolvat-o.
TMarks avatar
drapel kr
Cred că motivul este că foloseam PipeWire în combinație cu PulseAudio. Nu sunt sigur cum interacționează combinația, dar cred că PipeWire mi-a gestionat porturile și doar le-a transmis către PulseAudio, ceea ce înseamnă că nu ar apărea în `pactl list sinks`. Reinstalarea PulseAudio a dezinstalat și PipeWire, ceea ce înseamnă că Pulse a avut din nou controlul deplin asupra chiuvetelor audio. Aceasta este teoria mea de alergare.
Puncte:0
drapel kr

Problema mea s-a datorat utilizării PipeWire, aparent. Nu am reușit să rezolv aceste probleme pe care le aveam în timp ce încă folosim PipeWire, așa că am încercat să dezinstalez, am fost întâmpinat de o eroare a GUI, a trebuit să sudo apt install --reinstall ubuntu-desktop apoi reporniți. După aceasta și rulând doar demonul PulseAudio, am putut folosi:

pactl set-card-profile {card_number} {profile_name}

pentru a comuta cu succes între ieșiri doar cu o întârziere minoră (fără ieșire de sunet în timpul întârzierii). Acesta pare a fi cel mai bun lucru care se poate face și o voi lăsa așa.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.