Unire due fonti audio con x11grab, possibile?


11

Attualmente sto correndo con la seguente configurazione.

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://...."

Cosa voglio cuocere in:

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

È possibile? E forse anche mescolare "quello che sento" (aka riproduzione) per così dire?

Ho provato qualcosa sulla falsariga di (ma non capendo completamente -map)

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

Ma non è andata molto bene.

Sono così vicino ora, questo mi dà canali sonori, ma tutto sembra come se fossi dentro una specie di barattolo di latta.

#!/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"

Appare solo quando mescolo i due suoni insieme. Sto provando a inserire JACK anche qui, ma senza risultati concreti (ho pensato di passare tutto tramite una scheda mixer per scaricare ffmpeg dal mixaggio).

In esecuzione con:

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

Dà questo tuttavia:

[alsa @ 0x1399280] non può impostare il formato campione 0x10000 2 (argomento non valido)

jack: errore di input / output


Solo un suggerimento, ma Sox è un'utilità cli progettata semplicemente per questo tipo di cose. il congelato sembra avere una maniglia abbastanza ferma su di esso però.
Mikeserv,

Risposte:


2

Dovresti essere in grado di utilizzare il filtro amix per mescolare l'audio.

Esempio:

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>

Ho aggiunto anche una sovrapposizione di webcam, per rimuoverla, togliere la linea della webcam, i punti e virgola e le definizioni dopo il punto e virgola.

Fai attenzione che potresti dover definire -maps se aggiungi qualsiasi input che ha più flussi per rimuovere quelli estranei.

Spiegazione:

-filter_complex
definisce i filtri con più ingressi o uscite
[0:a:0]
Immettere il numero di flusso audio 0 0. (radio Internet)
[1:a:0]
Ingresso numero audio stream 0. 0. (microfono)
amix=inputs=2
Mescola due flussi audio, se non vengono definiti flussi di ingresso, ne seleziona automaticamente due, quindi in questo caso dovresti essere in grado di tralasciare le due definizioni precedenti.
;
Inizia una nuova catena di filtri
[3:v:0]
Inserisci lo stream video numero 0 (webcam)
scale=200:-1
Ridimensiona il video a 200x ???, -1 mantiene le proporzioni, quindi un video 600x480 diventa 200x160.
[webcam]
Chiamare l'output in scala "webcam".
,
Passa al filtro successivo in questa catena.
[2:v:0]
Streaming video numero 2 di input 2 (desktop)
[webcam]
Il flusso di webcam ridimensionato.
overlay=main_w-overlay_w-10:main_h-overlay_h-10
Sovrapponi il secondo input sul primo input, posizionando il secondo input a 10 pixel da destra e 10 pixel dalla parte inferiore.

Inoltre, puoi impostare la sorgente di acquisizione della scheda audio in modo che si mixi per ottenere ciò che il computer emette e spesso puoi riattivare il microfono per ottenere un loopback del monitor del microfono, ma per farlo funzionare correttamente devi usare jack o pulse. Non so perché Jack non abbia funzionato per te, quindi non posso aiutarti, scusa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.