Skip to content

Параметр setSegmentResolver

Описание

Метод setSegmentResolver в TeleportConfiguration.Builder позволяет определить функцию для фильтрации запросов сегментов и выбора источника их загрузки. Эта функция возвращает один из источников, заданных классом SegmentSource, определяя, будет ли сегмент обрабатываться Teleport SDK или скачиваться напрямую с CDN.

Класс SegmentSource

Класс SegmentSource определяет возможные источники загрузки сегмента:

  • SegmentSource.CDN: Сегмент будет скачан напрямую с CDN, минуя протокол Teleport. Такие сегменты не попадают в статистику Teleport.
  • SegmentSource.TELEPORT: Сегмент будет обработан Teleport SDK. В конечном итоге он попадет в статистику, независимо от того, был ли он скачан с пиринговой сети или с CDN (если пиры не смогли предоставить сегмент).

Когда это необходимо?

Используйте setSegmentResolver, если вам требуется гибко управлять тем, какие сегменты должны проходить через Teleport PDN, а какие — напрямую через CDN. Это может быть полезно для специфических типов контента (например, аудиодорожки, которые не требуют P2P-оптимизации) или для обхода проблем с определенными сегментами.

Требования к функции

  • Функция должна принимать Uri (URL сегмента), SegmentType (тип сегмента) и SegmentQuality (качество сегмента).
  • Функция должна возвращать одно из значений класса SegmentSource.
  • Вызывается на бэкграунд потоке.

Порядок вызова

Данная функция вызывается после вызова setSegmentAcceptor и setSegmentTypeGetter. Если для сегмента ранее setSegmentAcceptor вернул false, то для данного сегмента setSegmentResolver вызван не будет.

Пример использования

kotlin
TeleportConfiguration.Builder("YOUR_API_KEY")
        .setSegmentResolver { url: Uri, segmentType: SegmentType, segmentQuality: SegmentQuality ->
            // Пример: все аудио-сегменты скачиваются напрямую с CDN, остальные - через Teleport
            if (segmentType == SegmentType.AUDIO) {
                SegmentSource.CDN
            } else {
                SegmentSource.TELEPORT
            }
        }
        .build()

В этом примере все аудио-сегменты будут напрямую скачиваться с CDN и не попадут в статистику Teleport, а все остальные типы сегментов будут обрабатываться Teleport SDK и попадут в статистику.