В настоящее время я пытаюсь перейти с прямого доступа по IP к моему инструменту tts на доступ к домену, контролируемый nginx.
Все работает так, как и задумано. За исключением того, что мой Naudio в моей программе больше не воспроизводит аудио без ошибок.
code, который я использую, не изменился, и вызов функции потоковой передачи напрямую из URL-адреса приводит к воспроизведению аудио без ошибок. Даже локальное сохранение потока ПОСЛЕ его воспроизведения с помощью whitenoise по-прежнему является идеальным аудиофайлом. Поэтому у меня большой вопрос. Изменяет ли доступ Nginx/домена что-либо в ответе на этот запрос или вы знаете какой-либо способ проверить это самостоятельно?
code, который я использую для воспроизведения потока:
Надеюсь, вы сможете мне помочь.
Понятия не имею, что на самом деле делать.
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(data.BaseUrl);
httpClient.Timeout = TimeSpan.FromSeconds(2);
HttpResponseMessage res = null;
try
{
var uriBuilder = new UriBuilder(data.BaseUrl);
uriBuilder.Path = data.StreamPath;
var query = HttpUtility.ParseQueryString(uriBuilder.Query);
query["text"] = voiceLine;
query["voice"] = voice;
query["language"] = getAlltalkLanguage(language);
query["output_file"] = "ignoreme.wav";
uriBuilder.Query = query.ToString();
LogHelper.Debug(MethodBase.GetCurrentMethod().Name, $"Requesting... {uriBuilder.Uri}", eventId);
using var req = new HttpRequestMessage(HttpMethod.Get, uriBuilder.Uri);
res = await httpClient.SendAsync(req, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
EnsureSuccessStatusCode(res);
// Copy the sound to a new buffer and enqueue it
LogHelper.Info(MethodBase.GetCurrentMethod().Name, "Getting response...", eventId);
var responseStream = await res.Content.ReadAsStreamAsync().ConfigureAwait(false);
LogHelper.Info(MethodBase.GetCurrentMethod().Name, "Done", eventId);
return responseStream ;
}
catch (Exception ex)
{
LogHelper.Error(MethodBase.GetCurrentMethod().Name, ex.ToString(), eventId);
}
CurrentlyPlayingStream = queueItem;
var stream = new RawSourceWaveStream(queueItem, new NAudio.Wave.WaveFormat(24000, 16, 1));
LogHelper.Info(MethodBase.GetCurrentMethod().Name, "Playing next queue item", eventId);
var volumeSampleProvider = new VolumeSampleProvider(stream.ToSampleProvider());
volumeSampleProvider.Volume = Volume;
ActivePlayer = new WasapiOut(AudioClientShareMode.Shared, 0);
ActivePlayer.PlaybackStopped += SoundOut_PlaybackStopped;
ActivePlayer.Init(volumeSampleProvider);
ActivePlayer.Play();