@mediakind/mkplayer 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -0
- package/azure-pipelines.yml +34 -0
- package/dist/BufferLevel.d.ts +4 -0
- package/dist/Logger.d.ts +9 -0
- package/dist/MKPlayer.d.ts +26 -0
- package/dist/MKPlayerConfiguration.d.ts +6 -0
- package/dist/MKStream.d.ts +16 -0
- package/dist/SubtitleTrack.d.ts +4 -0
- package/dist/events/MKEvent.d.ts +13 -0
- package/dist/events/MKPlayerEventCallback.d.ts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/mkplayer.js +1 -0
- package/doc/assets/css/main.css +1 -0
- package/doc/assets/images/icons.png +0 -0
- package/doc/assets/images/icons@2x.png +0 -0
- package/doc/assets/images/widgets.png +0 -0
- package/doc/assets/images/widgets@2x.png +0 -0
- package/doc/assets/js/main.js +51 -0
- package/doc/assets/js/search.json +1 -0
- package/doc/classes/mkplayer.html +588 -0
- package/doc/enums/mkevent.html +303 -0
- package/doc/globals.html +146 -0
- package/doc/index.html +309 -0
- package/doc/interfaces/bufferlevel.html +140 -0
- package/doc/interfaces/mkplayerconfiguration.html +233 -0
- package/doc/interfaces/mkplayereventcallback.html +167 -0
- package/doc/interfaces/subtitletrack.html +195 -0
- package/favicon.ico +0 -0
- package/index.html +430 -0
- package/mk_logo.png +0 -0
- package/mkplayer-ui.min.css +2 -0
- package/mkplayer.zip +0 -0
- package/package.json +51 -0
- package/src/BufferLevel.ts +7 -0
- package/src/Logger.ts +51 -0
- package/src/MKPlayer.ts +289 -0
- package/src/MKPlayerConfiguration.ts +24 -0
- package/src/MKStream.ts +74 -0
- package/src/SubtitleTrack.ts +14 -0
- package/src/events/MKEvent.ts +16 -0
- package/src/events/MKPlayerEventCallback.ts +8 -0
- package/src/index.ts +4 -0
- package/tsconfig.json +20 -0
- package/tslint.json +72 -0
- package/typedoc.json +11 -0
package/README.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
## Overview
|
|
2
|
+
`MKPlayer` is an HTML5 video player used for playing back HLS and DASH adaptive bitrate streams without using browser plugins.
|
|
3
|
+
|
|
4
|
+
Our main goal is to provide a simple, abstract API that allows you to quickly get video playback of MediaKind streams running on your web page. Please reach out to the MediaKind team as we must whitelist your domain that our player will run on.
|
|
5
|
+
|
|
6
|
+
#### Player Initialization
|
|
7
|
+
|
|
8
|
+
Include the `mkplayer.js` and `mkplayer-ui.min.css` file on your page
|
|
9
|
+
|
|
10
|
+
```javascript
|
|
11
|
+
<script type='text/javascript' src='mkplayer.js'></script>
|
|
12
|
+
<link rel='stylesheet' href='./mkplayer-ui.min.css'>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Add a `<div>` for the player
|
|
16
|
+
```html
|
|
17
|
+
<div id='player'></div>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Initialize the video player
|
|
21
|
+
```javascript
|
|
22
|
+
var mkPlayerConfiguration = {
|
|
23
|
+
debug: true,
|
|
24
|
+
autoplay: true,
|
|
25
|
+
muted: true,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
var playerContainer = document.getElementById('player');
|
|
29
|
+
mkPlayer = new mkplayer.MKPlayer(playerContainer, mkPlayerConfiguration);
|
|
30
|
+
```
|
|
31
|
+
Load a new stream by passing in a MKStream object
|
|
32
|
+
```javascript
|
|
33
|
+
let mkStream = {
|
|
34
|
+
primaryUrl: 'https://primary-cdn.com/assetId/master.m3u8?token=tokenUrl',
|
|
35
|
+
secondaryUrl: 'https://secondary-cdn.com/assetId/master.m3u8?token=tokenUrl',
|
|
36
|
+
cdnFailoverPercent: 10, //10 percent of streams will start with the secondary url
|
|
37
|
+
assetIdentifier: 'Your Asset Id',
|
|
38
|
+
poster: 'https://your-cdn.com/poster.png'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
mkPlayer.load(mkStream).then(function() {
|
|
42
|
+
console.log('MKPlayer Example Page Loaded Source Successfully');
|
|
43
|
+
}, function(reason) {
|
|
44
|
+
console.error('MKPlayer Example Page - Error loading MKPlayer Source');
|
|
45
|
+
console.error(reason);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Register your event listeners prior to loading a source to make sure you have visibility into the video playback session
|
|
50
|
+
```javascript
|
|
51
|
+
|
|
52
|
+
mkPlayer.on('playing', (event) => {
|
|
53
|
+
console.log('[MKPlayer] playing' + event.timestamp);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
mkPlayer.on('paused', (event) => {
|
|
57
|
+
console.log('[MKPlayer] paused' + event.timestamp);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
mkPlayer.on('ready', (event) => {
|
|
61
|
+
console.log('[MKPlayer] ready' + event.timestamp);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
mkPlayer.on('bufferingstarted', (event) => {
|
|
65
|
+
console.log('[MKPlayer] buffering started ' + event.timestamp);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
mkPlayer.on('bufferingended', (event) => {
|
|
69
|
+
console.log('[MKPlayer] buffering ended ' + event.timestamp);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
mkPlayer.on('streamfinished', (event) => {
|
|
73
|
+
console.log('[MKPlayer] streamfinished ' + event.timestamp);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
mkPlayer.on('timechanged', (event) => {
|
|
77
|
+
console.log('[MKPlayer] timechanged ' + event.playbackTime);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
mkPlayer.on('error', (event) => {
|
|
81
|
+
console.error('[MKPlayer] error: %d - %s', event.code, event.name);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
mkPlayer.on('warning', (event) => {
|
|
85
|
+
console.warning('[MKPlayer] warning: %d - %s', event.code, event.name);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
mkPlayer.on('qualitychanged', (event) => {
|
|
89
|
+
console.log('[MKPlayer] bitrate changed: ' + event.targetQuality.bitrate);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
If you need to unload the current stream or destroy the player, you can use the following methods. You must create a new instance of the player if you call `destroy()`
|
|
95
|
+
|
|
96
|
+
```javascript
|
|
97
|
+
mkPlayer.unload();
|
|
98
|
+
mkPlayer.destroy();
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
You can also add external subtitles via an optional field in the `MKStream` object
|
|
102
|
+
|
|
103
|
+
```javascript
|
|
104
|
+
var dashSubtitleSource = {
|
|
105
|
+
primaryUrl: "https://path_to_your_stream/main.mpd",
|
|
106
|
+
subtitleTracks: [{
|
|
107
|
+
url: 'https://path_to_your_stream/subtitles_en.vtt',
|
|
108
|
+
language: 'ms'
|
|
109
|
+
}],
|
|
110
|
+
assetIdentifier: 'DASH Subtitle',
|
|
111
|
+
};
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Support Matrix
|
|
115
|
+
| Browser | Windows | Mac | Linux | Android | iOS >= 12 | ChromeOS | Other |
|
|
116
|
+
|--:-:----------|--:-:-------|--:-:-----|--:-:-----|--:-:-----|--:-:------|--:-:-----|--:-:--|
|
|
117
|
+
| Chrome | **Both** | **Both** | **Both** | **Both** | **HLS** | **Both** | - |
|
|
118
|
+
| Firefox | **Both** | **Both** | **Both** | - | **HLS** | - | - |
|
|
119
|
+
| Edge | **Both** | - | - | - | - | - | - |
|
|
120
|
+
| Edge Chromium | **Both** | **Both** | - | - | **HLS** | - | - |
|
|
121
|
+
| IE ≤ 10 | **No** | - | - | - | - | - | - |
|
|
122
|
+
| IE 11 | **Both** ⁴ | - | - | - | - | - | - |
|
|
123
|
+
| Safari | - | **HLS** | - | - | **HLS** | - | - |
|
|
124
|
+
| Opera | untested | untested | untested | untested | **HLS** | - | - |
|
|
125
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Starter pipeline
|
|
2
|
+
# Start with a minimal pipeline that you can customize to build and deploy your code.
|
|
3
|
+
# Add steps that build, run tests, deploy, and more:
|
|
4
|
+
# https://aka.ms/yaml
|
|
5
|
+
|
|
6
|
+
trigger:
|
|
7
|
+
- develop
|
|
8
|
+
|
|
9
|
+
pool:
|
|
10
|
+
vmImage: 'ubuntu-latest'
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- script: echo Hello, world!
|
|
14
|
+
displayName: 'Run a one-line script'
|
|
15
|
+
|
|
16
|
+
- script: |
|
|
17
|
+
#Download AzCopy
|
|
18
|
+
wget https://aka.ms/downloadazcopy-v10-linux
|
|
19
|
+
|
|
20
|
+
#Expand Archive
|
|
21
|
+
tar -xvf downloadazcopy-v10-linux
|
|
22
|
+
|
|
23
|
+
#(Optional) Remove existing AzCopy version
|
|
24
|
+
sudo rm /usr/bin/azcopy
|
|
25
|
+
|
|
26
|
+
#Move AzCopy to the destination you want to store it
|
|
27
|
+
sudo cp ./azcopy_linux_amd64_*/azcopy /usr/bin/
|
|
28
|
+
|
|
29
|
+
sudo chmod 775 /usr/bin/azcopy
|
|
30
|
+
|
|
31
|
+
#Build and deploy the sample page and docs
|
|
32
|
+
npm install
|
|
33
|
+
npm run deploy
|
|
34
|
+
displayName: 'Run a multi-line script'
|
package/dist/Logger.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class Logger {
|
|
2
|
+
private static enabled;
|
|
3
|
+
static enable(): void;
|
|
4
|
+
static disable(): void;
|
|
5
|
+
static log(message?: any, ...optionalParams: any[]): void;
|
|
6
|
+
static error(message?: any, ...optionalParams: any[]): void;
|
|
7
|
+
static warn(message?: any, ...optionalParams: any[]): void;
|
|
8
|
+
static debug(message?: any, ...optionalParams: any[]): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { MKPlayerConfiguration } from './MKPlayerConfiguration';
|
|
2
|
+
import { MKStream } from './MKStream';
|
|
3
|
+
import { MKEvent } from './events/MKEvent';
|
|
4
|
+
import { BufferLevel } from './BufferLevel';
|
|
5
|
+
import { MKPlayerEventCallback } from './events/MKPlayerEventCallback';
|
|
6
|
+
export declare class MKPlayer {
|
|
7
|
+
private player;
|
|
8
|
+
constructor(containerElement: HTMLElement, mkPlayerConfiguration: MKPlayerConfiguration);
|
|
9
|
+
play(): Promise<void>;
|
|
10
|
+
pause(): void;
|
|
11
|
+
destroy(): Promise<void>;
|
|
12
|
+
load(stream: MKStream): Promise<void>;
|
|
13
|
+
off(eventType: MKEvent, callback: MKPlayerEventCallback): void;
|
|
14
|
+
on(eventType: MKEvent, callback: MKPlayerEventCallback): void;
|
|
15
|
+
unload(): Promise<void>;
|
|
16
|
+
getCurrentTime(): number;
|
|
17
|
+
getBufferLevels(): BufferLevel;
|
|
18
|
+
mute(): void;
|
|
19
|
+
unmute(): void;
|
|
20
|
+
setVolume(volume: number): void;
|
|
21
|
+
version(): string;
|
|
22
|
+
private static selectUrl;
|
|
23
|
+
private static getRandomInt;
|
|
24
|
+
private static makeId;
|
|
25
|
+
private static mapEvent;
|
|
26
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SubtitleTrack } from './SubtitleTrack';
|
|
2
|
+
export declare class MKStream {
|
|
3
|
+
private readonly _assetIdentifier;
|
|
4
|
+
private readonly _primaryUrl?;
|
|
5
|
+
private readonly _secondaryUrl?;
|
|
6
|
+
private readonly _subtitleTracks;
|
|
7
|
+
private readonly _cdnFailoverPercent;
|
|
8
|
+
private readonly _poster;
|
|
9
|
+
constructor(primaryUrl: string, assetIdentifier: string, subtitleTracks?: SubtitleTrack[], poster?: string, secondaryUrl?: string, cdnFailoverPercent?: number);
|
|
10
|
+
get cdnFailoverPercent(): number;
|
|
11
|
+
get primaryUrl(): string;
|
|
12
|
+
get secondaryUrl(): string;
|
|
13
|
+
get subtitleTracks(): SubtitleTrack[];
|
|
14
|
+
get assetIdentifier(): string;
|
|
15
|
+
get poster(): string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum MKEvent {
|
|
2
|
+
Playing = "playing",
|
|
3
|
+
Ready = "ready",
|
|
4
|
+
TimeChanged = "timechanged",
|
|
5
|
+
Error = "error",
|
|
6
|
+
BufferingStarted = "bufferingstarted",
|
|
7
|
+
BufferingEnded = "bufferingended",
|
|
8
|
+
StreamFinished = "streamfinished",
|
|
9
|
+
Warning = "warning",
|
|
10
|
+
QualityChanged = "qualitychanged",
|
|
11
|
+
SegmentPlayback = "segmentplayback",
|
|
12
|
+
Unloaded = "unloaded"
|
|
13
|
+
}
|
package/dist/index.d.ts
ADDED