Il existe deux solutions que je peux envisager pour ce scénario :
- Enregistrer le fichier sur un ordinateur distant
- Avoir une diffusion en direct pour qu'un ordinateur distant puisse recevoir l'audio
Enregistrer le fichier
C'est probablement la méthode la plus simple. Permettre à l'enregistrement de se terminer puis le copier dans un emplacement prédéterminé sur le réseau. Ce script devrait faire l'affaire :
#!/bin/bash
#
ffmpeg -f avfoundation -i ":1" -t 10 audiocapture.mp3
scp audiocapture.mp3 user@host:/foo/bar/audiocapture.mp3
exit 0
Le script ne fait aucune vérification d'erreur de quelque nature que ce soit, mais enregistrera à partir du microphone, puis, une fois terminé, le copiera via SCP (copie sécurisée) vers un ordinateur distant. Pour que cela fonctionne, vous devez configurer les clés SSH pour faciliter une connexion non interactive.
Diffuser en temps réel
L'autre méthode consiste à diffuser l'audio via TCP via une connexion point à point. En utilisant le même input que dans la réponse précédente, nous changeons simplement la sortie vers un flux réseau :
$ ffmpeg -f avfoundation -i ":1" -t 10 -f mpegts "tcp://remote_host_or_IP_:port"
Où....
-f
est le format de transport; dans ce cas un mpegts (MPEG Transport Stream)
tcp://remote_host_or_IP_:port
est la valeur URI de l'adresse IP ou du nom d'hôte de l'ordinateur distant et du numéro de port sur lequel il écoutera.
Configurer l'ordinateur distant en mode "écoute"
En utilisant ffplay
, l'ordinateur distant peut être configuré pour recevoir le flux (j'ai utilisé Windows 10 pour cette partie, mais cela fonctionnera également sur macOS/Windows/BSD/Linux)
Émettre la commande
ffplay -i tcp://local_host_or_IP_addr:port?listen -hide_banner
Où....
-i
définit le flux d'entrée
local_host_or_IP_addr:port
est l'adresse IP ou le nom d'hôte et le port TCP de l'ordinateur qui écoute (pas l'ordinateur qui diffuse).
?listen
est requis pour le mettre en mode "écoute" sinon le temps d'attente sera dépassé s'il n'y a pas de flux.
Ci-dessous se trouve un exemple réalisé sous Windows 10 recevant le flux du microphone d'un hôte macOS. L'adresse IP de la machine Windows 10 est 10.0.0.123 et je diffuse sur le port 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
Dès le début de la réception de la diffusion, les valeurs ci-dessus changeront et une fenêtre de "visualisation" du lecteur s'ouvrira.
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
Il continuera à "écouter" jusqu'à ce que le processus soit arrêté.
1 votes
Apparemment c'est le cas, voir duckduckgo.com/?q=streaming+ffmpeg+over+ssh