Je voudrais enregistrer une sortie d'un programme avec PulseAudio en utilisant le script en ligne de commande / bash. Il est important de ne pas enregistrer tous les résultats, mais uniquement ceux d'un programme spécifique.
Je pensais que je devrais créer un nouveau collecteur nul et déplacer la sortie du programme vers ce nouveau collecteur. Que tell PAREC d'utiliser ce moniteur spécifique pour enregistrer.
La première étape ressemblerait à ceci:
pactl load-module module-null-sink sink_name=steam
Mais comment déplacer maintenant la sortie du programme vers cet évier?
Et comment enregistrer le puits spécifique avec un script bash?
la source
pulseaudio -k
dans un terminal.list-sink-inputs
notez lasink
valeur. Pour revenir en arrière, lancezpactl move-sink-input $INDEX $SINK
. Quelque chose commepactl move-sink-input 4719 1
L' amélioration de la réponse Waschtl de ce fil afin que vous puissiez LES DEUX ET ECOUTER RECORD l'application de son:
Premièrement, nous recherchons notre sortie par défaut et mettons son nom de récepteur dans
$DEFAULT_OUTPUT
:Ensuite, nous créons un récepteur combiné qui n’a qu’un seul esclave: $ DEFAULT_OUTPUT . Le son généré par l'application (source) sera transmis au récepteur esclave (c.-à-d. Une sortie réelle), et nous l'enregistrerons également. Il diffère d'un collecteur nul dans lequel le son source n'est pas transmis.
sink_properties
est facultatif et peut provoquer des bogues si vous utilisez des espaces dans le nom de la description.Ensuite, nous pourrions utiliser la
pactl move-sink-input ...
commande de réponse Waschtl (avec record-n-play au lieu de steam ) mais l'interface graphiquepavucontrol
est plus simple (et très pratique pour la vérification / dépannage):Ensuite, nous jouons du son dans l'application que nous voulons enregistrer. Dans l'
pavucontrol
Playbackonglet, nous sélectionnons dans la liste déroulante des applications: "Record-and-Play" .Enfin, nous sommes bien pour enregistrer et écouter en même temps! ( exemple mp3 boiteux , exécuté au premier plan)
Ou nous pouvons enregistrer en arrière-plan et nous arrêter à tout moment:
NB:
pulseaudio -k
fonctionne très bien pour tout réinitialiser aux valeurs par défaut de la session.pactl load-module module-combine-sink sink_name=record-n-play slaves=real-output-1,real-output-2
.EDIT: Attention, puisque Ubuntu 18 (peut-être 17 aussi), le récepteur combiné tend à devenir le périphérique de sortie système par défaut, au lieu du périphérique de sortie réel. Ainsi, lorsque vous modifiez le volume à l'aide de l'icône de son de la barre d'état système, cela a un impact sur le son que vous enregistrez. Solution: après avoir créé le récepteur combiné, ouvrez-le
pavucontrol
dans l'onglet Sortie. Sélectionnez "View: Virtual Output Devices" (Afficher: périphériques de sortie virtuels) et réinitialisez le volume sonore du récepteur combiné à 100%. Puis sélectionnez "Affichage: Périphériques de sortie matérielle" et appuyez sur l'icône verte "Définir comme alternative" sur le périphérique de sortie réel.la source
La réponse de @ Waschtl est fantastique. @ixtmixilix a demandé à propos de la restauration audio normale une fois l'enregistrement terminé. Voici le moyen le plus simple que je connaisse:
Installez et exécutez l'
pavucontrol
interface graphique. Vous devriez voir votre application de sortie audio et son compteur de volume sous l' Playbackonglet. Il y aura un bouton à côté de lui indiquant qu'il joue sur Null Output . Cliquez dessus et changez-le en votre sortie audio ordinaire, Audio intégré Stéréo analogique dans mon cas.Voici une capture d'écran de ce que vous recherchez:
Vous pouvez également utiliser cette approche pour configurer votre enregistrement ultérieurement, après avoir exécuté la
load-module
commande dans la réponse de @ Waschtl pour créer le récepteur.la source
Pour améliorer encore la réponse de KrisWebDev , si vous voulez que record-n-play soit toujours disponible, commencez par trouver le résultat par défaut:
qui produira quelque chose comme:
Ensuite, créez un fichier
~/.config/pulse/default.pa
:Veuillez remplacer
alsa_output.pci-0000_00_1b.0.analog-stereo
par tout ce que vous avez obtenu de lapacmd
commande. Pulse ne lit pas le fichier de configuration par défaut lorsqu'un fichier de configuration personnalisé existe. C'est pourquoi la première ligne ci-dessus inclut le fichier de configuration par défaut. De cette façon, pulseaudio charge toujours la configuration par défaut en premier.Run
pulseaudio -k
pour tuer l'instance actuelle de pulseaudio afin qu'une nouvelle soit démarrée avec la nouvelle configuration.Si à tout moment vous souhaitez annuler les modifications ici, supprimez simplement le
~/.config/pulse/default.pa
fichier et exécutez-lepulseaudio -k
.Si vous voulez que record-n-play soit le puits par défaut pour toutes les sorties, vous pouvez le faire en ajoutant une autre ligne à la fin de
~/.config/pulse/default.pa
:Pour les programmes sur lesquels pulseaudio possède déjà des informations stockées, il mémorise le dernier périphérique de sortie utilisé. Vous devrez donc reconfigurer manuellement ceux-ci en utilisant l'une des méthodes décrites dans la réponse de KrisWebDev.
la source
J'ai créé ce script bash à partir des réponses fournies par les réponses @Waschtl et @KrisWebDev.
Disponible ici: https://gist.github.com/ramast/4be3314bc73f28f55e3604497188b007
Comment utiliser?
Nouvelle version
J'ai créé un script python qui offre certaines améliorations par rapport à l'ancien. https://gist.github.com/ramast/c47bd5e57586e9c2deb74975e27089f0
Comment utiliser?
Lorsque vous appuyez sur enter, l'enregistrement commence immédiatement. si au moment où vous appuyez sur enter, l'application était déjà arrêtée (c'est-à-dire que vous avez fermé mplayer par exemple), le script attendra que l'application réapparaisse et commence à enregistrer.
Le seul inconvénient de ce script (par rapport à celui d'origine) est que si la liste contient deux entrées portant le même nom, le script ne se comportera pas correctement. Par exemple
la source