Je voudrais rediriger la sortie audio d'un programme vers un fichier, sur la ligne de commande, comme dans
$ redirect-wrapper file.wav my-program
pour que
- Je n'entends pas la sortie du programme, c'est-à-dire que la sortie ne doit aller qu'au fichier
- Je n'enregistre rien d'autre que le programme, c'est-à-dire que seul ce programme spécifique est redirigé vers le fichier
- le reste du système audio n'est pas perturbé, aucune option de configuration n'a été modifiée d'avant en arrière ou quelque chose comme ça
Y a-t-il un moyen de faire cela? Cette question connexe n'aide pas , j'ai besoin d'une solution en ligne de commande, pas de "cliquer là, puis là". Ceci est probablement également lié, mais repose également sur l'application graphique pavucontrol. J'ai trouvé une alternative terminale à pavucontrol, pacmd.
Mais cela ne permet toujours que le compromis suivant:
- Obtenez le récepteur par défaut et enregistrez ce qu'il était. Comment? Probablement à travers
pacmd list-sinks
- Définissez le récepteur par défaut sur le récepteur snd-aloop avec
pacmd set-default-sink
. - Enregistrez depuis cet évier.
- Lancer l'application
- Attendez que l'application ouvre son entrée réceptrice:
pacmd list-sink-inputs | grep name-of-my-program
si cela trouve quelque chose, l'entrée est ouverte. - Remplacez la valeur par défaut par ce qu'elle était
pacmd set-default-sink
. - Arrêtez l'enregistrement une fois l'application fermée.
Mais cela modifie toujours le récepteur par défaut pendant une durée pouvant aller jusqu'à quelques minutes (l'entrée du récepteur n'est généralement pas ouverte jusqu'à ce que le programme joue réellement des sons qui n'ont pas besoin d'être juste après le lancement). J'ai mis en œuvre ce compromis; Github .
Toujours à la recherche de réponses non compromettantes.
la source
~/.asoundrc
. Vous pouvez peut-être éviter cela d'une manière ou d'une autre.pacmd list
montre quelles sources et quels récepteurs sont attachés à des programmes particuliers, il peut donc y avoir un moyen de les changer. Essayez de demander sur la liste pulseaudio à lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss Les mainteneurs / développeurs sont là et sont très utiles.Réponses:
Umm donc en regardant la documentation pulseaudio.
man pulseaudio
Nous avons les variables d'environnement suivantes
J'espère que cela devrait vous permettre de remplacer complètement le récepteur pulseaudio, et si cela ne suffit pas, exécutez notre propre serveur pulseaudio à usage unique.
En se référant à cette page ( /ubuntu/60837/record-a-programs-output-with-pulseaudio ), nous découvrons la commande
parec
/pacat
(ce sont des alias) qui peut enregistrer et écrire dans des puits et les ruisseaux.Pour mettre cela ensemble, nous avons l'encapsuleur suivant (que je n'ai pas réellement exécuté - bien que j'ai réussi à faire fonctionner cette méthode de manière ponctuelle)
la source