Ci sono due soluzioni che posso visualizzare per questo scenario:
- Salvataggio del file su un computer remoto
- Avere un flusso live trasmesso in modo che un computer remoto possa ricevere l'audio
Salvataggio del file
Questo è probabilmente il metodo più semplice. Consentire allo stream di completare la registrazione, quindi copiarlo in una posizione predeterminata sulla rete. Questo script dovrebbe adattarsi alla fattura:
#!/bin/bash
#
ffmpeg -f avfoundation -i ":1" -t 10 audiocapture.mp3
scp audiocapture.mp3 user@host:/foo/bar/audiocapture.mp3
exit 0
Lo script non esegue alcun tipo di controllo degli errori di alcun tipo ma, registrerà dal microfono, al termine lo copierà tramite SCP (copia protetta) su un computer remoto. Per fare in modo che funzioni, è necessario impostare chiavi SSH per facilitare un accesso non interattivo .
Streaming in tempo reale
L'altro metodo consiste nel trasmettere l'audio via TCP tramite una connessione point-to-point. Usando lo stesso input della risposta precedente, cambiamo semplicemente l'output in un flusso di rete:
$ ffmpeg -f avfoundation -i ":1" -t 10 -f mpegts "tcp://remote_host_or_IP_:port"
Dove ....
-
-f
è il formato di trasporto; in questo caso mpegts (MPEG Transport Stream)
-
tcp://remote_host_or_IP_:port
è il valore URI del nome host / indirizzo IP del computer remoto e il numero di porta su cui sarà in ascolto.
Imposta il computer remoto su "ascolta"
Usando ffplay
il computer remoto può essere impostato per ricevere il flusso (ho usato Windows 10 per questa parte, ma funzionerà in macOS / Windows / BSD / Linux)
Emetti il comando
ffplay -i tcp://local_host_or_IP_addr:port?listen -hide_banner
Dove ....
-
-i
definisce il flusso di input
-
local_host_or_IP_addr:port
è l'indirizzo IP o il nome host e la porta TCP del computer in ascolto (non il computer che esegue lo streaming).
-
?listen
è richiesto per metterlo in "modalità di ascolto" altrimenti scadrà se lo stream non è presente.
Di seguito è riportato un esempio di Windows 10 che riceve lo streaming dal microfono di un host macOS. L'indirizzo IP del computer Windows 10 è 10.0.0.123 e sto trasmettendo sulla porta 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 volta che inizia a ricevere la trasmissione, i valori sopra indicati cambieranno e si aprirà una finestra di "visualizzazione" del giocatore.
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
Continuerà a "ascoltare" fino a quando il processo non sarà terminato.