Naudio -> Переключение с потока http://IP:PORT на HTTP://STREAM.DOMAIN.XYZ заставляет Naudio перейти на режим Whitenoise

В настоящее время я пытаюсь перейти с прямого доступа по 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();
Серафим
Вопрос задан19 апреля 2024 г.

1 Ответ

2
Герман
Ответ получен5 сентября 2024 г.

Ваш ответ

Загрузить файл.