Zwei Audioquellen mit x11grab zusammenführen, möglich?

11

Derzeit verwende ich das folgende Setup.

ffmpeg \
 -i http://pub1.di.fm:80/di_vocaltrance \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 \
 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
 -c:a libmp3lame -ab 96k -ar 22050 \
 -threads 0 \
 -f flv "rtmp://...."

Was ich backen möchte:

 -f alsa -ac 2 -i hw:0 -acodec pcm_s32le -aq 1 -ab 128k\

Ist das möglich? Und vielleicht sogar sozusagen "was ich höre" (auch bekannt als Wiedergabe) einmischen?

Ich habe etwas in der Art von versucht (aber nicht vollständig verstanden -map)

 -i http://pub1.di.fm:80/di_vocaltrance -map 0:1 \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 -map 0:0 \

Aber das lief nicht so gut.

Ich bin jetzt so nah dran, das gibt mir Soundkanäle, aber alles klingt so, als wäre ich in einer kleinen Blechdose.

#!/bin/bash
KEY=`cat key.db`

ffmpeg \
 -i http://pub1.di.fm:80/di_vocaltrance \
 -f alsa -ac 2 -i hw:0 -acodec mp3 -aq 1 -ab 128k \
 -f x11grab -s 1920x1080 -r 25 -i :0.0 \
 -c:v libx264 -preset fast -pix_fmt yuv420p -s 1280x800 \
 -c:a mp3 -ab 96k -ar 22050 \
 -threads 0 \
 -map 0:0 -map 1:0 -map 2:0 \
 -f flv "rtmp://live.twitch.tv/app/$KEY"

Es erscheint nur, wenn ich die beiden Sounds zusammenmische. Ich habe versucht, JACK auch hier reinzuholen, aber ohne tatsächliche Ergebnisse (ich dachte, ich würde alles über ein Mischpult weiterleiten, um ffmpeg aus dem Mischen zu entladen).

Laufen mit:

 -f alsa -ac 2 -i jack \
 ....

Gibt dies jedoch:

[alsa @ 0x1399280] kann das Beispielformat 0x10000 2 nicht festlegen (ungültiges Argument)

Buchse: Eingabe- / Ausgabefehler

Torxed
quelle
Nur ein Vorschlag, aber Sox ist ein einfach implementiertes CLI-Dienstprogramm, das für diese Art von Dingen entwickelt wurde. Frozen scheint jedoch einen ziemlich festen Griff zu haben.
Mikeserv

Antworten:

2

Sie sollten in der Lage sein, den Amix-Filter zu verwenden, um Ihr Audio zu mischen.

Beispiel:

ffmpeg \
  -i http://pub1.di.fm:80/di_vocaltrance \ # internet radio
  -f alsa    -i hw:0 \                     # microphone
  -f x11grab -i :0.0 \                     # computer desktop
  -f v4l2    -i /dev/video0 \              # webcam or
  # -f iec61883 -i auto \                  # firewire camcorder
  -filter_complex '[0:a:0][1:a:0]amix=inputs=2;[3:v:0]scale=200:-1[webcam],[2:v:0][webcam]overlay=main_w-overlay_w-10:main_h-overlay_h-10' \
  <output>

Ich habe auch ein Webcam-Overlay hinzugefügt, um es zu entfernen, die Webcam-Linie, das Semikolon und die Definitionen nach dem Semikolon zu entfernen.

Beachten Sie, dass Sie möglicherweise -maps definieren müssen, wenn Sie Eingaben mit mehreren Streams hinzufügen, um die überflüssigen zu entfernen.

Erläuterung:

-filter_complex
Definiert Filter mit mehreren Ein- oder Ausgängen
[0:a:0]
Geben Sie den Audio-Stream 0 von 0 ein. (Internetradio)
[1:a:0]
Geben Sie den Audiostream Nummer 0 von 1 ein. (Mikrofon)
amix=inputs=2
Mischen Sie zwei Audiostreams. Wenn keine Eingabestreams definiert sind, werden automatisch zwei ausgewählt. In diesem Fall sollten Sie in der Lage sein, die beiden oben genannten Definitionen wegzulassen .
;
Starten Sie eine neue Filterkette
[3:v:0]
Geben Sie den Videostream Nr. 0 von 3 ein. (Webcam)
scale=200:-1
Skalieren Sie das Video auf 200x ???, -1 behält das Seitenverhältnis bei, sodass aus einem 600x480-Video 200x160 wird.
[webcam]
Nennen Sie die skalierte Ausgabe "Webcam".
,
Fahren Sie mit dem nächsten Filter in dieser Kette fort.
[2:v:0]
Geben Sie den Videostream Nummer 0 von 2 ein. (Desktop)
[webcam]
Der skalierte Webcam-Stream.
overlay=main_w-overlay_w-10:main_h-overlay_h-10
Überlagern Sie den zweiten Eingang mit dem ersten Eingang und platzieren Sie den zweiten Eingang 10 Pixel von rechts und 10 Pixel von unten.

Sie können auch festlegen, dass die Soundkarten-Erfassungsquelle gemischt wird, um die Computerausgänge zu erhalten, und Sie können das Mikrofon häufig stummschalten, um einen Loopback für den Mikrofonmonitor zu erhalten. Damit es jedoch ordnungsgemäß funktioniert, müssen Sie eine Buchse oder einen Impuls verwenden. Ich weiß nicht, warum Jack nicht für dich gearbeitet hat, also kann ich dir dabei nicht helfen, sorry.

gefroren
quelle