@mediakind/mkplayer 1.0.22 → 1.0.24

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 (307) hide show
  1. package/README.md +80 -121
  2. package/mkplayer-ui.css +12 -0
  3. package/mkplayer.js +1 -0
  4. package/package.json +23 -49
  5. package/src/alias/index.d.ts +10 -0
  6. package/src/classes/common/MKAzukiResponseUtils.d.ts +8 -0
  7. package/src/classes/common/MKEventBase.d.ts +9 -0
  8. package/src/classes/common/MKLocalStorage.d.ts +28 -0
  9. package/src/classes/common/MKLog.d.ts +10 -0
  10. package/src/classes/common/MKPlatform.d.ts +29 -0
  11. package/src/classes/common/MKProgramManager.d.ts +13 -0
  12. package/src/classes/common/MKSubtitleOverlay.d.ts +25 -0
  13. package/src/classes/common/MKThumbnailManager.d.ts +22 -0
  14. package/src/classes/common/MKUtils.d.ts +19 -0
  15. package/src/classes/common/MKUtils.spec.d.ts +1 -0
  16. package/src/classes/common/index.d.ts +9 -0
  17. package/src/classes/error/MKAzukiRequestError.d.ts +8 -0
  18. package/src/classes/error/MKBitmovinPlayerError.d.ts +5 -0
  19. package/src/classes/error/MKHttpError.d.ts +10 -0
  20. package/src/classes/error/MKPlayerError.d.ts +7 -0
  21. package/src/classes/error/MKProgramRestrictionError.d.ts +9 -0
  22. package/src/classes/error/index.d.ts +5 -0
  23. package/src/classes/index.d.ts +4 -0
  24. package/src/classes/player/MKBitmovinPlayer.d.ts +106 -0
  25. package/src/classes/player/MKPlayer.d.ts +104 -0
  26. package/src/classes/player/index.d.ts +2 -0
  27. package/src/classes/request/MKAzukiRequest.d.ts +27 -0
  28. package/src/classes/request/MKHttpRequest.d.ts +11 -0
  29. package/src/classes/request/index.d.ts +2 -0
  30. package/src/constants/MKAzukiRequestEndpoint.d.ts +36 -0
  31. package/src/constants/MKConstants.d.ts +16 -0
  32. package/src/constants/MKCustomError.d.ts +14 -0
  33. package/src/constants/index.d.ts +3 -0
  34. package/src/enums/MKAdQuartile.d.ts +5 -0
  35. package/src/enums/MKAdType.d.ts +6 -0
  36. package/src/enums/MKBufferType.d.ts +4 -0
  37. package/src/enums/MKDrmType.d.ts +6 -0
  38. package/src/enums/MKHttpRequestType.d.ts +21 -0
  39. package/src/enums/MKHttpResponseType.d.ts +7 -0
  40. package/src/enums/MKLatencyMode.d.ts +6 -0
  41. package/src/enums/MKLiveSynchronizationMethod.d.ts +5 -0
  42. package/src/enums/MKLocalStorageKeys.d.ts +6 -0
  43. package/src/enums/MKLogLevel.d.ts +7 -0
  44. package/src/enums/MKMediaType.d.ts +4 -0
  45. package/src/enums/MKMetadataType.d.ts +10 -0
  46. package/src/enums/MKPlatformType.d.ts +4 -0
  47. package/src/enums/MKPlayerEvent.d.ts +81 -0
  48. package/src/enums/MKProgramRestrictionType.d.ts +10 -0
  49. package/src/enums/MKRightsMode.d.ts +4 -0
  50. package/src/enums/MKRttEstimationMethod.d.ts +4 -0
  51. package/src/enums/MKSourceType.d.ts +7 -0
  52. package/src/enums/MKStartOffsetTimelineReference.d.ts +4 -0
  53. package/src/enums/MKStreamType.d.ts +6 -0
  54. package/src/enums/MKTimeMode.d.ts +4 -0
  55. package/src/enums/MKViewMode.d.ts +5 -0
  56. package/src/enums/index.d.ts +22 -0
  57. package/src/external/index.d.ts +2 -0
  58. package/src/index.d.ts +5 -0
  59. package/src/interfaces/MKAdCompanion.d.ts +2 -0
  60. package/src/interfaces/MKAdaptationConfig.d.ts +19 -0
  61. package/src/interfaces/MKAdaptationData.d.ts +7 -0
  62. package/src/interfaces/MKAdaptationPlatformConfig.d.ts +6 -0
  63. package/src/interfaces/MKAnalyticsConfig.d.ts +38 -0
  64. package/src/interfaces/MKAudioAdaptationData.d.ts +3 -0
  65. package/src/interfaces/MKAudioQuality.d.ts +3 -0
  66. package/src/interfaces/MKAudioTrack.d.ts +6 -0
  67. package/src/interfaces/MKAzukiConfig.d.ts +7 -0
  68. package/src/interfaces/MKBitrateLimitationConfig.d.ts +7 -0
  69. package/src/interfaces/MKBufferConfig.d.ts +6 -0
  70. package/src/interfaces/MKBufferLevel.d.ts +7 -0
  71. package/src/interfaces/MKBufferMediaTypeConfig.d.ts +5 -0
  72. package/src/interfaces/MKCastConfig.d.ts +6 -0
  73. package/src/interfaces/MKCdn.d.ts +8 -0
  74. package/src/interfaces/MKCdnOptions.d.ts +5 -0
  75. package/src/interfaces/MKDownloadedAudioData.d.ts +3 -0
  76. package/src/interfaces/MKDownloadedData.d.ts +5 -0
  77. package/src/interfaces/MKDownloadedVideoData.d.ts +5 -0
  78. package/src/interfaces/MKDrmConfig.d.ts +9 -0
  79. package/src/interfaces/MKDrmLicense.d.ts +5 -0
  80. package/src/interfaces/MKError.d.ts +5 -0
  81. package/src/interfaces/MKFairplayDrmConfig.d.ts +20 -0
  82. package/src/interfaces/MKHttpRequestOptions.d.ts +7 -0
  83. package/src/interfaces/MKImageMediaPlaylist.d.ts +9 -0
  84. package/src/interfaces/MKLiveConfig.d.ts +6 -0
  85. package/src/interfaces/MKLogConfig.d.ts +4 -0
  86. package/src/interfaces/MKLowLatencyConfig.d.ts +6 -0
  87. package/src/interfaces/MKLowLatencySyncConfig.d.ts +5 -0
  88. package/src/interfaces/MKMediaTrack.d.ts +6 -0
  89. package/src/interfaces/MKMediaTrackRole.d.ts +6 -0
  90. package/src/interfaces/MKMetadata.d.ts +7 -0
  91. package/src/interfaces/MKPeriodContentInformation.d.ts +5 -0
  92. package/src/interfaces/MKPeriodInformation.d.ts +5 -0
  93. package/src/interfaces/MKPeriodSwitchObject.d.ts +3 -0
  94. package/src/interfaces/MKPlayReadyDrmConfig.d.ts +12 -0
  95. package/src/interfaces/MKPlaybackConfig.d.ts +14 -0
  96. package/src/interfaces/MKPlayerAPI.d.ts +95 -0
  97. package/src/interfaces/MKPlayerConfig.d.ts +21 -0
  98. package/src/interfaces/MKPlayerEngine.d.ts +3 -0
  99. package/src/interfaces/MKPlayerEventCallback.d.ts +4 -0
  100. package/src/interfaces/MKPlayerEventConfig.d.ts +4 -0
  101. package/src/interfaces/MKProgramInfo.d.ts +6 -0
  102. package/src/interfaces/MKProgramRestrictions.d.ts +5 -0
  103. package/src/interfaces/MKQuality.d.ts +7 -0
  104. package/src/interfaces/MKRegisteredSource.d.ts +7 -0
  105. package/src/interfaces/MKRollInfo.d.ts +14 -0
  106. package/src/interfaces/MKSourceConfig.d.ts +26 -0
  107. package/src/interfaces/MKSourceOptions.d.ts +18 -0
  108. package/src/interfaces/MKSubtitleCue.d.ts +14 -0
  109. package/src/interfaces/MKSubtitleCuePosition.d.ts +4 -0
  110. package/src/interfaces/MKSubtitleTrack.d.ts +5 -0
  111. package/src/interfaces/MKSynchronizationConfigEntry.d.ts +5 -0
  112. package/src/interfaces/MKTextTrack.d.ts +7 -0
  113. package/src/interfaces/MKThumbnail.d.ts +10 -0
  114. package/src/interfaces/MKThumbnailTrack.d.ts +3 -0
  115. package/src/interfaces/MKTimeRange.d.ts +4 -0
  116. package/src/interfaces/MKULLSource.d.ts +4 -0
  117. package/src/interfaces/MKVTTProperties.d.ts +13 -0
  118. package/src/interfaces/MKVTTRegionProperties.d.ts +10 -0
  119. package/src/interfaces/MKVideoAdaptationData.d.ts +3 -0
  120. package/src/interfaces/MKVideoQuality.d.ts +6 -0
  121. package/src/interfaces/MKVideoSizeLimitationConfig.d.ts +6 -0
  122. package/src/interfaces/MKVideoTrack.d.ts +5 -0
  123. package/src/interfaces/MKViewModeOptions.d.ts +3 -0
  124. package/src/interfaces/MKWidevineModularDrmConfig.d.ts +13 -0
  125. package/src/interfaces/events/MKAdBreakFinishedEvent.d.ts +4 -0
  126. package/src/interfaces/events/MKAdBreakStartedEvent.d.ts +10 -0
  127. package/src/interfaces/events/MKAdClickThroughEvent.d.ts +6 -0
  128. package/src/interfaces/events/MKAdCompanionEvent.d.ts +6 -0
  129. package/src/interfaces/events/MKAdFinishedEvent.d.ts +4 -0
  130. package/src/interfaces/events/MKAdMarkerEvent.d.ts +5 -0
  131. package/src/interfaces/events/MKAdQuartileEvent.d.ts +6 -0
  132. package/src/interfaces/events/MKAdStartedEvent.d.ts +12 -0
  133. package/src/interfaces/events/MKAdaptationEvent.d.ts +4 -0
  134. package/src/interfaces/events/MKAirplayChangedEvent.d.ts +4 -0
  135. package/src/interfaces/events/MKAspectRatioChangedEvent.d.ts +5 -0
  136. package/src/interfaces/events/MKAudioAdaptationEvent.d.ts +3 -0
  137. package/src/interfaces/events/MKAudioChangedEvent.d.ts +6 -0
  138. package/src/interfaces/events/MKAudioDownloadQualityChangeEvent.d.ts +3 -0
  139. package/src/interfaces/events/MKAudioDownloadQualityChangedEvent.d.ts +3 -0
  140. package/src/interfaces/events/MKAudioPlaybackQualityChangedEvent.d.ts +3 -0
  141. package/src/interfaces/events/MKAudioQualityChangedEvent.d.ts +3 -0
  142. package/src/interfaces/events/MKAudioQualityEvent.d.ts +3 -0
  143. package/src/interfaces/events/MKAudioTrackEvent.d.ts +5 -0
  144. package/src/interfaces/events/MKCastAvailableEvent.d.ts +4 -0
  145. package/src/interfaces/events/MKCastStartedEvent.d.ts +5 -0
  146. package/src/interfaces/events/MKCastWaitingForDeviceEvent.d.ts +9 -0
  147. package/src/interfaces/events/MKCueEnterEvent.d.ts +4 -0
  148. package/src/interfaces/events/MKCueExitEvent.d.ts +4 -0
  149. package/src/interfaces/events/MKCueParsedEvent.d.ts +4 -0
  150. package/src/interfaces/events/MKCueUpdateEvent.d.ts +4 -0
  151. package/src/interfaces/events/MKDownloadFinishedEvent.d.ts +14 -0
  152. package/src/interfaces/events/MKDrmLicenseAddedEvent.d.ts +5 -0
  153. package/src/interfaces/events/MKDurationChangedEvent.d.ts +5 -0
  154. package/src/interfaces/events/MKErrorEvent.d.ts +4 -0
  155. package/src/interfaces/events/MKLatencyModeChangedEvent.d.ts +6 -0
  156. package/src/interfaces/events/MKMediaPlaybackQualityChangeEvent.d.ts +6 -0
  157. package/src/interfaces/events/MKMediaQualityChangeEvent.d.ts +8 -0
  158. package/src/interfaces/events/MKMediaQualityEvent.d.ts +5 -0
  159. package/src/interfaces/events/MKMetadataChangedEvent.d.ts +3 -0
  160. package/src/interfaces/events/MKMetadataEvent.d.ts +8 -0
  161. package/src/interfaces/events/MKMetadataParsedEvent.d.ts +3 -0
  162. package/src/interfaces/events/MKPeriodSwitchedEvent.d.ts +6 -0
  163. package/src/interfaces/events/MKPlaybackEvent.d.ts +4 -0
  164. package/src/interfaces/events/MKPlaybackSpeedChangedEvent.d.ts +5 -0
  165. package/src/interfaces/events/MKPlayerEventBase.d.ts +5 -0
  166. package/src/interfaces/events/MKPlayerResizedEvent.d.ts +5 -0
  167. package/src/interfaces/events/MKProgramRestrictionsEvent.d.ts +5 -0
  168. package/src/interfaces/events/MKProgramTimeChangedEvent.d.ts +5 -0
  169. package/src/interfaces/events/MKSeekEvent.d.ts +5 -0
  170. package/src/interfaces/events/MKSegmentPlaybackEvent.d.ts +23 -0
  171. package/src/interfaces/events/MKSegmentRequestFinishedEvent.d.ts +11 -0
  172. package/src/interfaces/events/MKSubtitleEvent.d.ts +5 -0
  173. package/src/interfaces/events/MKTargetLatencyChangedEvent.d.ts +5 -0
  174. package/src/interfaces/events/MKTimeChangedEvent.d.ts +3 -0
  175. package/src/interfaces/events/MKUserInteractionEvent.d.ts +4 -0
  176. package/src/interfaces/events/MKVideoAdaptationEvent.d.ts +3 -0
  177. package/src/interfaces/events/MKVideoDownloadQualityChangeEvent.d.ts +3 -0
  178. package/src/interfaces/events/MKVideoDownloadQualityChangedEvent.d.ts +3 -0
  179. package/src/interfaces/events/MKVideoPlaybackQualityChangedEvent.d.ts +3 -0
  180. package/src/interfaces/events/MKVideoQualityChangedEvent.d.ts +3 -0
  181. package/src/interfaces/events/MKVideoQualityEvent.d.ts +3 -0
  182. package/src/interfaces/events/MKViewModeChangedEvent.d.ts +7 -0
  183. package/src/interfaces/events/MKVolumeChangedEvent.d.ts +5 -0
  184. package/src/interfaces/events/index.d.ts +59 -0
  185. package/src/interfaces/index.d.ts +67 -0
  186. package/azure-pipelines.yml +0 -19
  187. package/dist/BufferLevel.d.ts +0 -4
  188. package/dist/LabelConfig.d.ts +0 -4
  189. package/dist/Logger.d.ts +0 -9
  190. package/dist/MKPlayer.d.ts +0 -31
  191. package/dist/MKPlayerConfiguration.d.ts +0 -15
  192. package/dist/MKStream.d.ts +0 -34
  193. package/dist/SubtitleTrack.d.ts +0 -4
  194. package/dist/URLHelper.d.ts +0 -5
  195. package/dist/events/MKEvent.d.ts +0 -16
  196. package/dist/events/MKPlayerEventCallback.d.ts +0 -4
  197. package/dist/events/UrlType.d.ts +0 -4
  198. package/dist/index.d.ts +0 -6
  199. package/dist/lib/BufferLevel.d.ts +0 -4
  200. package/dist/lib/BufferLevel.js +0 -3
  201. package/dist/lib/BufferLevel.js.map +0 -1
  202. package/dist/lib/LabelConfig.d.ts +0 -4
  203. package/dist/lib/LabelConfig.js +0 -3
  204. package/dist/lib/LabelConfig.js.map +0 -1
  205. package/dist/lib/Logger.d.ts +0 -9
  206. package/dist/lib/Logger.js +0 -72
  207. package/dist/lib/Logger.js.map +0 -1
  208. package/dist/lib/MKPlayer.d.ts +0 -31
  209. package/dist/lib/MKPlayer.js +0 -289
  210. package/dist/lib/MKPlayer.js.map +0 -1
  211. package/dist/lib/MKPlayerConfiguration.d.ts +0 -15
  212. package/dist/lib/MKPlayerConfiguration.js +0 -3
  213. package/dist/lib/MKPlayerConfiguration.js.map +0 -1
  214. package/dist/lib/MKStream.d.ts +0 -34
  215. package/dist/lib/MKStream.js +0 -126
  216. package/dist/lib/MKStream.js.map +0 -1
  217. package/dist/lib/SubtitleTrack.d.ts +0 -4
  218. package/dist/lib/SubtitleTrack.js +0 -3
  219. package/dist/lib/SubtitleTrack.js.map +0 -1
  220. package/dist/lib/URLHelper.d.ts +0 -5
  221. package/dist/lib/URLHelper.js +0 -63
  222. package/dist/lib/URLHelper.js.map +0 -1
  223. package/dist/lib/events/MKEvent.d.ts +0 -16
  224. package/dist/lib/events/MKEvent.js +0 -21
  225. package/dist/lib/events/MKEvent.js.map +0 -1
  226. package/dist/lib/events/MKPlayerEventCallback.d.ts +0 -4
  227. package/dist/lib/events/MKPlayerEventCallback.js +0 -3
  228. package/dist/lib/events/MKPlayerEventCallback.js.map +0 -1
  229. package/dist/lib/events/UrlType.d.ts +0 -4
  230. package/dist/lib/events/UrlType.js +0 -9
  231. package/dist/lib/events/UrlType.js.map +0 -1
  232. package/dist/lib/index.d.ts +0 -6
  233. package/dist/lib/index.js +0 -10
  234. package/dist/lib/index.js.map +0 -1
  235. package/dist/lib-esm/BufferLevel.d.ts +0 -4
  236. package/dist/lib-esm/BufferLevel.js +0 -2
  237. package/dist/lib-esm/BufferLevel.js.map +0 -1
  238. package/dist/lib-esm/LabelConfig.d.ts +0 -4
  239. package/dist/lib-esm/LabelConfig.js +0 -2
  240. package/dist/lib-esm/LabelConfig.js.map +0 -1
  241. package/dist/lib-esm/Logger.d.ts +0 -9
  242. package/dist/lib-esm/Logger.js +0 -69
  243. package/dist/lib-esm/Logger.js.map +0 -1
  244. package/dist/lib-esm/MKPlayer.d.ts +0 -31
  245. package/dist/lib-esm/MKPlayer.js +0 -286
  246. package/dist/lib-esm/MKPlayer.js.map +0 -1
  247. package/dist/lib-esm/MKPlayerConfiguration.d.ts +0 -15
  248. package/dist/lib-esm/MKPlayerConfiguration.js +0 -2
  249. package/dist/lib-esm/MKPlayerConfiguration.js.map +0 -1
  250. package/dist/lib-esm/MKStream.d.ts +0 -34
  251. package/dist/lib-esm/MKStream.js +0 -123
  252. package/dist/lib-esm/MKStream.js.map +0 -1
  253. package/dist/lib-esm/SubtitleTrack.d.ts +0 -4
  254. package/dist/lib-esm/SubtitleTrack.js +0 -2
  255. package/dist/lib-esm/SubtitleTrack.js.map +0 -1
  256. package/dist/lib-esm/URLHelper.d.ts +0 -5
  257. package/dist/lib-esm/URLHelper.js +0 -60
  258. package/dist/lib-esm/URLHelper.js.map +0 -1
  259. package/dist/lib-esm/events/MKEvent.d.ts +0 -16
  260. package/dist/lib-esm/events/MKEvent.js +0 -18
  261. package/dist/lib-esm/events/MKEvent.js.map +0 -1
  262. package/dist/lib-esm/events/MKPlayerEventCallback.d.ts +0 -4
  263. package/dist/lib-esm/events/MKPlayerEventCallback.js +0 -2
  264. package/dist/lib-esm/events/MKPlayerEventCallback.js.map +0 -1
  265. package/dist/lib-esm/events/UrlType.d.ts +0 -4
  266. package/dist/lib-esm/events/UrlType.js +0 -6
  267. package/dist/lib-esm/events/UrlType.js.map +0 -1
  268. package/dist/lib-esm/index.d.ts +0 -6
  269. package/dist/lib-esm/index.js +0 -4
  270. package/dist/lib-esm/index.js.map +0 -1
  271. package/dist/mkplayer.js +0 -1
  272. package/doc/assets/css/main.css +0 -1
  273. package/doc/assets/images/icons.png +0 -0
  274. package/doc/assets/images/icons@2x.png +0 -0
  275. package/doc/assets/images/widgets.png +0 -0
  276. package/doc/assets/images/widgets@2x.png +0 -0
  277. package/doc/assets/js/main.js +0 -51
  278. package/doc/assets/js/search.json +0 -1
  279. package/doc/classes/mkplayer.html +0 -677
  280. package/doc/enums/mkevent.html +0 -348
  281. package/doc/enums/urltype.html +0 -180
  282. package/doc/globals.html +0 -150
  283. package/doc/index.html +0 -347
  284. package/doc/interfaces/bufferlevel.html +0 -143
  285. package/doc/interfaces/labelconfig.html +0 -198
  286. package/doc/interfaces/mkplayereventcallback.html +0 -170
  287. package/doc/interfaces/subtitletrack.html +0 -198
  288. package/favicon.ico +0 -0
  289. package/index.html +0 -539
  290. package/mk_logo.png +0 -0
  291. package/mkplayer-ui.min.css +0 -2
  292. package/multi-camera.html +0 -391
  293. package/src/BufferLevel.ts +0 -7
  294. package/src/LabelConfig.ts +0 -14
  295. package/src/Logger.ts +0 -51
  296. package/src/MKPlayer.ts +0 -390
  297. package/src/MKPlayerConfiguration.ts +0 -51
  298. package/src/MKStream.ts +0 -154
  299. package/src/SubtitleTrack.ts +0 -14
  300. package/src/URLHelper.ts +0 -71
  301. package/src/events/MKEvent.ts +0 -19
  302. package/src/events/MKPlayerEventCallback.ts +0 -8
  303. package/src/events/UrlType.ts +0 -7
  304. package/src/index.ts +0 -6
  305. package/tsconfig.json +0 -20
  306. package/tslint.json +0 -72
  307. package/typedoc.json +0 -11
@@ -1,7 +0,0 @@
1
- /**
2
- * Interface used to describe the MKPlayer's current buffer level
3
- */
4
- export interface BufferLevel {
5
- audio: number;
6
- video: number;
7
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Config to change the labels in the player dropdown
3
- */
4
- export interface LabelConfig {
5
- /**
6
- * list of labels to use in the audio dropdown
7
- */
8
- audio?: Record<string, string>;
9
-
10
- /**
11
- * list of labels to use in the captions dropdown
12
- */
13
- captions?: Record<string, string>;
14
- }
package/src/Logger.ts DELETED
@@ -1,51 +0,0 @@
1
- export class Logger {
2
- private static enabled: boolean = false;
3
-
4
- public static enable() {
5
- this.enabled = true;
6
- }
7
-
8
- public static disable() {
9
- this.enabled = false;
10
- }
11
-
12
- public static log(message?: any, ...optionalParams: any[]): void {
13
- if (typeof console === 'undefined') {
14
- return;
15
- }
16
-
17
- if (this.enabled) {
18
- console.log(message, ...optionalParams);
19
- }
20
- }
21
-
22
- public static error(message?: any, ...optionalParams: any[]): void {
23
- if (typeof console === 'undefined') {
24
- return;
25
- }
26
-
27
- if (this.enabled) {
28
- console.error(message, ...optionalParams);
29
- }
30
- }
31
-
32
- public static warn(message?: any, ...optionalParams: any[]): void {
33
- if (typeof console === 'undefined') {
34
- return;
35
- }
36
-
37
- if (this.enabled) {
38
- console.warn(message, ...optionalParams);
39
- }
40
- }
41
-
42
- public static debug(message?: any, ...optionalParams: any[]): void {
43
- if (typeof console === 'undefined') {
44
- return;
45
- }
46
-
47
- if (this.enabled) {
48
- console.debug(message, ...optionalParams);
49
- }
50
- }
51
- }
package/src/MKPlayer.ts DELETED
@@ -1,390 +0,0 @@
1
- import {
2
- BufferType, LogLevel, MediaType, Player, PlayerAPI, PlayerConfig, PlayerEvent, SourceConfig, SubtitleTrack,
3
- } from 'bitmovin-player';
4
- import { UIFactory } from 'bitmovin-player-ui';
5
- import { MKPlayerConfiguration } from './MKPlayerConfiguration';
6
- import { MKStream } from './MKStream';
7
- import { MKEvent } from './events/MKEvent';
8
- import { BufferLevel } from './BufferLevel';
9
- import { MKPlayerEventCallback } from './events/MKPlayerEventCallback';
10
- import { Logger } from './Logger';
11
- import { HttpRequest, HttpRequestType } from 'bitmovin-player/types/core/NetworkAPI';
12
- import { UrlType } from './events/UrlType';
13
- import { URLHelper } from './URLHelper';
14
-
15
- /**
16
- * MKPlayer is an HTML5 video player used for playback of HLS and DASH adaptive bitrate streams
17
- */
18
- export class MKPlayer {
19
- private player: PlayerAPI;
20
- private stream: MKStream;
21
- /**
22
- * constructor used to create a new MKPlayer instance
23
- *
24
- * @param containerElement - container that the video player will be rendered in
25
- * @param mkPlayerConfiguration - configuration for this MKPlayer instance
26
- */
27
- constructor(containerElement: HTMLElement, mkPlayerConfiguration: MKPlayerConfiguration) {
28
- let playerConfig: PlayerConfig = {
29
- key: mkPlayerConfiguration.key,
30
- playback: {
31
- autoplay: mkPlayerConfiguration.autoplay,
32
- muted: mkPlayerConfiguration.muted,
33
- },
34
- analytics: {
35
- key: '1c45ae9c-345e-4462-95e2-3e8faccd64f1',
36
- },
37
- ui: {
38
- disableAutoHideWhenHovered: true,
39
- },
40
- logs: {
41
- level: LogLevel.OFF,
42
- bitmovin: false,
43
- },
44
- network: {
45
- preprocessHttpRequest: (type: HttpRequestType, request: HttpRequest) => {
46
- if (type === 'manifest/hls/master' || type === 'manifest/hls/variant') {
47
- if (typeof mkPlayerConfiguration.refreshToken === 'function') {
48
- let urlType = this.stream.didFailOver ? UrlType.Secondary : UrlType.Primary;
49
- let token = mkPlayerConfiguration.refreshToken(urlType);
50
- console.log('[MKPlayer] Appending ' + urlType + ' token: ' + token.name + '=' + token.value);
51
- request.url = URLHelper.appendToken(request.url, token.name, token.value);
52
- }
53
- }
54
- return Promise.resolve(request);
55
- },
56
- preprocessHttpResponse: (type, response) => {
57
- if (type === 'manifest/hls/master') {
58
- let body = this.manipulateMasterPlaylist((response.body as string));
59
- // @ts-ignore
60
- response.body = body;
61
- }
62
- return Promise.resolve(response);
63
- },
64
- },
65
- };
66
-
67
- if (mkPlayerConfiguration.targetLatency > 0) {
68
- playerConfig.live = {
69
- lowLatency: {
70
- targetLatency: mkPlayerConfiguration.targetLatency,
71
- catchup: {
72
- playbackRateThreshold: 0.075,
73
- seekThreshold: 12,
74
- playbackRate: 1.2,
75
- },
76
- fallback: {
77
- playbackRateThreshold: 0.075,
78
- seekThreshold: 12,
79
- playbackRate: 0.8,
80
- },
81
- },
82
- };
83
- }
84
-
85
- let player = new Player(containerElement, playerConfig);
86
- if (mkPlayerConfiguration.ui !== false) {
87
- if (mkPlayerConfiguration.smallScreen) {
88
- UIFactory.buildDefaultSmallScreenUI(player);
89
- } else {
90
- UIFactory.buildDefaultUI(player, playerConfig.ui);
91
- }
92
- }
93
-
94
- if (mkPlayerConfiguration.debug) {
95
- Logger.enable();
96
- }
97
-
98
- this.player = player;
99
- console.log('%c MKPlayer ' + this.version() + ' www.mediakind.com', 'color: blue');
100
- }
101
-
102
- /**
103
- * start playback or resumes playback after the player has been paused
104
- */
105
- play(): Promise<void> {
106
- return this.player.play();
107
- }
108
-
109
- /**
110
- * pauses playback on the player
111
- */
112
- pause(): void {
113
- this.player.pause();
114
- }
115
-
116
- /**
117
- * destroys the video player. You must create a new MKPlayer if this method is called
118
- */
119
- destroy(): Promise<void> {
120
- return this.player.destroy();
121
- }
122
-
123
- /**
124
- * Loads a new stream for playback
125
- *
126
- * @param stream - the stream the player will load
127
- */
128
- load(stream: MKStream): Promise<void> {
129
- let playerSource: SourceConfig;
130
- this.stream = stream;
131
- let url: string = this.selectUrl();
132
-
133
- if (url.includes('.m3u8')) {
134
- playerSource = {
135
- hls: url,
136
- };
137
- } else if (url.includes('.mp4')) {
138
- playerSource = {
139
- progressive: url,
140
- };
141
- } else {
142
- playerSource = {
143
- dash: url,
144
- };
145
- }
146
-
147
- if (stream.poster) {
148
- playerSource.poster = stream.poster;
149
- }
150
-
151
- playerSource.labeling = {
152
- hls: {
153
- tracks: (track) => {
154
- if (this.stream.labelConfig && this.stream.labelConfig.audio && this.stream.labelConfig.audio[track.lang]) {
155
- return this.stream.labelConfig.audio[track.lang];
156
- } else {
157
- return track.lang;
158
- }
159
- },
160
- subtitles: (track) => {
161
- console.log(track);
162
- if (this.stream.labelConfig && this.stream.labelConfig.captions && this.stream.labelConfig.captions[track.lang]) {
163
- return this.stream.labelConfig.captions[track.lang];
164
- } else {
165
- return track.lang;
166
- }
167
- },
168
- },
169
- };
170
-
171
- if (stream.assetIdentifier) {
172
- playerSource.analytics = {
173
- videoId: stream.assetIdentifier,
174
- userId: stream.userId,
175
- customData1: stream.customData1,
176
- customData2: stream.customData2,
177
- customData3: stream.customData3,
178
- customData4: stream.customData4,
179
- customData5: stream.customData5,
180
- customData6: this.version(),
181
- };
182
- }
183
-
184
- if (stream.subtitleTracks && stream.subtitleTracks[0] && stream.subtitleTracks[0].url && !stream.subtitleTracks[0].url.includes('.m3u8')) {
185
- playerSource.subtitleTracks = stream.subtitleTracks.map((track) => <SubtitleTrack>{
186
- lang: track.language,
187
- url: track.url,
188
- id: MKPlayer.makeId(4),
189
- });
190
- }
191
-
192
- Logger.log('[MKPlayer] loading source - ' + JSON.stringify(playerSource));
193
-
194
- return this.player.load(playerSource);
195
- }
196
-
197
- /**
198
- * Removes a handler for a MKEvent
199
- *
200
- * @param eventType
201
- * @param callback
202
- */
203
- off(eventType: MKEvent, callback: MKPlayerEventCallback): void {
204
- let playerEventType = MKPlayer.mapEvent(eventType);
205
- return this.player.off(playerEventType, callback);
206
- }
207
-
208
- /**
209
- * Subscribes and event handler to a MKEvent
210
- *
211
- * @param eventType
212
- * @param callback
213
- */
214
- on(eventType: MKEvent, callback: MKPlayerEventCallback): void {
215
- let playerEventType = MKPlayer.mapEvent(eventType);
216
- return this.player.on(playerEventType, callback);
217
- }
218
-
219
- /**
220
- * unloads the current playing stream
221
- */
222
- unload(): Promise<void> {
223
- return this.player.unload();
224
- }
225
-
226
- /**
227
- * gets the player's current time
228
- */
229
- getCurrentTime(): number {
230
- return this.player.getCurrentTime();
231
- }
232
-
233
- /**
234
- * gets the current audio and video buffer levels
235
- *
236
- * @returns
237
- */
238
- getBufferLevels(): BufferLevel {
239
- return {
240
- audio: this.player.buffer.getLevel(BufferType.ForwardDuration, MediaType.Audio).level,
241
- video: this.player.buffer.getLevel(BufferType.ForwardDuration, MediaType.Video).level,
242
- };
243
- }
244
-
245
- /**
246
- * sets the target latency during live playback
247
- * @param latency
248
- */
249
- setTargetLatency(latency: number) {
250
- this.player.lowlatency.setTargetLatency(latency);
251
- }
252
-
253
- /**
254
- * sets the target latency during live playback
255
- * @param latency
256
- */
257
- getLatency(): number {
258
- return this.player.lowlatency.getLatency();
259
- }
260
-
261
- /**
262
- * mutes the player
263
- */
264
- mute(): void {
265
- this.player.mute();
266
- }
267
-
268
- /**
269
- * gets the current playback speed
270
- */
271
- playbackSpeed(): number {
272
- return this.player.getPlaybackSpeed();
273
- }
274
-
275
- /**
276
- * unmute the player
277
- */
278
- unmute(): void {
279
- this.player.unmute();
280
- }
281
-
282
- /**
283
- * sets the player's volume in the range of 0 (silent) to 100 (max volume)
284
- *
285
- * @param volume The volume to set between 0 and 100
286
- */
287
- setVolume(volume: number): void {
288
- this.player.setVolume(volume);
289
- }
290
-
291
- /**
292
- * returns the current player version
293
- */
294
- version(): string {
295
- return '1.0.21';
296
- }
297
-
298
- private selectUrl(): string {
299
- let rand = MKPlayer.getRandomInt(99);
300
- if (this.stream.cdnFailoverPercent && this.stream.secondaryUrl && rand < this.stream.cdnFailoverPercent) {
301
- Logger.log('[MKPlayer] selecting secondary source url - ' + this.stream.secondaryUrl);
302
- this.stream.didFailOver = true;
303
- return this.stream.secondaryUrl;
304
- } else {
305
- Logger.log('[MKPlayer] selecting primary source url - ' + this.stream.primaryUrl);
306
- this.stream.didFailOver = false;
307
- return this.stream.primaryUrl;
308
- }
309
- }
310
-
311
- private static getRandomInt(max: number) {
312
- return Math.floor(Math.random() * Math.floor(max));
313
- }
314
-
315
- private static makeId(length) {
316
- let result = '';
317
- let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
318
- let charactersLength = characters.length;
319
- for (let i = 0; i < length; i++) {
320
- result += characters.charAt(Math.floor(Math.random() * charactersLength));
321
- }
322
- return result;
323
- }
324
-
325
- private static mapEvent(event: MKEvent): PlayerEvent {
326
- let playerEventType: PlayerEvent;
327
- switch (event) {
328
- case MKEvent.BufferingStarted:
329
- playerEventType = PlayerEvent.StallStarted;
330
- break;
331
- case MKEvent.BufferingEnded:
332
- playerEventType = PlayerEvent.StallEnded;
333
- break;
334
- case MKEvent.Playing:
335
- playerEventType = PlayerEvent.Playing;
336
- break;
337
- case MKEvent.Paused:
338
- playerEventType = PlayerEvent.Paused;
339
- break;
340
- case MKEvent.TimeChanged:
341
- playerEventType = PlayerEvent.TimeChanged;
342
- break;
343
- case MKEvent.Ready:
344
- playerEventType = PlayerEvent.Ready;
345
- break;
346
- case MKEvent.Error:
347
- playerEventType = PlayerEvent.Error;
348
- break;
349
- case MKEvent.StreamFinished:
350
- playerEventType = PlayerEvent.PlaybackFinished;
351
- break;
352
- case MKEvent.Warning:
353
- playerEventType = PlayerEvent.Warning;
354
- break;
355
- case MKEvent.QualityChanged:
356
- playerEventType = PlayerEvent.VideoPlaybackQualityChanged;
357
- break;
358
- case MKEvent.SegmentPlayback:
359
- playerEventType = PlayerEvent.SegmentPlayback;
360
- break;
361
- case MKEvent.Unloaded:
362
- playerEventType = PlayerEvent.SourceUnloaded;
363
- break;
364
- case MKEvent.Metadata:
365
- playerEventType = PlayerEvent.Metadata;
366
- break;
367
- case MKEvent.MetadataParsed:
368
- playerEventType = PlayerEvent.MetadataParsed;
369
- break;
370
- }
371
- return playerEventType;
372
- }
373
-
374
- private manipulateMasterPlaylist(response: string): string {
375
- let body = (response as string);
376
- if (this.stream.subtitleTracks && this.stream.subtitleTracks[0] && this.stream.subtitleTracks[0].url && this.stream.subtitleTracks[0].url.includes('.m3u8')) {
377
- this.stream.subtitleTracks.forEach((track) => {
378
- body = body.concat('\n#EXT-X-MEDIA:TYPE=SUBTITLES,'
379
- + 'NAME="' + track.language + '",'
380
- + 'DEFAULT=YES,'
381
- + 'AUTOSELECT=YES,'
382
- + 'FORCED=NO,'
383
- + 'LANGUAGE="' + track.language + '",GROUP-ID="Subtitles",'
384
- + 'URI="' + track.url + '"');
385
- });
386
- }
387
-
388
- return body;
389
- }
390
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * MKPlayer's configuration interface
3
- */
4
- import { UrlType } from './events/UrlType';
5
-
6
- export interface MKPlayerConfiguration {
7
- /**
8
- * Toggles debug output logging
9
- */
10
- debug: boolean;
11
-
12
- /**
13
- * Option to enable the player to start playback after successfully loading a source
14
- */
15
- autoplay: boolean;
16
-
17
- /**
18
- * Option to enable the player to start in a muted state. The user is able to unmute via the UI or an API call through
19
- */
20
- muted: boolean;
21
-
22
- /**
23
- * Boolean indicating if the player should load the small screen ui
24
- */
25
- smallScreen: boolean;
26
-
27
- /**
28
- * Boolean to enable / disable ui
29
- */
30
- ui: boolean;
31
-
32
- /**
33
- * number of seconds the player attempts to stay behind the live point
34
- */
35
- targetLatency: number;
36
-
37
- /**
38
- * license key for the video player
39
- */
40
- key: string;
41
-
42
- /**
43
- * Refresh the CDN Token
44
- */
45
- refreshToken?: (type: UrlType) => TokenParam;
46
- }
47
-
48
- export interface TokenParam {
49
- name: string;
50
- value: string;
51
- }
package/src/MKStream.ts DELETED
@@ -1,154 +0,0 @@
1
- /**
2
- * Configuration object used when loading a new stream
3
- */
4
- import { SubtitleTrack } from './SubtitleTrack';
5
- import { LabelConfig } from './LabelConfig';
6
-
7
- export class MKStream {
8
- private readonly _assetIdentifier: string;
9
- private readonly _primaryUrl?: string;
10
- private readonly _secondaryUrl?: string;
11
- private readonly _subtitleTracks: SubtitleTrack[];
12
- private readonly _cdnFailoverPercent: number = 0;
13
- private readonly _poster: string;
14
- private readonly _userId: string;
15
- private readonly _customData1: string;
16
- private readonly _customData2: string;
17
- private readonly _customData3: string;
18
- private readonly _customData4: string;
19
- private readonly _customData5: string;
20
- private readonly _labelConfig: LabelConfig;
21
- private _didFailOver: boolean = false;
22
-
23
- /**
24
- *
25
- * @param primaryUrl - primary stream url
26
- * @param secondaryUrl - secondary backup stream url
27
- * @param subtitleTracks - a list of external subtitle tracks that should be loaded with the player
28
- * @param poster - url to a poster image to render on the player
29
- * @param cdnFailoverPercent - percent value from 0-100 describing what percentage of users should initially playback
30
- * the secondary url
31
- * @param assetIdentifier - identifier for the current stream
32
- * @param labelConfig - config to change the labels in the player dropdown
33
- */
34
- constructor(primaryUrl: string, assetIdentifier: string, subtitleTracks?: SubtitleTrack[], poster?: string, secondaryUrl?: string, cdnFailoverPercent?: number, userId?: string, customData1?: string, customData2?: string, customData3?: string, customData4?: string, customData5?: string, labelConfig?: LabelConfig) {
35
- this._cdnFailoverPercent = cdnFailoverPercent;
36
- this._secondaryUrl = secondaryUrl;
37
- this._primaryUrl = primaryUrl;
38
- this._assetIdentifier = assetIdentifier;
39
- this._subtitleTracks = subtitleTracks;
40
- this._poster = poster;
41
- this._userId = userId;
42
- this._customData1 = customData1;
43
- this._customData2 = customData2;
44
- this._customData3 = customData3;
45
- this._customData4 = customData4;
46
- this._customData5 = customData5;
47
- this._labelConfig = labelConfig;
48
- }
49
-
50
- /**
51
- * percent value from 0-100 describing what percentage of users should playback the secondary url
52
- */
53
- public get cdnFailoverPercent(): number {
54
- return this._cdnFailoverPercent;
55
- }
56
-
57
- /**
58
- * primary stream url used during playback
59
- */
60
- public get primaryUrl(): string {
61
- return this._primaryUrl;
62
- }
63
-
64
- /**
65
- * secondary stream url used during playback
66
- */
67
- public get secondaryUrl(): string {
68
- return this._secondaryUrl;
69
- }
70
-
71
- /**
72
- * percent value from 0-100 describing what percentage of users should playback the secondary url
73
- */
74
- public get subtitleTracks(): SubtitleTrack[] {
75
- return this._subtitleTracks;
76
- }
77
-
78
- /**
79
- * identifier for the current stream
80
- */
81
- public get assetIdentifier(): string {
82
- return this._assetIdentifier;
83
- }
84
-
85
- /**
86
- * poster art for the current stream
87
- */
88
- public get poster(): string {
89
- return this._poster;
90
- }
91
-
92
- /**
93
- * customData1 field for the current stream
94
- */
95
- public get customData1(): string {
96
- return this._customData1;
97
- }
98
-
99
- /**
100
- * customData2 field for the current stream
101
- */
102
- public get customData2(): string {
103
- return this._customData2;
104
- }
105
-
106
- /**
107
- * customData3 field for the current stream
108
- */
109
- public get customData3(): string {
110
- return this._customData3;
111
- }
112
-
113
- /**
114
- * customData5 field for the current stream
115
- */
116
- public get customData4(): string {
117
- return this._customData4;
118
- }
119
-
120
- /**
121
- * customData5 field for the current stream
122
- */
123
- public get customData5(): string {
124
- return this._customData5;
125
- }
126
-
127
- /**
128
- * userId field for the current stream
129
- */
130
- public get userId(): string {
131
- return this._userId;
132
- }
133
-
134
- /**
135
- * config to change the labels in the player dropdown
136
- */
137
- public get labelConfig(): LabelConfig {
138
- return this._labelConfig;
139
- }
140
-
141
- /**
142
- * boolean value describing if failover happened
143
- */
144
- public get didFailOver(): boolean {
145
- return this._didFailOver;
146
- }
147
-
148
- /**
149
- * setter for the didFailOver boolean value
150
- */
151
- public set didFailOver(value: boolean) {
152
- this._didFailOver = value;
153
- }
154
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Used to describe an external subtitle track (WebVtt or srt) outside of the MKStream manifest url
3
- */
4
- export interface SubtitleTrack {
5
- /**
6
- * url to the external subtitle track
7
- */
8
- url: string;
9
-
10
- /**
11
- * language of the subtitle track. This string will be displayed in the UI
12
- */
13
- language: string;
14
- }