@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.
Files changed (45) hide show
  1. package/README.md +125 -0
  2. package/azure-pipelines.yml +34 -0
  3. package/dist/BufferLevel.d.ts +4 -0
  4. package/dist/Logger.d.ts +9 -0
  5. package/dist/MKPlayer.d.ts +26 -0
  6. package/dist/MKPlayerConfiguration.d.ts +6 -0
  7. package/dist/MKStream.d.ts +16 -0
  8. package/dist/SubtitleTrack.d.ts +4 -0
  9. package/dist/events/MKEvent.d.ts +13 -0
  10. package/dist/events/MKPlayerEventCallback.d.ts +4 -0
  11. package/dist/index.d.ts +4 -0
  12. package/dist/mkplayer.js +1 -0
  13. package/doc/assets/css/main.css +1 -0
  14. package/doc/assets/images/icons.png +0 -0
  15. package/doc/assets/images/icons@2x.png +0 -0
  16. package/doc/assets/images/widgets.png +0 -0
  17. package/doc/assets/images/widgets@2x.png +0 -0
  18. package/doc/assets/js/main.js +51 -0
  19. package/doc/assets/js/search.json +1 -0
  20. package/doc/classes/mkplayer.html +588 -0
  21. package/doc/enums/mkevent.html +303 -0
  22. package/doc/globals.html +146 -0
  23. package/doc/index.html +309 -0
  24. package/doc/interfaces/bufferlevel.html +140 -0
  25. package/doc/interfaces/mkplayerconfiguration.html +233 -0
  26. package/doc/interfaces/mkplayereventcallback.html +167 -0
  27. package/doc/interfaces/subtitletrack.html +195 -0
  28. package/favicon.ico +0 -0
  29. package/index.html +430 -0
  30. package/mk_logo.png +0 -0
  31. package/mkplayer-ui.min.css +2 -0
  32. package/mkplayer.zip +0 -0
  33. package/package.json +51 -0
  34. package/src/BufferLevel.ts +7 -0
  35. package/src/Logger.ts +51 -0
  36. package/src/MKPlayer.ts +289 -0
  37. package/src/MKPlayerConfiguration.ts +24 -0
  38. package/src/MKStream.ts +74 -0
  39. package/src/SubtitleTrack.ts +14 -0
  40. package/src/events/MKEvent.ts +16 -0
  41. package/src/events/MKPlayerEventCallback.ts +8 -0
  42. package/src/index.ts +4 -0
  43. package/tsconfig.json +20 -0
  44. package/tslint.json +72 -0
  45. 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'
@@ -0,0 +1,4 @@
1
+ export interface BufferLevel {
2
+ audio: number;
3
+ video: number;
4
+ }
@@ -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,6 @@
1
+ export interface MKPlayerConfiguration {
2
+ debug: boolean;
3
+ autoplay: boolean;
4
+ muted: boolean;
5
+ smallScreen: boolean;
6
+ }
@@ -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,4 @@
1
+ export interface SubtitleTrack {
2
+ url: string;
3
+ language: string;
4
+ }
@@ -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
+ }
@@ -0,0 +1,4 @@
1
+ import { PlayerEventBase } from 'bitmovin-player';
2
+ export interface MKPlayerEventCallback {
3
+ (event: PlayerEventBase): void;
4
+ }
@@ -0,0 +1,4 @@
1
+ export { MKPlayer } from './MKPlayer';
2
+ export { MKPlayerConfiguration } from './MKPlayerConfiguration';
3
+ export { MKStream } from './MKStream';
4
+ export { MKEvent } from './events/MKEvent';