Skip to content

Teleport JavaScript API

INFO

Данный раздел содержит подробное описание JavaScript API Teleport SDK, доступного после подключения библиотеки на вашу веб-страницу.

Global Namespace teleport

Глобальный объект teleport доступен в контексте window после успешного подключения JavaScript-библиотеки Teleport.

js
console.log(window.teleport.version); // Пример доступа к свойствам

Свойства teleport (Static Properties)

НаименованиеТип данныхОписание
versionstringВерсия загруженного Teleport SDK.
QualityenumПеречисление значений качеств видео.
SegmentTypeenumПеречисление значений типов сегментов.
PeeringModeenumПеречисление значений режимов пиринга.

Методы teleport (Static Methods)

initialize(options)

Инициализирует экземпляр Teleport SDK.

Возвращаемый результат: Promise<ITeleportInstance>

Аргументы:

НаименованиеТип данныхОписание
optionsITeleportFactoryOptionsПараметры инициализации Teleport SDK.

Пример:

js
let tlprt = await teleport.initialize({
    apiKey: "APIKEY", // Ваш API-ключ
    loader: {
        type: "player plugin ID", // Идентификатор плагина плеера
        params: {player: player} // Экземпляр плеера
    }
});

await player.load("manifest url");

Интерфейс ITeleportInstance

Экземпляр ITeleportInstance возвращается методом teleport.initialize() и предоставляет доступ к управлению пиринговой сетью, получению статистики и другим функциям SDK.

События ITeleportInstance

onPeeringModeChanged

Событие, вызываемое при изменении режима пиринга.

Сигнатура: (mode: PeeringMode) => void

Пример:

js
tlrpt.onPeeringModeChanged = (mode) => console.log(`current peering mode: ${teleport.PeeringMode[mode]}`);

onPeerConnectionOpened

Событие, вызываемое при установке соединения с новым пиром.

Сигнатура: (peerId: string) => void

Пример:

js
tlrpt.onPeerConnectionOpened = (peerId) => console.log(`peer connected: ${peerId}`);

onPeerConnectionClosed

Событие, вызываемое при разрыве соединения с пиром.

Сигнатура: (peerId: string) => void

Пример:

js
tlrpt.onPeerConnectionClosed = (peerId) => console.log(`peer disconnected: ${peerId}`);

onSegmentLoaded

Событие, вызываемое при загрузке нового видео-сегмента.

Сигнатура: (segment: ISegment) => void

Пример:

js
tlrpt.onSegmentLoaded = (segment) => console.log(`segment loaded:`, segment);

onSegmentUploaded

Событие, вызываемое при отдаче видео-сегмента в пиринговую сеть.

Сигнатура: (segment: ISegment) => void

Пример:

js
tlrpt.onSegmentUploaded = (segment) => console.log(`segment uploaded:`, segment);

Свойства ITeleportInstance

НаименованиеТип данныхТолько для чтенияОписание
versionstringtrueВерсия загруженного Teleport SDK.
apiKeystringtrueAPI Key, с которым инициализирован Teleport.
connectionIdstringtrueИдентификатор текущего пира.
connectedbooleantrueФлаг активности подключения к сигнальному серверу Teleport.
peeringModePeeringModefalseТекущий режим работы пиринга.

Методы ITeleportInstance

buffering()

Метод для сигнализирования Teleport о возникновении буферизации в видео-плеере.

getStatTotals()

Возвращает суммарную статистику по трафику у текущего экземпляра Teleport.

Возвращаемый результат: IStatTotals

Пример:

js
console.log(tlprt.getStatTotals());

getStatDetails()

Возвращает суммарную статистику по трафику в разрезе WebRTC-подключений у текущего экземпляра Teleport.

Возвращаемый результат: IStatDetails

Пример:

js
console.log(tlprt.getStatDetails());

dispose()

Метод, уничтожающий экземпляр Teleport с корректным высвобождением всех ресурсов.

Возвращаемый результат: Promise<void>

getLoader()

Возвращает API текущего лоадера. API есть не у всех лоадеров, в случае его отсутствия возвращается undefined.

Возвращаемый результат: any

Перечисления (Enums)

Список доступных перечислений в глобальном namespace teleport.

Quality

Перечисление качеств видео-потока.

Доступные значения:

  • Q144P
  • Q240P
  • Q360P
  • Q480P
  • Q720P
  • Q1080P
  • Q4K
  • Other

SegmentType

Перечисление типов сегментов.

Доступные значения:

  • Unknown
  • Video
  • Audio
  • Caption
  • Other

PeeringMode

Перечисление режимов пиринга для работы Teleport SDK.

Доступные значения:

  • Off - Пиринг выключен.
  • Download - Пир может только скачивать контент из Teleport PDN (Peer-to-Peer Delivery Network).
  • Upload - Пир может только раздавать контент в Teleport PDN.
  • Full - Пир работает в полном режиме: скачивает и раздает контент.

Пример:

js
tlrpt.peeringMode = teleport.PeeringMode.Download;

Интерфейсы (Interfaces)

Описание доступных TypeScript/JavaScript интерфейсов.

ITeleportFactoryOptions

Параметры для метода teleport.initialize().

НаименованиеТип данныхОписание
apiKeystringAPI key для доступа к Teleport. Можно получить в личном кабинете.
loaderIPluginOptionsПараметры для интеграции с видео-плеером.

IPluginOptions

Параметры для настройки лоадера плеера.

НаименованиеТип данныхОписание
typestringИдентификатор плагина для интеграции с плеером (например, shaka, hls-js, video-js, jwplayer, uppod-html5, clappr-dash, clappr-hls, sw).
paramsIPluginIntegrationOptionsДополнительные параметры для интеграции с видео-плеером.

IPluginIntegrationOptions

Параметры для конфигурации поведения плагинов к плеерам.

НаименованиеТип данныхОписание
manifestAcceptor(url: string) => booleanФункция для определения HTTP-запроса с манифестом видео-потока.
segmentAcceptor(url: string) => booleanФункция для определения HTTP-запроса с видео-сегментом.
urlCleaner(url: string) => stringФункция для унификации URL-адресов видео-сегмента и манифеста.
qualityGetter(segmentUrl: string) => [Quality](#enums-quality)Функция для определения качества активного видео-потока.
segmentTypeGetter(segmentUrl: string) => [SegmentType](#enums-segmenttype)Функция для определения типа загружаемого сегмента.
bufferSizeGetter() => numberФункция для считывания текущего размера буфера у плеера.
durationGetter(segmentUrl: string) => numberФункция для считывания длительности запрашиваемого видео-сегмента.

ISegment

JavaScript-объект, содержащий данные о видео-сегменте.

НаименованиеТип данныхОписание
timestampnumberUNIX timestamp времени загрузки сегмента.
resultISegmentResultСвойство с данными результата загрузки сегмента.
requestISegmentRequestСвойство с данными запрошенного сегмента.
timingsISegmentTimingsСвойство с данными замеренных таймингов загрузки.

ISegmentResult

Результат загрузки видео-сегмента.

НаименованиеТип данныхОписание
segmentIdstringИдентификатор сегмента.
sourceIdCDN | PDNИсточник, из которого был скачан сегмент (CDN или PDN).
targetIdstring | undefinedИдентификатор пира, с которого был скачан сегмент, если sourceId = PDN.
rangestring | undefinedДиапазон скачанных байтов сегмента.
flagsnumberФлаги загрузки.
havesnumberКоличество пиров с указанным сегментом в рое.
waitTimeoutnumberТаймаут ожидания из Teleport PDN.
downloadTimeoutnumberТаймаут загрузки из Teleport PDN.
sizenumberРазмер сегмента в байтах.
swarmSizenumberРазмер роя (количество активных пиров в сети).
connectedbooleanФлаг активности соединения с сигнальным сервером Teleport.
modePeeringModeТекущий режим пиринга.
activebooleanФлаг активности Teleport PDN.

ISegmentRequest

Данные о запрошенном видео-сегменте.

НаименованиеТип данныхОписание
urlstringИсходный URL сегмента.
uristringУнифицированный URI сегмента после обработки urlCleaner.
qualityQualityТекущее качество видео-потока.
typeSegmentTypeТип сегмента.
durationnumberДлительность сегмента в секундах.
bufferSizenumberРазмер буфера в плеере в секундах.

ISegmentTimings

Замеренные тайминги загрузки видео-сегмента.

НаименованиеТип данныхОписание
req_startnumberUNIX timestamp времени запроса сегмента плеером (начало запроса).
tthavenumberДельта ожидания сегмента в Teleport PDN (время до первого ответа пира).
ttsentnumberДельта времени инициализации загрузки (время до отправки запроса).
ttfbnumberДельта ожидания первого чанка (Time To First Byte).
ttlbnumberДельта окончания загрузки сегмента (Time To Last Byte).
ttfinishnumberДельта окончания обработки сегмента и передачи данных в плеер.

IStatTotals

Суммарная статистика по трафику.

НаименованиеТип данныхОписание
cdnITrafficСтатистика загрузки с CDN.
pdnITrafficСтатистика загрузки с Teleport PDN.
uploadITrafficСтатистика отдачи в Teleport PDN.

IStatDetails

Детальная статистика по трафику в разрезе WebRTC-подключений.

НаименованиеТип данныхОписание
totalsIStatTotalsСуммарная статистика загрузки.
detailsArray<[IStatDetailsRow](#interfaces-istatdetailsrow)>Статистика загрузки в разрезе WebRTC-соединений.

IStatDetailsRow

Строка детальной статистики для каждого пира.

НаименованиеТип данныхОписание
idstringИдентификатор пира.
downloadITrafficСтатистика загрузки с пира.
uploadITrafficСтатистика отдачи пиру.

ITraffic

Статистические данные по трафику.

НаименованиеТип данныхОписание
sizenumberОбъем трафика в байтах.
countnumberКоличество сегментов.
timenumberВремя загрузки в миллисекундах.
speednumberСкорость загрузки в мегабитах в секунду.