Hay dos soluciones que puedo visualizar para este escenario:
- Guardar el archivo en una computadora remota
- Transmisión de transmisión en vivo para que una computadora remota pueda recibir el audio
Guardando el archivo
Este es probablemente el método más fácil. Permita que la transmisión termine de grabarse y luego cópiela en una ubicación predeterminada de la red. Este script debe ajustarse a la factura:
#!/bin/bash
#
ffmpeg -f avfoundation -i ":1" -t 10 audiocapture.mp3
scp audiocapture.mp3 user@host:/foo/bar/audiocapture.mp3
exit 0
El script no realiza ninguna comprobación de errores de ningún tipo, pero grabará desde el micrófono, luego, cuando termine, lo copiará a través de SCP (copia segura) a una computadora remota. Para que esto funcione, debe configurar claves SSH para facilitar un inicio de sesión no interactivo .
Transmisión en tiempo real
El otro método es transmitir el audio a través de TCP a través de una conexión punto a punto. Usando la misma entrada de la respuesta anterior, simplemente cambiamos la salida a un flujo de red:
$ ffmpeg -f avfoundation -i ":1" -t 10 -f mpegts "tcp://remote_host_or_IP_:port"
Donde ....
-
-f
es el formato de transporte; en este caso mpegts (flujo de transporte MPEG)
-
tcp://remote_host_or_IP_:port
es el valor URI del nombre de host / dirección IP de la computadora remota y el número de puerto que escuchará.
Configura la computadora remota para que "escuche"
Al usar ffplay
, la computadora remota puede configurarse para recibir la transmisión (usé Windows 10 para esta parte, pero funcionará en macOS / Windows / BSD / Linux)
Emitir el comando
ffplay -i tcp://local_host_or_IP_addr:port?listen -hide_banner
Donde ....
-
-i
define el flujo de entrada
-
local_host_or_IP_addr:port
es la dirección IP o el nombre de host y el puerto TCP de la computadora que está escuchando (no la computadora que está transmitiendo).
-
Se requiere
?listen
para ponerlo en "modo de escucha"; de lo contrario, se agotará el tiempo si la transmisión no está allí.
A continuación se muestra un ejemplo realizado en Windows 10 que recibe la transmisión desde el micrófono de un host macOS. La dirección IP de la máquina con Windows 10 es 10.0.0.123 y estoy transmitiendo en el puerto 1234.
C:\Users\allan\Desktop\ffmpeg>ffplay -i tcp://10.0.0.123:1234?listen -hide_banner
nan : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Una vez que comience a recibir la transmisión, los valores anteriores cambiarán y se abrirá una ventana de "visualización" del reproductor.
Input #0, mpegts, from 'tcp://10.0.0.123:1234?listen':B f=0/0
384 kb/s nan : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Program 1 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Metadata: 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Service01 nan : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0 0B f=0/0
FFmpeg nan : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0 sq= 0B f=0/0
Stream #0:0[0x100]: Audio: mp2 ([3][0][0][0] / 0x0003), 44100 Hz, stereo, fltp, 384 kb/s
11.35 M-A: 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Continuará "escuchando" hasta que finalice el proceso.