Есть. NET Базовое консольное приложение, которое действует как UDP-сервер и UDP-клиент
- UDP-клиент, получая аудиопакет.
- UDP-сервер, отправляя каждый полученный пакет .
Вот пример кода консольного приложения:
static UdpClient udpListener = new UdpClient();
static IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.1.230"), 6980);
static IAudioSender audioSender = new UdpAudioSender(new IPEndPoint(IPAddress.Parse("192.168.1.230"), 65535));
static void Main(string[] args)
{
udpListener.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpListener.Client.Bind(endPoint);
try
{
udpListener.BeginReceive(new AsyncCallback(recv), null);
}
catch (Exception e)
{
throw e;
}
Console.WriteLine("Press enter to dispose the running service");
Console.ReadLine();
}
private async static void recv(IAsyncResult res)
{
byte[] received = udpListener.EndReceive(res, ref endPoint);
OnAudioCaptured(received);
udpListener.BeginReceive(new AsyncCallback(recv), null);
}
С другой стороны, у меня есть приложение node js API, которое предполагает выполнение команды FFmpeg как дочерний процесс и выполнить следующие действия:
- получить аудиопакет в качестве входных данных от UDP-сервера консольного приложения.
- преобразовать полученные байты в WebM
- pipe вывод результата в ответ.
Наконец, на стороне клиента у меня должен быть элемент audio с исходным значением, равным http://localhost: 3000
На данный момент я могу выполнить только эту команду FFmpeg:
ffmpeg -f s16le -ar 48000 -ac 2 -i 'udp://192.168.1.230:65535' output.wav
Что делает следующее
- Получение пакета UDP на входе
- Преобразование получил байты в аудиофайл output.wav.
Как бы мне exe симпатичный дочерний процесс на сервере node js, который получает пакеты UDP и передает результат в ответ как Webm?