Eu tenho um bom conjunto de fones de ouvido sem fio que uso periodicamente, além dos alto-falantes e do microfone normal.
Eu gostaria de escrever um script para alternar entre uma fonte de entrada e saída e outra, essencialmente uma alternância entre meus fones de ouvido e meus alto-falantes + microfone.
Eu gostaria de mudar entre isso:
...e isto:
Existe uma maneira de escrever uma transferência entre as duas entradas e saídas? Basicamente, estou procurando algo parecido com isto:
CURRENT_INPUT="$(get-current-input-name)"
CURRENT_OUTPUT="$(get-current-output-name)"
if [ "$CURRENT_INPUT" == "Vengeance 2000" ]; then
set-current-input "HD Pro Webcam C920"
else
set-current-input "Vengeance 2000"
fi
if ["$CURRENT_OUTPUT" == "Vengeance 2000" ]; then
set-current-output "Built-in Audio"
else
set-current-output "Vengeance 2000"
fi
Existe uma maneira de escrever isso?
audio
alsa
pulseaudio
Naftuli Kay
fonte
fonte
man pactl
opções de linha de comando do PulseAudio.Respostas:
Como @ Teresa-e-Junior apontou,
pactl
é a ferramenta a ser usada:Antes de tudo, podemos querer obter os IDs de nossos coletores de PA. No meu sistema, é isso que recebo:
O coletor 1 é atualmente o meu coletor padrão.
Mas agora eu quero que todos os meus fluxos atuais e futuros sejam reproduzidos via HDMI (ou seja, coletor 0).
Existe um comando para definir o coletor padrão do PulseAudio, mas parece não ter nenhum efeito no meu PC:
Em vez disso, novos fluxos parecem estar conectados ao coletor que teve um fluxo movido para ele mais recentemente.
Então, digamos ao pactl para mover todos os fluxos atualmente em execução para afundar
0
. Primeiro, precisamos listá-los:Ok, temos dois fluxos (IDs 290 e 295) que estão anexados ao coletor
1
.Vamos movê-los para afundar
0
:Então, deve ser isso. Agora só precisamos fazer um script que faça o trabalho para nós:
Você pode chamá-lo com um ID de coletor ou um nome de coletor como parâmetro (por exemplo, um
0
ou algo parecidoalsa_output.pci-0000_01_00.1.hdmi-surround
).Agora você pode anexar esse script a um evento udev ou atalho de tecla.
fonte
0 sink input(s) available.
? Mas esse flash player de merda ainda está reproduzindo áudio? E eu vejo o flash player naclient(s) logged in
seção depacmd list
$ pacmd set-default-sink INDEX
ainda é necessário para o meu script, caso contrário, os comandos do teclado para alterar o volume continuam a usar a fonte antiga do coletor.Os seguintes comandos são usados para manipular o servidor de som PulseAudio:
Aqui estão alguns exemplos de como eles funcionam.
pacmd list-sinks
:: nome da lista ou número de índice de possíveis sumidourospacmd set-default-sink [sinkname]
:: defina o coletor de saída padrãopacmd set-default-source [sourcename]
:: defina a entrada padrãopacmd set-sink-volume [index] [volume]
:: ajuste o volume do coletorpacmd set-source-volume index volume
:: faixa de controle de volume 0 - 65536 (quanto menor o número, menor o volume)Estes são apenas alguns exemplos que tirei da página wiki & man. Consulte isso para obter informações mais detalhadas. Ou você pode visualizar comandos
--help
ouman
página.Já existe uma ferramenta de linha de comando que serve a esse propósito. Seu nome é ponymix . É um misturador de linha de comando para o PulseAudio. O link fornecido é para o github de projetos. Ele foi desenvolvido por um amigo e colega Usuário / Desenvolvedor do Arch Linux. Se você não está executando o Arch, basta compilá-lo da fonte usando
make
esudo make install
.fonte
No meu laptop executando o Fedora 20, a saída HDMI não é listada como um coletor no perfil padrão, mas como um perfil diferente .
Eu tenho apenas 1 coletor como este, boa música tocando nos alto-falantes do meu laptop:
Se eu correr
pactl set-card-profile 0 output:hdmi-stereo
, uma música legal será reproduzida através do HDMI. Eu recebo:Para voltar ao padrão, eu apenas corro
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
. De qualquer maneira, o padrão estará lá novamente se eu reiniciar.A lista de perfis para o meu cartão está em algum lugar na
pactl list cards
saída.fonte
set-card-profile
não foi mencionado anteriormente e essa é a informação mais importante sobre esta resposta.Estendendo a resposta aceita por @cinelli, criei um script que
Mude conforme necessário!
fonte