Решение, которое я нашел, изначально было создано для использования с NAudio для воспроизведения удаленного файла MP3, но я смог повторно использовать его для своих нужд. Возможно, есть и лучшие способы, но это работает.
Воспроизведение аудио из потока с использованием C#
Редактировать: кажется, что соединение сброшено с сервера на сервер, но я не уверен IIS не будет отправлять «Connection: keep-alive» клиенту, однако он отправляется клиенту исходным потоком. Попытался добавить KeepAlive = true в WebRequest и изменить версию протокола на HTTP 1.0, чтобы поддерживать соединение между сервером и сервером без радости.
string url = "https://ssl.geckohost.nz/proxy/caitlinssl?mp=/stream";
Response.ContentType = "audio/aac";
using (Stream stream = WebRequest.Create(url).GetResponse().GetResponseStream())
{
byte[] buffer = new byte[32768];
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
Response.OutputStream.Write(buffer, 0, read);
Response.Flush();
}
}
Вывод: кажется, что в этом случае это невозможно с IIS, чтобы сохранить соединение сервера с сервером, насколько мне удалось найти. Меня не беспокоит масштабируемость, так как это персональный проект для пользователя 1. Решение, с которым я в итоге пришел, состоит в том, чтобы начать захват потока с помощью ffmpeg по клику, транскодировать его в flac / mkv и использовать вариант из приведенного выше. читать файл во время его записи и подавать его на проигрыватель (WPF WebView [IE / Edge]).