Я использую ASP.NET MVC и C # для проекта.
Одна из задач заключается в следующем: когда пользователь нажимает на ссылку, ему необходимо получить идентификатор ссылки, затем использовать эту ссылку для создания внешней ссылки, которая представляет собой аудиофайл, а затем воспроизвести ее в веб-браузере (не сохранять как файл).
Текущее решение: загрузить аудиофайл по внешней ссылке, получить байты, а затем поместить его в ответ как аудио / wav
public async Task<HttpResponseMessage> StreamAudioAsync(string id)
{
var response = Request.CreateResponse(HttpStatusCode.Moved);
var data = GetAudio(id);
if (data != null && data.Length > 0)
{
response.StatusCode = HttpStatusCode.OK;
response.Content = new ByteArrayContent(data);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("audio/wav");
}
return response;
}
private byte[] GetAudio(string id)
{
string accessKey = Cp.Service.Settings.AccessKey;
string secretAccessKey = Cp.Service.Settings.SecretAccessKey;
string url = string.Format("https://....../......php?access_key={0}&secret_access_key={1}&action=recording.download&format=mp3&sid={2}", accessKey, secretAccessKey, id);
byte[] data = null;
try
{
using (var wc = new System.Net.WebClient())
{
data = wc.DownloadData(url);
}
}
catch //(Exception ex)
{
//forbidden, proxy issues, file not found (404) etc
//ms = null;
}
return data;
}
Этосначала загрузит аудиоданные.Есть ли способ для потокового аудио потока от URL-адреса непосредственно к ответу?чтобы сервер не удерживал данные bytes[]
в памяти?Иногда размер данных огромен.
Спасибо