Combinar dos fuentes de audio con x11grab, ¿es posible?


11

Actualmente estoy ejecutando con la siguiente configuración.

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

Lo que quiero hornear:

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

es posible? ¿Y tal vez incluso mezclar "lo que escucho" (también conocido como reproducción) por así decirlo?

He intentado algo similar a (pero no entiendo 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 \

Pero eso realmente no fue tan bien.

Estoy tan cerca ahora, esto me da canales de sonido, pero todo suena como si estuviera dentro de una especie de lata.

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

Solo aparece cuando mezclo los dos sonidos juntos. Tratando de poner JACK aquí también, pero sin ningún resultado real (pensé en pasar todo a través de una mesa de mezclas para descargar ffmpeg de la mezcla).

Corriendo con:

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

Da esto sin embargo:

[alsa @ 0x1399280] no puede establecer el formato de muestra 0x10000 2 (argumento no válido)

jack: error de entrada / salida


Solo una sugerencia, pero Sox es una utilidad cli simplemente implementada diseñada para este tipo de cosas. Sin embargo, congelado parece tener un control bastante firme.
mikeserv

Respuestas:


2

Debería poder usar el filtro amix para mezclar su audio.

Ejemplo:

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>

También agregué una superposición de cámara web, para eliminarla, quite la línea de la cámara web, el punto y coma y las definiciones después del punto y coma.

Tenga en cuenta que es posible que tenga que definir -maps si agrega cualquier entrada que tenga múltiples flujos para eliminar los extraños.

Explicación:

-filter_complex
define filtros con múltiples entradas o salidas
[0:a:0]
Ingrese el número 0 de transmisión de audio 0 (radio por Internet)
[1:a:0]
Entrada 1 del flujo de audio número 0. (micrófono)
amix=inputs=2
Mezcle dos secuencias de audio, si no hay secuencias de entrada definidas, selecciona automáticamente dos, por lo que en este caso, debería poder omitir las dos definiciones anteriores.
;
Comience una nueva cadena de filtros
[3:v:0]
Ingrese el número de transmisión de video número 3 (cámara web)
scale=200:-1
Escala el video a 200x ???, -1 mantiene la relación de aspecto, por lo que un video 600x480 se convierte en 200x160.
[webcam]
Llame a la salida escalada "webcam".
,
Continúe con el siguiente filtro en esta cadena.
[2:v:0]
Ingrese la secuencia de video número 2 0 (escritorio)
[webcam]
La transmisión de la webcam a escala.
overlay=main_w-overlay_w-10:main_h-overlay_h-10
Superponga la segunda entrada sobre la primera entrada, colocando la segunda entrada 10 píxeles desde la derecha y 10 píxeles desde la parte inferior.

Además, puede configurar la fuente de captura de la tarjeta de sonido para que se mezcle para obtener lo que la computadora emite, y a menudo puede activar el silencio del micrófono para obtener un loopback del monitor del micrófono, pero para que funcione correctamente debe usar un conector o pulso. No sé por qué Jack no funcionó para ti, así que no puedo ayudarte con eso, lo siento.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.