Audioausgabe eines Programmes in Datei dumpen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Kermit24
Beiträge: 277
Registriert: 29.04.2006 14:44:39

Audioausgabe eines Programmes in Datei dumpen

Beitrag von Kermit24 » 15.10.2020 21:33:40

Hallo,

ich möchte gerne Online-Streams aufnehmen. Ich habe nun schon einige versuche mit pulse (monitor-streams über parec, sowie umleitungen über null sinks, etc), aber es war alles nicht zufriedenstellend, bzw. ich habe nun nach mehreren Stunden aufgegeben: Diese Methoden funktionieren zwar alle, aber sie greifen den Audiostream offenbar erst NACH dem Mixer ab. Wenn ich die Lautstärkeregelung meiner GUI (lxde), verändere, so ändert sich auch die Lautstärke in der Aufnahme kombiniert mit wilden Verzerrungen. Der Mixer verändert den Master-Kanal von der Audiokarte "default". Ich möchte den Audiostream gerne VOR dem Mixer abgreifen.
Das Umleiten via alsa (via ~/.asoundrc) funktioniert dagegen nicht. Die Frage wäre auch, ob ich damit den Audiostream vor oder nach dem Mixer umleiten würde, wenn es denn überhaupt klappen würde?
Ich meine es gab ein (Kommandozeiten-)Programm, dass andere Programme aufrufen konnte und dann den kompletten Audiostream umgeleitet hat. Man startet z.B. den Brwoser in der Kommandozeile mit "/usr/bin//recordprogramm /usr/bin/browser". Alle Audio-Ausgaben von "Browser" wurden dann in eine RAW-File umgeleitet. Gibt es so etwas noch?

Danke im Voraus.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Audioausgabe eines Programmes in Datei dumpen

Beitrag von smutbert » 16.10.2020 12:16:31

default ist bei laufendem Pulseaudio ja Pulseaudio selbst und das bedient die tatsächlichen Regler der Soundkarte nach eigenem Gutdünken und macht einen Teil der Lautstärkeregelung davor in Software. Allerdings macht Pulseaudio soweit ich das bis jetzt durchschaut und beobachtet habe, die Lautstärkeregelung möglichst spät, was du dir zunutze machen könntest.

Hier könnte das Pulseaudiomodul module-remap-sink weiterhelfen. Es leitet im Grunde, das was darüber wiedergegeben wird nur an eine weitere Sink weiter. Der Vorteil dabei ist, dass du den Monitor dieser Sink für die Aufnahme verwenden kannst, wobei die Lautstärkeeinstellung dieses Sinks bei 100% belässt.
Die Lautstärkeregelung zum Hören machst du dann einfach über den Regler der Sink, die zur richtigen Soundkarte gehört. So ganz nebenbei profitierst du so auch noch davon, dass eventuelle andere Töne (Systemsounds oder etwas anderes unerwünschtes) nicht auf der Aufnahme landen, wenn du die eingerichtete Sink von module-remap-sink nicht zur Defaultsink erklärst.

Sagen wir du nennst deine eingerichtete Sink recordsink, dann sollte abhängig von der Anwendung auch der Aufruf

Code: Alles auswählen

PULSE_SINK=recordsink /usr/bin/browser
funktionieren um die Wiedergabe über diese Sink laufen zu lassen. (Mit der Einschränkung, dass Anwendungen sich auch explizit mit einer anderen Sink verbinden können – keine Ahnung wie praxistauglich das für deinen Einsatzzweck ist.)


Ansonsten geht das ganze auch ganz ohne Pulseaudio über eine Loopbacksoundkarte. Das ist aber keine ganz so schöne und einfache Lösung.

Benutzeravatar
Lord_Carlos
Beiträge: 5578
Registriert: 30.04.2006 17:58:52
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Dänemark

Re: Audioausgabe eines Programmes in Datei dumpen

Beitrag von Lord_Carlos » 16.10.2020 12:30:29

Eine alternative waere vielleicht den Stream direkt mit ffmpeg mitzuschneiden. Ohne re-encoding.
Wenn das jetzt eine Seite mit login oder aehnlichem ist, dann ist das natuehlich nicht optimal.

Code: Alles auswählen

╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: Audioausgabe eines Programmes in Datei dumpen

Beitrag von Revod » 16.10.2020 15:32:34

Mit DeadBeef ( nicht in den Debian Repos vorhanden, nach deadbeef linux suchen ). Während des Streams einfach mit der rechte Maustaste der Playlist Zeile auf umwandeln klicken und die Option " kopieren " an haken.

Eventuell verzerrt es nicht wenn der Regler von DeadBeef verwendet wird. Um die Aufnahme zu beenden das Stream stoppen.

Oder eventuell Audacious, in den > Einstellungen > Audio, mit Haken " Aufnahme " aktivieren und darin ist die Option " wie decodiert " wählbar.

Ich selbst nutze Debianjack-capture, weil ich kein PA sondern Jack benutze.

Du könntest auch Debiangnome-sound-recorder testen ( der ist mir neu ).
Systemd und PulseAudio, hmmm, nein danke.

Kermit24
Beiträge: 277
Registriert: 29.04.2006 14:44:39

Re: Audioausgabe eines Programmes in Datei dumpen

Beitrag von Kermit24 » 16.10.2020 15:59:51

smutbert hat geschrieben: ↑ zum Beitrag ↑
16.10.2020 12:16:31
Hier könnte das Pulseaudiomodul module-remap-sink weiterhelfen. Es leitet im Grunde, das was darüber wiedergegeben wird nur an eine weitere Sink weiter. Der Vorteil dabei ist, dass du den Monitor dieser Sink für die Aufnahme verwenden kannst, wobei die Lautstärkeeinstellung dieses Sinks bei 100% belässt.
Die Lautstärkeregelung zum Hören machst du dann einfach über den Regler der Sink, die zur richtigen Soundkarte gehört. So ganz nebenbei profitierst du so auch noch davon, dass eventuelle andere Töne (Systemsounds oder etwas anderes unerwünschtes) nicht auf der Aufnahme landen, wenn du die eingerichtete Sink von module-remap-sink nicht zur Defaultsink erklärst.

Sagen wir du nennst deine eingerichtete Sink recordsink, dann sollte abhängig von der Anwendung auch der Aufruf

Code: Alles auswählen

PULSE_SINK=recordsink /usr/bin/browser
funktionieren um die Wiedergabe über diese Sink laufen zu lassen. (Mit der Einschränkung, dass Anwendungen sich auch explizit mit einer anderen Sink verbinden können – keine Ahnung wie praxistauglich das für deinen Einsatzzweck ist.)
Danke Dir smutbert! Das hat funktioniert:

1.Schritt: entsprechende Sink erzeugen
pacmd load-module module-remap-sink sink_name=recordsink

2.Schritt Browser mit geänderter Umgebungsvariable PULSE_SINK starten (ohne den Tipp von Dir hätte ich das nie rausgefunden. Ich habe es bisher mit Index-Nummern und so nen Quatsch rumprobiert):

PULSE_SINK=recordsink chromium

3.Schritt: Über den monitor von recordsink aufnehmen:
ffmpeg -f pulse -i recordsink.monitor aufnahme.mp3

Nun kann ich durch ändern der Systemlautstärke nicht mehr die Aufnahme stören! Die Lautstärke von recordsink steht standardmäßig auf 100% (kann man in pavucontrol sehen/ändern).


@Lord_Carlos: Natürlich würde ich gerne den Stream direkt aufnehmen. Allerdings ist genau die Login-Sache das Probleme und ich habe noch keine Anwendung/Browser-Plugin gefunden, die mit Amazon-Music zurecht kommt. Youtube dagegen funktioniert ja wunderbar mit dem pyhton-Script youtube-dl. Selbst die Login-Premium Sachen soll über eine aus dem Browser extrahierte cookie.txt laufen (nicht probiert, da ich keinen habe). Leider gibt es wohl (noch) kein "amazon-dl"

Antworten