-import videojs from 'video.js'
import { PeerTubePlugin } from './peertube-plugin'
import { WebTorrentPlugin } from './webtorrent/webtorrent-plugin'
import { P2pMediaLoaderPlugin } from './p2p-media-loader/p2p-media-loader-plugin'
import { PlayerMode } from './peertube-player-manager'
import { RedundancyUrlManager } from './p2p-media-loader/redundancy-url-manager'
import { VideoFile } from '@shared/models'
+import videojs from 'video.js/dist/alt/video.core.js'
+import { Config, Level } from 'hls.js'
declare module 'video.js' {
+
export interface VideoJsPlayer {
+ srOptions_: HlsjsConfigHandlerOptions
+
theaterEnabled: boolean
// FIXME: add it to upstream typings
// Plugins
peertube (): PeerTubePlugin
+
webtorrent (): WebTorrentPlugin
+
p2pMediaLoader (): P2pMediaLoaderPlugin
contextmenuUI (options: any): any
bezels (): void
- qualityLevels (): { height: number, id: number }[] & {
- selectedIndex: number
- selectedIndex_: number
-
- addQualityLevel (representation: {
- id: number
- label: string
- height: number
- _enabled: boolean
- }): void
- }
+ qualityLevels (): QualityLevels
textTracks (): TextTrackList & {
on: Function
tracks_: { kind: string, mode: string, language: string }[]
}
+
+ audioTracks (): AudioTrackList
+
+ dock (options: { title: string, description: string }): void
}
}
+export interface VideoJSTechHLS extends videojs.Tech {
+ hlsProvider: any // FIXME: typings
+}
+
+export interface HlsjsConfigHandlerOptions {
+ hlsjsConfig?: Config & { cueHandler: any }// FIXME: typings
+ captionConfig?: any // FIXME: typings
+
+ levelLabelHandler?: (level: Level) => string
+}
+
+type QualityLevelRepresentation = {
+ id: number
+ height: number
+
+ label?: string
+ width?: number
+ bandwidth?: number
+ bitrate?: number
+
+ enabled?: Function
+ _enabled: boolean
+}
+
+type QualityLevels = QualityLevelRepresentation[] & {
+ selectedIndex: number
+ selectedIndex_: number
+
+ addQualityLevel (representation: QualityLevelRepresentation): void
+}
+
type VideoJSCaption = {
label: string
language: string
WebtorrentPluginOptions,
P2PMediaLoaderPluginOptions,
VideoJSPluginOptions,
- LoadedQualityData
+ LoadedQualityData,
+ QualityLevelRepresentation,
+ QualityLevels
}