Как я могу поддержать свой внутренний запрос на несколько диапазонов при загрузке видео с aws s3? - PullRequest
2 голосов
/ 10 июля 2019

Я должен выполнить запрос к своему бэкэнду от клиента, чтобы загрузить предварительный просмотр видео, и они находятся на сервере s3.Запрос получить видео с s3 и отправить обратно клиенту.Для большого видео файла это заняло много времени.Поэтому мне нужно выполнить запрос диапазона.Запрос с одним диапазоном работает хорошо и отправляет мне точные байты данных.Но когда я добавляю запрос с несколькими диапазонами, он не отправляет эти фрагментированные данные.Есть ли процесс для этого?

Запрос с одним диапазоном работает хорошо и отправляет мне точные байты данных.Но когда я добавляю запрос с несколькими диапазонами, он не отправляет эти фрагментированные данные.Есть ли процесс для этого?

Примечание: S3 не поддерживает запрос нескольких диапазонов.Поэтому я отправляю запрос на s3 только с одним диапазоном, получаю этот поток байтов и отправляю его клиенту.Но это только отправка первого байтового диапазона.

public multiPartRangeRequest() {
  val boundaryString = MimeTypeUtils.generateMultipartBoundaryString();
    response.setContentType("multipart/byteranges; boundary=" + boundaryString);

    val out = response.getOutputStream();

    for (val range : ranges) {
      val length = objectMeta.getContentLength();
      val start = range.getRangeStart(length);
      val end = range.getRangeEnd(length);
      val rangeLength = end - start + 1;

      val inputStreamFromS3 = s3Manager.getObject(fileId, fileType, length, range)
          .getObjectContent();
      out.println();
      out.println("--" + boundaryString);
      response.setHeader(CONTENT_LENGTH, String.valueOf(rangeLength));
      response.setHeader(CONTENT_RANGE, "bytes " + start + "-" + end + "/" + length);
      IOUtils.copy(inputStreamFromS3, response.getOutputStream());
      out.println(CONTENT_RANGE + ": bytes " + start + "-" + end + "/" + length);
      out.println(CONTENT_LENGTH + ": " + rangeLength);

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...