Документация по JavaScript API
Tuesday, March 31, 2020 5:24 AMTable of Contents
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
}
}
});