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.
Audioausgabe eines Programmes in Datei dumpen
Re: Audioausgabe eines Programmes in Datei dumpen
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
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.
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
Ansonsten geht das ganze auch ganz ohne Pulseaudio über eine Loopbacksoundkarte. Das ist aber keine ganz so schöne und einfache Lösung.
- 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
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.
Wenn das jetzt eine Seite mit login oder aehnlichem ist, dann ist das natuehlich nicht optimal.
Code: Alles auswählen
╔═╗┬ ┬┌─┐┌┬┐┌─┐┌┬┐╔╦╗
╚═╗└┬┘└─┐ │ ├┤ │││ ║║
╚═╝ ┴ └─┘ ┴ └─┘┴ ┴═╩╝ rockt das Forum!
Re: Audioausgabe eines Programmes in Datei dumpen
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 jack-capture, weil ich kein PA sondern Jack benutze.
Du könntest auch gnome-sound-recorder testen ( der ist mir neu ).
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 jack-capture, weil ich kein PA sondern Jack benutze.
Du könntest auch gnome-sound-recorder testen ( der ist mir neu ).
Systemd und PulseAudio, hmmm, nein danke.
Re: Audioausgabe eines Programmes in Datei dumpen
Danke Dir smutbert! Das hat funktioniert:smutbert hat geschrieben:16.10.2020 12:16:31Hier 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 Aufruffunktionieren 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.)Code: Alles auswählen
PULSE_SINK=recordsink /usr/bin/browser
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"