Параметр 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 вызван не будет.
Пример использования
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 и попадут в статистику.