Teleport static

Namespace доступный в глобальном контексте страницы после подключения javascript-библиотеки на страницу

Пример: console.log(window.teleport.version)

Properties

Наименование Тип данных Описание
version string Версия загруженного Teleport SDK
Quality enum Перечисление значений видео качеств
SegmentType enum Перечисление значений типов сегментов
PeeringMode enum Перечисление значений режимов пиринга

Methods

  • initialize(options)

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

    тип возвращаемого результата: Promise<ITeleportInstance>

    аргументы:

Наименование Тип данных Описание
options ITeleportFactoryOptions параметры инициализации
*пример:*

```js
let tlprt = await teleport.initialize({
    apiKey: "APIKEY",
    loader: {
        type: "player plugin ID",
        params: {player: player}
    }
});

await player.load("manifest url");
```

ITeleportInstance

Events

  • onPeeringModeChanged

    событие вызываемое при изменении режима пиринга

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

    пример:

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

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

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

    пример:

    tlprt.onPeerConnectionOpened = (peerId) => console.log(`peer connected: ${peerId}`);
    
  • onPeerConnectionClosed

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

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

    пример:

    tlprt.onPeerConnectionOpened = (peerId) => console.log(`peer disconnected: ${peerId}`);
    
  • onSegmentLoaded

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

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

    пример:

    tlprt.onSegmentLoaded = (segment) => console.log(`segment loaded:`, segment);
    
  • onSegmentUploaded

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

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

    пример:

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

Properties

Наименование Тип данных Readonly Описание
version string true Версия загруженного Teleport SDK
apiKey string true API Key с которым инициализирован Teleport
connectionId string true Идентификатор пира
connected boolean true Флаг активности подключения к сигнальному серверу Teleport
peeringMode PeeringMode false Режим работы пиринга

Methods

  • buffering()

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

  • getStatTotals()

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

    тип возвращаемого результата: IStatTotals

    пример:

    console.log(tlprt.getStatTotals())
    
  • getStatDetails()

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

    тип возвращаемого результата: IStatDetails

    пример:

    console.log(tlprt.getStatDetails())
    
  • dispose()

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

    тип возвращаемого результата: 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.

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

  • Off - пиринг выключен.
  • Download - пир может только скачивать из Teleport PDN.
  • Upload - пир может только раздавать в Teleport PDN.
  • Full - пир работает в полном режиме.

пример:

tlrpt.peeringMode = teleport.PeeringMode.Download;

Interfaces

Доступные интерфейсы.

ITeleportFactoryOptions

Наименование Тип данных Описание
apiKey string API key для доступа к teleport, можно получить в личном кабинет
loader IPluginOptions параметры для интеграции с видео-плеером

IPluginOptions

Наименование Тип данных Описание
type string идентификатор плагина для итеграции с плеером (shaka, hls-js, video-js, jwplayer, uppod-html5, clappr-dash, clappr-hls, sw)
params IPluginIntegrationOptions параметры для интеграции с видео-плеером

IPluginIntegrationOptions

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

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

ISegment

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

Наименование Тип данных Описание
timestamp number timestamp времени загрузки сегмента
result ISegmentResult свойство с данными результата загрузки
request ISegmentRequest свойство с данными запрашиваемого сегмента
timings ISegmentTimings свойство с данными замеряемых таймингов

ISegmentResult

Наименование Тип данных Описание
segmentId string идентификатор сегмента
sourceId CDN|PDN источник из которого скачать сегмент
targetId string|undefined идентификатор пира, с которого был скачан сегмент, если sourceId = PDN
range string|undefined диапазон скачанных байтов сегмента
flags number флаги загрузки
haves number количество пиров с указанным сегментов в рое
waitTimeout number таймаут ожидания из Teleport PDN
downloadTimeout number таймаут загрузки из Teleport PDN
size number размер сегмента в байтах
swarmSize number размер роя
connected boolean флаг активности соединения с серверами teleport
mode PeeringMode режим пиринга
active boolean флаг активности Teleport PDN

ISegmentRequest

Наименование Тип данных Описание
url string исходный url сегмента
uri string унифицированный URI сегмента, после обработки urlCleaner'ом
quality Quality текущее качество видео-потока
type SegmentType тип сегмента
duration number Длительность сегмента, секунд
bufferSize number Размер буфера в плеере, секунд

ISegmentTimings

Наименование Тип данных Описание
req_start number timestamp времени запроса сегмента плеером
tthave number дельта ожидания сегмента в Teleport PDN
ttsent number дельта времени инициализации загрузки
ttfb number дельта ожидания первого чанка
ttlb number дельта окончания загрузки сегмента
ttfinish number дельта окончания обработки сегмента и передача данных в плеер

IStatTotals

Наименование Тип данных Описание
cdn ITraffic статистика загрузки с CDN
pdn ITraffic статистика загрузки с Teleport PDN
upload ITraffic статистика отдачи в Teleport PDN

IStatDetails

Наименование Тип данных Описание
totals IStatTotals суммарная статистика загрузки
details

IStatDetailsRow

Наименование Тип данных Описание
id string идентификатор пира
download ITraffic статистика загрузки с пира
upload ITraffic статистика отдачи пиру

ITraffic

Наименование Тип данных Описание
size number объем трафика, байт
count number количество сегментов
time number время загрузки, мсек
speed number скорость загрузки, мбит/сек

Customization

Данные параметры указываются для повышения качества работы пиринговой сети.

manifestAcceptor

Для поиска необходимых соединения Teleport использует URL видео-потока. По умолчанию Teleport определяет манифест по расширению .m3u8 или .mpd.

Если ваш медиасервер выдает специфичные url для манифеста, то необходимо определить функцию для поиска манифеста.

пример:

let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            manifestAcceptor: url => url.indexOf(".m3u8") > -1
        }
    }
});

segmentAcceptor

Для того, чтобы передача данных началась в Teleport PDN, необходимо определить, что данный запрос скачивает видео-сегмент. По умолчанию Teleport определяет видео-сегменты по следующим расширениям: .ts, .mp4, .m4s.

Если ваш медиасервер выдает специфичные url для видео-сегментов, то необходимо определить функцию для поиска сегментов.

пример:

let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            segmentAcceptor: url => url.indexOf(".mp4") > -1
        }
    }
});

urlCleaner

Для корректной работы Teleport PDN необходимо удалить уникальную информацию из URL видео-сегмента или манифеста.

пример:

let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            urlCleaner: url => (new URL(url)).pathname
        }
    }
});

qualityGetter

Для повышения качества работы Teleport PDN, рекомендуется указать функцию для идентификации активного качества видео-потока.

пример:

let player = new shaka.Player(video);
let videoIdToQuality = {};

videoId2Quality["1"] = teleport.Quality.Q1080P;
videoId2Quality["2"] = teleport.Quality.Q720P;
videoId2Quality["3"] = teleport.Quality.Q480P;

let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            qualityGetter: () => {
                let t = player.getVariantTracks().find(x => x && x.active);

                return t && t.videoId && videoId2Quality[t.videoId] || teleport.Quality.Unknown;
            }
        }
    }
});

segmentTypeGetter

Для повышения качества работы Teleport PDN, рекомендуется указать функцию для идентификации типа сегмента.

пример:

let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            segmentTypeGetter: url => url.indexOf('caption') > -1 ? teleport.SegmentType.Caption : teleport.SegmentType.Video
        }
    }
});

bufferSizeGetter

Для повышения качества работы Teleport PDN, рекомендуется указать функцию для идентификации размера буфера плеера.

пример:

let player = new shaka.Player(video);
let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            bufferSizeGetter: () => {
                let playhead = p.getPlayheadTimeAsDate().getTime();
                let presentation = p.getPresentationStartTimeAsDate().getTime();
                let start = (playhead - presentation) / 1000;

                let buf = p.getBufferedInfo();
                let end = buf && buf.video && buf.video[0] && buf.video[0].end || 0;

                return end > start ? end - start : 0;
            }
        }
    }
});

durationGetter

Для повышения качества работы Teleport PDN, рекомендуется указать функцию для идентификации длительности сегмента.

пример:

let tlprt = await teleport.initialize({
    apiKey: "YOUR_API_KEY",
    loader: {
        type: "PLUGIN_ID",
        params: {
            durationGetter: () => 5
        }
    }
});