CHIP mit DVD Jahresabo!

Linux und Ich

Blog über Ubuntu, Linux, Android und IT

Mit PulseAudio von zwei Quellen zur selben Zeit Ton aufnehmen

Mit PulseAudio von zwei Quellen zur selben Zeit Ton aufnehmen

| 17 Kommentare

An mich wurde schon öfters die Frage angetragen, wie man denn Audio von zwei unterschiedlichen Quellen zur selben Zeit aufnehmen könnte. Besonders im Zusammenhang mit dem Beitrag Desktop inklusive Ton mit gtk-recordMyDesktop aufnehmen wurde diese Frage öfters gestellt, da es wohl den Bedarf gibt, bei Screencasts – zusammen mit dem gesprochenen und mit dem Mikro aufgezeichneten Kommentar – auch den von der Soundkarte abgespielten Ton aufnehmen zu können. So kann man bspw. den Sound eines Spiels zusammen mit dem Kommentar aufzeichnen. Prinzipiell ist das gar nicht so schwer, man muss sich nur ein bisschen in PulseAudio reinfuxen.

recordMyDesktop für PulseAudio vorbereiten

Bevor ich zum PulseAudio-Teil komme, noch ein Hinweis für alle, die recordMyDesktop benutzen, um Screencasts erstellen zu können. Ich habe damals im Beitrag Desktop inklusive Ton mit gtk-recordMyDesktop aufnehmen ziemlich aufwändig beschrieben, wie man die Audio-Geräte für die Aufnahme rausfindet. Es geht jedoch viel einfacher, wenn man einfach nur “pulse” als Aufnahmegerät einträgt und den Rest PulseAudio überlasst.

recordMyDesktop für PulseAudio vorbereiten

Generell würde ich auch eine Samplingrate von 48kHz empfehlen. Solange es keine Aussetzer in Bild oder Ton gibt, würde ich versuchen die Aufnahmequalität so hoch wie möglich anzusetzen. Runterrechnen kann man die Qualität im Nachhinein immer noch.

Erstellt einen PulseAudio-Mix mehrerer Audiogeräte

Nun zum eigentlichen Thema: Wie kombiniert man die Audio-Signale mehrerer Quellen, zu einem Signal? Prinzipiell bringt PulseAudio dafür alles nötige mit. Ihr müsst in einem ersten Schritt eine “Null-Senke” erzeugen und zwei virtuelle Loopback-Audiogeräte, die ihr Signal in diese Senke leiten. Der zweite  Befehl SOLL wiederholt werden, da ihr für die Kombination zweier Signale eben auch zwei dieser virtuellen Audiogeräte braucht. Solltet Ihr weiterer Quellen in den Mix einfügen wollen, so wiederholt den Befehl nochmals.

$ pactl load-module module-null-sink sink_name=mix
$ pactl load-module module-loopback sink=mix
$ pactl load-module module-loopback sink=mix

Im Endeffekt seid Ihr mit dem Schlimmsten schon durch. Startet nun den PulseAudio-Lautstärkeregler (eventuell müsst Ihr das Programm über das Paket “pavucontrol” nachinstallieren) und geht dort in die Lasche “Aufnahme”. Schaut zuerst unten rechts, dass “Alle Spuren” angezeigt werden, ansonsten bekommt ihr die Loopback-Geräte nicht zu Gesicht.

Stellt nun bei den beiden Loopback-Geräten die von euch gewünschten Quellen ein. In meinem Fall ist das z.B. das Mikro meiner Microsoft Lifecam (Lifecam Cinema…) und zum anderen die Ausgabe meiner internen Soundkarte (Monitor of Internes Audio…). Bei euch werden die Geräte mit Sicherheit anders heißen, doch prinzipiell sollte es nicht so schwer sein die richtigen Geräte zu finden.

PulseAudio-Mix erstellen

Startet ihr nun eine Aufnahme über recordMyDesktop oder den Audio-Recorder der GNOME-Desktopumgebung, dann taucht auch dieses Programm in der Liste auf. Wenn ihr jetzt als Aufnahmequelle euren Mix “Monitor of Null Ausgang” auswählt, dann wird sowohl der aufgenommenen Ton eurer Webcam wie auch der ausgegebene Klang eurer Soundkarte aufgenommen.

Zur Demonstration habe ich diese Schritte auch kurz in einen Screencast gepackt. Das schöne ist, dass man im laufenden Betrieb an PulseAudio basteln kann, ohne dass die Aufnahme ins Stolpern gerät.

Die PulseAudio-Konfiguration permanent machen

Die mit pactl erstellten Quellen und Geräte sind nicht von Dauer, spätestens wenn PulseAudio neu gestartet wird, also bspw. bei einem Neustart oder auch nach dem Aus- und wieder Einloggen aus der Desktopumgebung sind die Einstellungen Geschichte. Solltet Ihr des öfteren Screencasts erstellen oder Audio-Chats mitschneiden wollen, so könnt Ihr diese Einstellungen fest in PulseAudio verdrahten. Erzeugt euch dazu am besten eine für euren Benutzer spezifische Konfigurationsdatei für PulseAudio und öffnet diese in einem Editor…

$ cp /etc/pulse/default.pa ~/.pulse/
$ gedit ~/.pulse/default.pa

…und fügt dann am Ende dieser Datei die folgenden Zeilen ein. Sie entsprechen im Endeffekt den zuvor ausgeführten pactl-Befehlen, allerdings kann man auf das Kommando davor verzichten.

load-module module-null-sink sink_name=mix
load-module module-loopback sink=mix
load-module module-loopback sink=mix

Von jetzt an werden die Null-Senke sowie die zwei virtuellen Geräte automatisch angelegt und mit den von euch im PulseAudio-Lautstärkeregler definierten Geräten befüllt, so dass ihr jederzeit Screencasts mit Mikrofon und Desktop-Klängen erstellen könnt.

(Titelbild lizenziert unter CC-BY von Denim Dave auf Flickr)

Autor: Christoph

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

17 Kommentare

  1. Hallo Christoph,

    vielen Dank für den interessanten Post. Eine kleine OT Frage: Welches Theme verwendest du (im Video)? Ist das elementary?

    Danke & Grüße

    casula

  2. Wow danke.

    Das erklärt wirklich ausführlich wie man beide Sounds aufnehmen kann. Viele Anleitungen sind da nicht dazu gekommen. Echt Super ;)

  3. Vielen Dank, ich habe schon einige Zeit nach einer Lösung gesucht!

  4. Hallo Christoph,

    man kann über die Methode auch wunderbar Internet Radio usw. aufnehmen. Viel einfacher als die Methode, dem Audiorekorder beizubringen den Master aufzunehmen und auch flexibler.

    Danke

    • Allerdings muss man dafür gar nicht den Aufwand treiben die zwei Pseudo-Quellen anzulegen. Du kannst einfach die pavucontrol laden, die Aufnahme im Sound-Recorder starten und dann in pavucontrol einstellen, dass der Recorder von “Monitor of ” aufnimmt.

      Grüße
      Christoph

  5. Hier möchte ich ausdrücklich auf die Fähigkeiten von Jack hinweisen, da dieser Daemon unglaubliche Sachen mit Audiostreams anstellen kann, ausserdem ist er ein wichtiger Bestandteil von Musiksoftwar unter Linux. Mit Jack lassen sich ziemlich alle Ausgaben in ziemlich jede Eingabe umleiten, und das auch mit Midi-Daten

    • Hi Pandoras! Keine Frage, Jack ist ein mächtiges Instrument für alle Musikschaffende, doch wenn man einfach nur schnell einen Screencast mit Ton vom Desktop und vom Mikro aufnehmen möchte und sonst wenig mit der Produktion von Musik am Hut hat, dann ist Jack eben ein bisschen Overkill ;)

      • Vor allem läuft jack auch nicht immer wie erwartet, ist, wie gesagt, overkill und für mal eben etwas aufnehmen schon ein wenig komplizierter Einzustellen. Da ist pulse eleganter und man braucht nicht unbedingt noch mehr installieren, als man schon hat.

  6. Hallo Christoph,
    eins vorweg: das shiki-theme ist schiki :-)

    Auch wieder ein super Artikel von dir – interessant wäre, ob es eine ähnlich einfache Möglichkeit (Senke/Loopback) über ALSA gibt – ohne jack.

  7. Pingback: Desktop inklusive Ton mit gtk-recordMyDesktop aufnehmen | Linux und Ich

  8. Hallo Christoph, herzlichen Dank für die Anleitung. Sie hat mir sehr weitergeholfen. Einen kleinen Tipp will ich noch loswerden (wenn diese Internetseite hier falsch ist, bitte an eine bessere verschieben oder meinen Beitrag löschen).
    Er betrifft Desktop-Aufnahmen, wenn man Compiz verwendet; in meinem Fall das kommende Xubuntu 12.04 LTS im Test mit Compiz (läuft übrigens tadellos). Gtk-Recordmydesktop funktioniert unmittelbar nach der Installation, stürzt jedoch in der Grundeinstellung nach erfolgtem Abmelden oder Neustart ab. Genauer: Es nimmt zwar etwas auf, lässt sich aber nicht mehr stoppen bzw. nur Abwürgen über die Systemüberwachung geht noch. Dann aber werden keine Daten konvertiert und keine out.ogg-Datei entsteht.
    Deshalb habe ich unter den Einstellungen den Haken entfernt bei “Fensterdekoration ebenfalls aufnehmen”. Ohne Fensterdeko verhält sich gtk-recordmydesktop normal.
    Viele Grüße, Bostaurus

  9. Hallo Christoph,

    vielen Dank für diesen ausführlichen und leicht verständlichen Artikel.

    Zusammen mit deinem Artikel “Desktop inklusive Ton mit gtk-recordMyDesktop aufnehmen” hat es mir endlich geholfen einen Screencast aufzunehmen.

    Gerne spendiere ich dir hierfür einen Kaffee!

    Eine Frage noch: Bei mir zeigt es keinen Input für den Systemsound an.
    Ton per Mikrofon funktioniert perfekt.

    Fehlt hier ein Treiber, oder was vermutest du?

    Vielen Dank für deine Hilfe,
    Thomas

  10. Hallo, vielen lieben dank. Ich komme naemlich mit jack nicht zu recht, das hat mich echt gerettet. Ich habe linux mint 17.

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.