Ich möchte die Audioausgabe eines Programms in die Datei über die Befehlszeile umleiten, wie in
$ redirect-wrapper file.wav my-program
damit
- Ich höre die Ausgabe des Programms nicht, dh die Ausgabe sollte nur in die Datei gehen
- Ich nehme nichts außer dem Programm auf, dh nur dieses spezielle Programm wird in die Datei umgeleitet
- Der Rest des Audiosystems bleibt völlig ungestört, es werden keine Konfigurationsoptionen hin und her geändert oder ähnliches
Gibt es eine Möglichkeit, dies zu tun? Diese verwandte Frage hilft nicht , ich brauche eine Kommandozeilenlösung, kein "dort klicken, dann dort". Dies hängt wahrscheinlich auch damit zusammen, beruht aber auch auf der grafischen Anwendung pavucontrol. Ich fand eine Terminalalternative zu pavucontrol, pacmd.
Dies ermöglicht jedoch nur den folgenden Kompromiss:
- Holen Sie sich die Standardsenke und speichern Sie, was es war. Wie? Wahrscheinlich durchgreifen
pacmd list-sinks
- Setzen Sie die Standardsenke auf die snd-aloop-Senke mit
pacmd set-default-sink
. - Nehmen Sie von dieser Spüle auf.
- Programm starten
- Warten Sie, bis die Anwendung ihre Senkeneingabe geöffnet hat:
pacmd list-sink-inputs | grep name-of-my-program
Wenn dies etwas findet, ist die Eingabe geöffnet. - Ändern Sie die Standardeinstellung wieder auf die Standardeinstellung
pacmd set-default-sink
. - Beenden Sie die Aufzeichnung, sobald die Anwendung geschlossen wird.
Dies ändert jedoch immer noch die Standardsenke für einen Zeitraum von bis zu ein paar Minuten (die Senkeneingabe wird normalerweise erst geöffnet, wenn das Programm tatsächlich Sounds wiedergibt, die nicht direkt nach dem Start sein müssen). Ich habe diesen Kompromiss umgesetzt. Github .
Immer noch auf der Suche nach kompromisslosen Antworten.
quelle
~/.asoundrc
. Vielleicht kannst du das irgendwie vermeiden.pacmd list
zeigt an, welche Quellen und Senken an bestimmte Programme angehängt sind, sodass es eine Möglichkeit gibt, diese zu ändern. Fragen Sie in der pulseaudio-Liste unter lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss nach. Die Betreuer / Entwickler sind da und sehr hilfreich.Antworten:
Umm also schau dir die pulseaudio Dokumentation an.
man pulseaudio
Wir haben die folgenden Umgebungsvariablen
Dies sollte es Ihnen hoffentlich ermöglichen, die pulseaudio-Senke vollständig auszutauschen. Wenn dies nicht ausreicht, führen Sie unseren eigenen pulseaudio-Einwegserver aus.
Unter Bezugnahme auf diese Seite ( /ubuntu/60837/record-a-programs-output-with-pulseaudio ) erfahren wir mehr über den Befehl
parec
/pacat
(es handelt sich um Aliase), der von Senken aufzeichnen und in Senken schreiben kann und Streams.Zusammengenommen haben wir den folgenden Wrapper (den ich nicht ausgeführt habe - obwohl ich diese Methode erfolgreich auf Ad-hoc-Basis zum Laufen gebracht habe).
quelle