HTML5 аудио для OPUS, переходящий к концу, не переходящий гладко - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть сервер, обслуживающий OPUS-файлы для клиента.

У меня есть аудиоэлемент:

<audio id="recordingAudioElement" controls autoplay="true" controlsList="nodownload">
  <source src="" type="audio/x-wav">
</audio>

В Angular 6 я установил источник звука следующим образом:

this.audioElement.src = this.myService.getAudio(id);

У меня есть метод бэкэнда Java, который получает аудио из входного потока и отправляет его клиенту:

public HttpServletResponse createServletResponse(HttpServletRequest request, HttpServletResponse response, InputStream inputStream) {

    ServletOutputStream os = null;
    byte[] data;
    try {
        data = ByteStreams.toByteArray(inputStream);

        response.setContentType("audio/x-wav");
        response.setStatus(200);

        os = response.getOutputStream();
        os.write(data);
        os.flush();
    } catch (IOException e) {
        e.printStackTrace();
        response.setStatus(500); 
    }
    return response;
}

Теперь, когда я установил src элемента аудио,ползунок остается впереди в течение длительного времени, не перемещается, а затем он переходит к конечной части, когда остаются последние несколько секунд.

enter image description here

Почему это происходит?

1 Ответ

0 голосов
/ 29 декабря 2018

Я решил проблему, добавив в ответ поле заголовка Accept-Ranges: bytes.

response.setHeader("Accept-Ranges", "bytes");

Ссылка: https://developer.mozilla.org/en-US/docs/Web/HTTP/Configuring_servers_for_Ogg_media#Handle_HTTP_1.1_byte_range_requests_correctly

...