web-dev-qa-db-fra.com

Enregistrement audio sur une entrée de flux / puits pulseaudio et lecture à partir d'un flux à la demande

J'utilise le codec CS42888 afin d'enregistrer de l'audio à partir de l'entrée ligne. J'ai lu le fil de discussion Enregistrez la sortie d'un programme avec PulseAudio et j'ai eu quelques idées sur ce que j'essaie de réaliser. Cependant, j'ai quelques problèmes.

Problème

Premièrement, la seule façon pour moi d’enregistrer depuis l’appareil est la suivante:

arecord -Dhw:cs42888audio -f S16_LE -r 48000 test.wav

Je peux jouer avec:

arecord -Dhw:cs42888audio test.wav

J'aimerais vous présenter ce qui suit:

  • Enregistrez l'entrée cs42888audio dans un flux pulseaudio (sous le nom "radio")

Soit:

  • Chaque fois que le flux "radio" est disponible, j'aimerais en faire mon flux par défaut et le router vers la sortie cs42888.

Ou:

  • Toujours enregistrer pour "radio" flux sur fond. Jouez/diffusez-le à tout moment avec un ensemble de commandes.

Ce que j'ai essayé

pactl list sink-inputs                         # Gives nothing
pactl load-module module-null-sink sink_name=radio
pactl move-sink-input 3 radio                  # Fails
parec --format=s16le --rate=48000 -d alsa_output.platform-sound-cs42888.analog-surround-51.monitor | lame -r --quiet -q 3 --lowpass 17 --abr 192 - "temp.mp3"
aplay -Dhw:cs42888audio temp.mp3               # No audio other than noise

Configuration sonore

Mon .asoundrc est comme suit:

pcm.!default {
    type hw
    card 2
    device 0
}

Mon /etc/Pulse/system.pa a:

set-default-source alsa_input.platform-sound.analog-mono
set-default-sink alsa_output.platform-sound.analog-mono

aplay -l donne:

**** List of PLAYBACK Hardware Devices ****
card 0: cs42888audio [cs42888-audio], device 0: HiFi cs42888-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: wm8960audio [wm8960-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: amixaudiosai [amix-audio-sai], device 0: HiFi-AMIX-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: amixaudiosai [amix-audio-sai], device 1: HiFi-AMIX-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

arecord -l donne:

**** List of CAPTURE Hardware Devices ****
card 0: cs42888audio [cs42888-audio], device 0: HiFi cs42888-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: wm8960audio [wm8960-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: amixaudiosai [amix-audio-sai], device 0: HiFi-AMIX-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

pactl list éviers courts

0   alsa_output.platform-sound-amix-sai.analog-mono module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED
1   alsa_output.platform-sound-cs42888.analog-surround-51   module-alsa-card.c  s16le 6ch 48000Hz   SUSPENDED
2   alsa_output.platform-sound.analog-mono  module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED

pactl list des sources courtes

0   alsa_output.platform-sound-amix-sai.analog-mono.monitor module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED
1   alsa_input.platform-sound-amix-sai.analog-mono  module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED
2   alsa_output.platform-sound-cs42888.analog-surround-51.monitor   module-alsa-card.c  s16le 6ch 48000Hz   SUSPENDED
3   alsa_input.platform-sound-cs42888.analog-mono   module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED
4   alsa_output.platform-sound.analog-mono.monitor  module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED
5   alsa_input.platform-sound.analog-mono   module-alsa-card.c  s16le 1ch 48000Hz   SUSPENDED

L'orientation est grandement appréciée. Merci.

1
mozcelikors

Résolu!

pactl load-module module-loopback source=alsa_input.platform-sound-cs42888.analog-mono sink=alsa_output.platform-sound-cs42888.analog-surround-51 rate=48000

Cependant, pactl unload-module module-loopback ne fonctionne pas correctement, attend quelques secondes. Ce serait bien si je pouvais le décharger instantanément.

2
mozcelikors