ravnur-player-public 3.4.3 → 3.4.4

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 (260) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc.js +206 -0
  3. package/.flowconfig +3 -0
  4. package/.vscode/extensions.json +7 -0
  5. package/.vscode/launch.json +37 -0
  6. package/.vscode/settings.json +4 -0
  7. package/README-Private.md +54 -0
  8. package/babel.config.js +28 -0
  9. package/bitbucket-pipelines.yml +61 -0
  10. package/cert.pem +23 -0
  11. package/demo/BaseM.mp4 +0 -0
  12. package/demo/HD.mp4 +0 -0
  13. package/demo/annotations.json +50 -0
  14. package/demo/annotations_ge.json +50 -0
  15. package/demo/base.mp3 +0 -0
  16. package/demo/cc_2125en.vtt +4958 -0
  17. package/demo/cc_en.vtt +171 -0
  18. package/demo/cc_ge.vtt +178 -0
  19. package/demo/chapters_en.vtt +38 -0
  20. package/demo/chapters_ge.vtt +5 -0
  21. package/demo/chapters_ge1.json +23 -0
  22. package/demo/hls/audio/stereo/en/128kbit.m3u8 +912 -0
  23. package/demo/hls/audio/stereo/none/128kbit.m3u8 +912 -0
  24. package/demo/hls/audio/surround/en/320kbit.m3u8 +912 -0
  25. package/demo/hls/playlist.m3u8 +31 -0
  26. package/demo/hls/video/10000kbit.m3u8 +894 -0
  27. package/demo/hls/video/1100kbit.m3u8 +894 -0
  28. package/demo/hls/video/1500kbit.m3u8 +894 -0
  29. package/demo/hls/video/250kbit.m3u8 +894 -0
  30. package/demo/hls/video/4000kbit.m3u8 +894 -0
  31. package/demo/hls/video/500kbit.m3u8 +894 -0
  32. package/demo/hls/video/6000kbit.m3u8 +894 -0
  33. package/demo/hls/video/800kbit.m3u8 +894 -0
  34. package/demo/hls.js +5 -0
  35. package/demo/hls.js.map +1 -0
  36. package/demo/hls.min.js +2 -0
  37. package/demo/hls.min.js.map +1 -0
  38. package/demo/playlist.m3u8 +31 -0
  39. package/demo/ravnur-flash-audio.swf +0 -0
  40. package/demo/ravnur-flash-video-hls.swf +0 -0
  41. package/demo/ravnur-flash-video.swf +0 -0
  42. package/demo/shaka/shaka-player.foo.debug.d.ts +4532 -0
  43. package/demo/shaka/shaka-player.foo.debug.externs.js +3886 -0
  44. package/demo/shaka/shaka-player.foo.debug.js +1746 -0
  45. package/demo/shaka/shaka-player.foo.debug.map +8 -0
  46. package/demo/shaka/wrapper.js +7 -0
  47. package/demo/test.html +458 -0
  48. package/dist/RavnurMediaPlayer.min.js +1 -1
  49. package/dist/cdn/RavnurMediaPlayer.min.js +1 -1
  50. package/jest.config.js +4 -0
  51. package/key.pem +27 -0
  52. package/lib/es5.js +344 -0
  53. package/lib/images/Spinner-small.gif +0 -0
  54. package/lib/images/close.png +0 -0
  55. package/lib/images/ic_check_box_black_24dp_1x.png +0 -0
  56. package/lib/images/ic_check_box_outline_blank_black_24dp_1x.png +0 -0
  57. package/lib/images/ic_chevron_left_white_24dp_1x.png +0 -0
  58. package/lib/images/ic_chevron_right_white_24dp_1x.png +0 -0
  59. package/lib/images/ic_closed_caption_white_24dp_1x.png +0 -0
  60. package/lib/images/ic_fast_forward_white_24dp_1x.png +0 -0
  61. package/lib/images/ic_fast_rewind_white_24dp_1x.png +0 -0
  62. package/lib/images/ic_fullscreen_exit_white_24dp_1x.png +0 -0
  63. package/lib/images/ic_fullscreen_white_24dp_1x.png +0 -0
  64. package/lib/images/ic_hd_white_24dp_1x.png +0 -0
  65. package/lib/images/ic_keyboard_arrow_left_black_24dp_1x.png +0 -0
  66. package/lib/images/ic_keyboard_arrow_right_black_24dp_1x.png +0 -0
  67. package/lib/images/ic_pause_white_24dp_1x.png +0 -0
  68. package/lib/images/ic_photo_white_24dp_1x.png +0 -0
  69. package/lib/images/ic_play_arrow_white_24dp_1x.png +0 -0
  70. package/lib/images/ic_refresh_white_24dp_1x.png +0 -0
  71. package/lib/images/ic_settings_white_24dp_1x.png +0 -0
  72. package/lib/images/ic_skip_next_white_24dp_1x.png +0 -0
  73. package/lib/images/ic_skip_previous_white_24dp_1x.png +0 -0
  74. package/lib/images/ic_toc_white_24dp_1x.png +0 -0
  75. package/lib/images/ic_volume_off_white_24dp_1x.png +0 -0
  76. package/lib/images/ic_volume_up_white_24dp_1x.png +0 -0
  77. package/lib/player4ie8.css +225 -0
  78. package/package.json +3 -7
  79. package/server.js +29 -0
  80. package/src/config/cc.js +56 -0
  81. package/src/config/i18n.js +101 -0
  82. package/src/config/options.js +123 -0
  83. package/src/config/playlist.js +9 -0
  84. package/src/config/source.js +23 -0
  85. package/src/config/statuses.js +8 -0
  86. package/src/config/styles.js +16 -0
  87. package/src/entity.js +27 -0
  88. package/src/events.js +5 -0
  89. package/src/extensions/annotations.js +142 -0
  90. package/src/extensions/audio-tarcks.js +115 -0
  91. package/src/extensions/backward.js +45 -0
  92. package/src/extensions/base.js +73 -0
  93. package/src/extensions/bottom-next.js +50 -0
  94. package/src/extensions/bottom-prev.js +50 -0
  95. package/src/extensions/buffering.js +78 -0
  96. package/src/extensions/c2pa.js +350 -0
  97. package/src/extensions/caption-search.js +230 -0
  98. package/src/extensions/cc.js +874 -0
  99. package/src/extensions/crawl.js +118 -0
  100. package/src/extensions/download.js +411 -0
  101. package/src/extensions/error.js +47 -0
  102. package/src/extensions/forward.js +44 -0
  103. package/src/extensions/fullscreen.js +84 -0
  104. package/src/extensions/help.js +201 -0
  105. package/src/extensions/helpers/FileSaver.js +157 -0
  106. package/src/extensions/helpers/clickOpener.js +180 -0
  107. package/src/extensions/helpers/opener.js +30 -0
  108. package/src/extensions/helpers/openerHeightChecker.js +13 -0
  109. package/src/extensions/helpers/popover.js +33 -0
  110. package/src/extensions/helpers/popoverPosition.js +30 -0
  111. package/src/extensions/helpers/scrollIntoView.js +9 -0
  112. package/src/extensions/helpers/storage.js +20 -0
  113. package/src/extensions/helpers/textContent.js +6 -0
  114. package/src/extensions/helpers/timeCodeToSeconds.js +44 -0
  115. package/src/extensions/helpers/transport.js +43 -0
  116. package/src/extensions/helpers/vtt-loader.js +42 -0
  117. package/src/extensions/index.js +87 -0
  118. package/src/extensions/live.js +76 -0
  119. package/src/extensions/mux.js +57 -0
  120. package/src/extensions/next-frame.js +44 -0
  121. package/src/extensions/next.js +48 -0
  122. package/src/extensions/placeholder.js +241 -0
  123. package/src/extensions/play.js +102 -0
  124. package/src/extensions/poster.js +47 -0
  125. package/src/extensions/prev-frame.js +44 -0
  126. package/src/extensions/prev.js +48 -0
  127. package/src/extensions/progress.js +465 -0
  128. package/src/extensions/resizer.js +37 -0
  129. package/src/extensions/settings.js +367 -0
  130. package/src/extensions/theater.js +56 -0
  131. package/src/extensions/title.js +38 -0
  132. package/src/extensions/toc.js +334 -0
  133. package/src/extensions/volume.js +196 -0
  134. package/src/flash/FlashPlugin.js +301 -0
  135. package/src/flash/MediaElement.js +361 -0
  136. package/src/flash/plugins.js +32 -0
  137. package/src/flash-detector.js +66 -0
  138. package/src/helpers/$t.js +10 -0
  139. package/src/helpers/binder.js +11 -0
  140. package/src/helpers/isAndroid.js +5 -0
  141. package/src/helpers/isBlackBerry.js +5 -0
  142. package/src/helpers/isCanvasSupported.js +6 -0
  143. package/src/helpers/isIE.js +21 -0
  144. package/src/helpers/isMobile.js +10 -0
  145. package/src/helpers/isWindows.js +5 -0
  146. package/src/helpers/isWindowsPhone.js +5 -0
  147. package/src/helpers/isiOS.js +5 -0
  148. package/src/html5media.js +19 -0
  149. package/src/index.js +2 -0
  150. package/src/logger.js +31 -0
  151. package/src/microevent.js +65 -0
  152. package/src/normalize-options.js +139 -0
  153. package/src/player.js +864 -0
  154. package/src/players/base.js +209 -0
  155. package/src/players/flash.js +172 -0
  156. package/src/players/hls.js +278 -0
  157. package/src/players/html.js +205 -0
  158. package/src/players/index.js +59 -0
  159. package/src/players/shaka.js +219 -0
  160. package/src/playlist.js +362 -0
  161. package/src/screenfull.js +121 -0
  162. package/src/state.js +474 -0
  163. package/src/static/es5.js +344 -0
  164. package/src/static/images/Spinner-small.gif +0 -0
  165. package/src/static/images/close.png +0 -0
  166. package/src/static/images/ic_check_box_black_24dp_1x.png +0 -0
  167. package/src/static/images/ic_check_box_outline_blank_black_24dp_1x.png +0 -0
  168. package/src/static/images/ic_chevron_left_white_24dp_1x.png +0 -0
  169. package/src/static/images/ic_chevron_right_white_24dp_1x.png +0 -0
  170. package/src/static/images/ic_closed_caption_white_24dp_1x.png +0 -0
  171. package/src/static/images/ic_fast_forward_white_24dp_1x.png +0 -0
  172. package/src/static/images/ic_fast_rewind_white_24dp_1x.png +0 -0
  173. package/src/static/images/ic_fullscreen_exit_white_24dp_1x.png +0 -0
  174. package/src/static/images/ic_fullscreen_white_24dp_1x.png +0 -0
  175. package/src/static/images/ic_hd_white_24dp_1x.png +0 -0
  176. package/src/static/images/ic_keyboard_arrow_left_black_24dp_1x.png +0 -0
  177. package/src/static/images/ic_keyboard_arrow_right_black_24dp_1x.png +0 -0
  178. package/src/static/images/ic_pause_white_24dp_1x.png +0 -0
  179. package/src/static/images/ic_play_arrow_white_24dp_1x.png +0 -0
  180. package/src/static/images/ic_refresh_white_24dp_1x.png +0 -0
  181. package/src/static/images/ic_settings_white_24dp_1x.png +0 -0
  182. package/src/static/images/ic_skip_next_white_24dp_1x.png +0 -0
  183. package/src/static/images/ic_skip_previous_white_24dp_1x.png +0 -0
  184. package/src/static/images/ic_toc_white_24dp_1x.png +0 -0
  185. package/src/static/images/ic_volume_off_white_24dp_1x.png +0 -0
  186. package/src/static/images/ic_volume_up_white_24dp_1x.png +0 -0
  187. package/src/static/player4ie8.css +225 -0
  188. package/src/styles/bplaylist.css.js +124 -0
  189. package/src/styles/index.js +1966 -0
  190. package/src/styles/playlist.css.js +84 -0
  191. package/src/styles/rplaylist.css.js +98 -0
  192. package/src/svgs.js +111 -0
  193. package/src/types/Logger.js +10 -0
  194. package/src/types/Options.js +179 -0
  195. package/src/types/Playlist.js +3 -0
  196. package/src/types/Source.js +28 -0
  197. package/src/types/State.js +46 -0
  198. package/src/types/Styles.js +11 -0
  199. package/src/types/TimeData.js +8 -0
  200. package/src/types/Translation.js +69 -0
  201. package/src/utils/absolutizeUrl.js +9 -0
  202. package/src/utils/addClass.js +9 -0
  203. package/src/utils/addEvent.js +31 -0
  204. package/src/utils/addProperty.js +65 -0
  205. package/src/utils/appendChild.js +14 -0
  206. package/src/utils/buff2hex.js +5 -0
  207. package/src/utils/contains.js +33 -0
  208. package/src/utils/createElement.js +24 -0
  209. package/src/utils/each.js +34 -0
  210. package/src/utils/escapeHTML.js +8 -0
  211. package/src/utils/existy.js +4 -0
  212. package/src/utils/extend.js +17 -0
  213. package/src/utils/filter.js +16 -0
  214. package/src/utils/find.js +11 -0
  215. package/src/utils/findIndex.js +20 -0
  216. package/src/utils/first.js +5 -0
  217. package/src/utils/get.js +19 -0
  218. package/src/utils/has.js +5 -0
  219. package/src/utils/hasClass.js +6 -0
  220. package/src/utils/head.js +11 -0
  221. package/src/utils/inRange.js +16 -0
  222. package/src/utils/index.js +73 -0
  223. package/src/utils/isArray.js +4 -0
  224. package/src/utils/isBoolean.js +3 -0
  225. package/src/utils/isElement.js +7 -0
  226. package/src/utils/isEmpty.js +6 -0
  227. package/src/utils/isEqual.js +33 -0
  228. package/src/utils/isEqualBuffer.js +13 -0
  229. package/src/utils/isFunction.js +3 -0
  230. package/src/utils/isNotEmpty.js +5 -0
  231. package/src/utils/isObject.js +5 -0
  232. package/src/utils/isString.js +9 -0
  233. package/src/utils/last.js +4 -0
  234. package/src/utils/map.js +11 -0
  235. package/src/utils/negate.js +8 -0
  236. package/src/utils/noop.js +1 -0
  237. package/src/utils/notExisty.js +5 -0
  238. package/src/utils/reduce.js +8 -0
  239. package/src/utils/remove.js +7 -0
  240. package/src/utils/removeClass.js +8 -0
  241. package/src/utils/removeEvent.js +7 -0
  242. package/src/utils/toArray.js +7 -0
  243. package/src/utils/toggleClass.js +16 -0
  244. package/src/utils/uidGenerator.js +8 -0
  245. package/src/utils/upperFirst.js +4 -0
  246. package/tests/extensions/__snapshots__/download.spec.js.snap +226 -0
  247. package/tests/extensions/__snapshots__/fullscreen.spec.js.snap +30 -0
  248. package/tests/extensions/__snapshots__/title.spec.js.snap +16 -0
  249. package/tests/extensions/download.spec.js +111 -0
  250. package/tests/extensions/fullscreen.spec.js +56 -0
  251. package/tests/extensions/title.spec.js +35 -0
  252. package/tests/mocks/assets/BaseM.mp4 +0 -0
  253. package/tests/mocks/assets/hls.min.js +5 -0
  254. package/tests/mocks/assets/styleMock.js +1 -0
  255. package/tests/mocks/base-player-options.js +47 -0
  256. package/tests/mocks/sources.js +58 -0
  257. package/tests/mocks/timedata/cc_en.vtt +171 -0
  258. package/tests/mocks/timedata/cc_ge.vtt +178 -0
  259. package/tests/utils/wait.js +1 -0
  260. package/webpack.config.js +78 -0
@@ -0,0 +1,7 @@
1
+ /*
2
+ @license
3
+ Shaka Player
4
+ Copyright 2016 Google LLC
5
+ SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ (function(){var innerGlobal=typeof window!="undefined"?window:global;var exportTo={};(function(window,global,module){%output%}).call(exportTo,innerGlobal,innerGlobal,undefined);if(typeof exports!="undefined")for(var k in exportTo.shaka)exports[k]=exportTo.shaka[k];else if(typeof define=="function"&&define.amd)define(function(){return exportTo.shaka});else innerGlobal.shaka=exportTo.shaka})();
package/demo/test.html ADDED
@@ -0,0 +1,458 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <title>RMP demo page</title>
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
7
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
8
+ <!-- utf-8 -->
9
+ <meta charset="utf-8" />
10
+
11
+ <!--[if lt IE 9]>
12
+ <script src="es5.js"></script>
13
+ <link rel="stylesheet" href="player4ie8.css" />
14
+ <![endif]-->
15
+
16
+ <style>
17
+ body {
18
+ font-family: Arial, sans-serif;
19
+ margin: 0;
20
+ padding: 20px;
21
+
22
+ background-color: #303032;
23
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%234dd730' fill-opacity='0.07' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E");
24
+ }
25
+
26
+ #player {
27
+ width: 100%;
28
+ max-width: 720px;
29
+ margin: 30px auto;
30
+ overflow: hidden;
31
+ text-align: center;
32
+ aspect-ratio: 16 / 9;
33
+ position: relative;
34
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5);
35
+ }
36
+
37
+ #controls {
38
+ display: grid;
39
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
40
+ gap: 10px;
41
+ }
42
+
43
+ input {
44
+ padding: 5px;
45
+ margin: 5px 0;
46
+ }
47
+
48
+ #shakaWrapper, #hlsWrapper {
49
+ width: 100%;
50
+ max-width: 720px;
51
+ margin: 30px auto;
52
+ overflow: hidden;
53
+ text-align: center;
54
+ }
55
+
56
+ .players-container {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: 30px;
60
+ margin: 20px auto;
61
+ max-width: 800px;
62
+ }
63
+
64
+ .main-player {
65
+ width: 100%;
66
+ max-width: 680px;
67
+ margin: 0 auto;
68
+ }
69
+
70
+ .secondary-players {
71
+ display: flex;
72
+ gap: 20px;
73
+ justify-content: center;
74
+ }
75
+
76
+ .player-wrapper {
77
+ flex: 1;
78
+ min-width: 0;
79
+ }
80
+
81
+ .secondary-players .player-wrapper {
82
+ max-width: 720px;
83
+ }
84
+
85
+ .player-label {
86
+ text-align: center;
87
+ font-size: 1.2em;
88
+ margin-bottom: 10px;
89
+ color: #ffffff;
90
+ }
91
+
92
+ #player, #shakaWrapper, #hlsWrapper {
93
+ width: 100%;
94
+ max-width: 100%;
95
+ margin: 0 auto;
96
+ overflow: hidden;
97
+ text-align: center;
98
+ aspect-ratio: 16 / 9;
99
+ }
100
+
101
+ #player video, #shakaWrapper video, #hlsWrapper video {
102
+ width: 100%;
103
+ max-width: 100%;
104
+ margin: 0 auto;
105
+ overflow: hidden;
106
+ text-align: center;
107
+ aspect-ratio: 16 / 9;
108
+ }
109
+
110
+ /* Media query for tablets */
111
+ @media screen and (max-width: 1024px) {
112
+ .secondary-players {
113
+ flex-direction: column;
114
+ max-width: 720px;
115
+ margin: 0 auto;
116
+ }
117
+
118
+ .player-wrapper {
119
+ width: 100%;
120
+ margin-bottom: 30px;
121
+ }
122
+ }
123
+
124
+ /* Media query for mobile devices */
125
+ @media screen and (max-width: 480px) {
126
+ .players-container {
127
+ gap: 15px;
128
+ }
129
+
130
+ .player-wrapper {
131
+ margin-bottom: 20px;
132
+ }
133
+
134
+ .player-label {
135
+ font-size: 1em;
136
+ }
137
+
138
+ #player video, #shakaWrapper video, #hlsWrapper video {
139
+ height: 250px;
140
+ }
141
+ }
142
+
143
+ .ravnur-player-inner-wrapper {
144
+ position: relative;
145
+ width: 100%;
146
+ height: 100%;
147
+ }
148
+
149
+ .crown {
150
+ position: absolute;
151
+ top: -55px;
152
+ right: -30px;
153
+ font-size: 76px;
154
+ transform: rotate(30deg);
155
+ display: inline-block;
156
+ filter: drop-shadow(3px 3px 3px rgba(0,0,0,0.4));
157
+ z-index: 1000;
158
+ }
159
+
160
+ .player-label {
161
+ position: relative;
162
+ display: inline-block;
163
+ }
164
+
165
+ /* Media query adjustment for crown on mobile */
166
+ @media screen and (max-width: 480px) {
167
+ .crown {
168
+ font-size: 28px;
169
+ right: 20px;
170
+ top: 15px;
171
+ }
172
+ }
173
+
174
+ /* Media query adjustments for the glowing text */
175
+ @media screen and (max-width: 480px) {
176
+ .glow-text {
177
+ font-size: 1.2em;
178
+ padding: 10px 20px;
179
+ }
180
+ }
181
+
182
+ .gradient-text {
183
+ background: linear-gradient(45deg, #12c2e9, #c471ed, #f64f59);
184
+ -webkit-background-clip: text;
185
+ background-clip: text;
186
+ color: transparent;
187
+ font-size: 2em;
188
+ font-weight: bold;
189
+ margin-bottom: 20px;
190
+ animation: gradient 8s ease infinite;
191
+ background-size: 300% 300%;
192
+ }
193
+
194
+ @keyframes gradient {
195
+ 0% {
196
+ background-position: 0% 50%;
197
+ }
198
+ 50% {
199
+ background-position: 100% 50%;
200
+ }
201
+ 100% {
202
+ background-position: 0% 50%;
203
+ }
204
+ }
205
+
206
+ /* Media query adjustments */
207
+ @media screen and (max-width: 480px) {
208
+ .gradient-text {
209
+ font-size: 1.5em;
210
+ }
211
+ }
212
+ </style>
213
+ </head>
214
+
215
+ <body>
216
+ <div class="players-container">
217
+ <div class="player-wrapper main-player">
218
+ <h2 class="player-label gradient-text">Ravnur Media Player</h2>
219
+ <div class="ravnur-player-inner-wrapper">
220
+ <div id="player"></div>
221
+ <span class="crown">👑</span>
222
+ </div>
223
+ </div>
224
+ <div class="secondary-players">
225
+ <div class="player-wrapper">
226
+ <h2 class="player-label">Shaka Player</h2>
227
+ <div id="shakaWrapper">
228
+ <video id="shakaVideo"></video>
229
+ </div>
230
+ </div>
231
+ <div class="player-wrapper">
232
+ <h2 class="player-label">HLS.js Player</h2>
233
+ <div id="hlsWrapper">
234
+ <video id="hlsVideo"></video>
235
+ </div>
236
+ </div>
237
+ </div>
238
+ </div>
239
+
240
+ <!-- Add player library scripts -->
241
+ <script src="https://cdn.jsdelivr.net/npm/shaka-player@4.13.2/dist/shaka-player.compiled.min.js"></script>
242
+ <script src="https://cdn.jsdelivr.net/npm/hls.js@1.5.17"></script>
243
+ <script src="../dist/cdn/RavnurMediaPlayer.min.js"></script>
244
+ <script>
245
+ const element = document.getElementById('player');
246
+ const defaultSource = "https://stream.mux.com/9OkX4sF01DLBTCmtoJXx01AeWLI4xSxn9b02FEEMbsywiU.m3u8";
247
+ const defaultType = "application/x-mpegURL";
248
+
249
+
250
+ // Keep all the options as variables that can be modified programmatically
251
+ const playerOptions = {
252
+ // All true values
253
+ showPlay: true,
254
+ showProgress: true,
255
+ showVolume: true,
256
+ showFullScreen: true,
257
+ showQuality: true,
258
+ showPlaybackRate: true,
259
+ showSettings: true,
260
+ autoStart: true,
261
+
262
+ // All false values
263
+ showTheaterMode: false,
264
+ showClosedCaptions: true,
265
+ showTOC: false,
266
+ showAnnotations: false,
267
+ showAudioTracks: false,
268
+ showPoster: false,
269
+ showPlaceholder: false,
270
+ showForward: false,
271
+ showBackward: false,
272
+ showDownload: false,
273
+ showHelp: false,
274
+ showTitle: false,
275
+ showNext: false,
276
+ showNextFrame: false,
277
+ showPrevFrame: false,
278
+ showCCLayout: false,
279
+ showPrev: false,
280
+ accessibility: false,
281
+ preview: false,
282
+ showBottomNext: false,
283
+ showBottomPrev: false,
284
+ savePlayTime: false,
285
+ isLive: true,
286
+ showSubtitles: true,
287
+ showCrawl: false,
288
+ showDownloadCC: false,
289
+ showCaptionSearch: false,
290
+ // maxQualityLevel: 360,
291
+
292
+ // Other configuration options
293
+ playlistmode: "right",
294
+ qualityLevel: "Auto",
295
+ startLevel: '-1',
296
+ loggerLevel: 0,
297
+ crawl: {
298
+ text: "Lorem ipsum <b>my bold text</b> sit amet",
299
+ speed: 10,
300
+ backgroundColor: '#000000',
301
+ textColor: '#FFFFFF'
302
+ },
303
+ };
304
+
305
+ // Keep the source configurations
306
+ const ccSources = [
307
+ {
308
+ src: "/cc_en.vtt",
309
+ label: "English",
310
+ kind: "captions",
311
+ srclang: "en-us",
312
+ default: true,
313
+ },
314
+ {
315
+ src: "/cc_ge.vtt",
316
+ label: "German",
317
+ kind: "captions",
318
+ srclang: "ge",
319
+ },
320
+ {
321
+ src: "/cc_2125en.vtt",
322
+ label: "from hires",
323
+ kind: "captions",
324
+ srclang: "hires",
325
+ },
326
+ {
327
+ src: "/cc_ge.vtt",
328
+ label: "German1",
329
+ kind: "captions",
330
+ srclang: "ge1",
331
+ state: 0,
332
+ },
333
+ {
334
+ src: "/cc_ge.vtt",
335
+ label: "German2",
336
+ kind: "captions",
337
+ srclang: "ge2",
338
+ state: 1,
339
+ },
340
+ ];
341
+
342
+ const chaptersURL = [
343
+ {
344
+ src: "/chapters_en.vtt",
345
+ label: "English",
346
+ srclang: "en-us",
347
+ default: true,
348
+ },
349
+ { src: "/chapters_ge.vtt", label: "German", srclang: "ge" },
350
+ {
351
+ src: "/chapters_ge1.json",
352
+ label: "German1",
353
+ srclang: "ge1",
354
+ state: 0,
355
+ type: "json",
356
+ },
357
+ {
358
+ src: "/chapters_ge.vtt",
359
+ label: "German2",
360
+ srclang: "ge2",
361
+ state: 1,
362
+ },
363
+ ];
364
+
365
+ const annotationsURL = [
366
+ {
367
+ src: "/annotations.json",
368
+ label: "English",
369
+ srclang: "en-us",
370
+ // default: true,
371
+ },
372
+ // ,
373
+ {
374
+ src: '/annotations_ge.json',
375
+ label: 'German',
376
+ srclang: 'ge'
377
+ }
378
+ ];
379
+
380
+ const thumbnailsURL = "https://ravmultitenant.blob.core.windows.net/video/hls/preview/thumbnails.vtt";
381
+
382
+ // Initialize Shaka Player
383
+ const initShakaPlayer = () => {
384
+ if (shaka.Player.isBrowserSupported()) {
385
+ // Configure Shaka Player
386
+ const shakaConfig = {};
387
+
388
+ // Get video element for Shaka
389
+ const shakaVideo = document.getElementById('shakaVideo');
390
+ shakaVideo.controls = true;
391
+
392
+ const shakaPlayer = new shaka.Player(shakaVideo);
393
+ shakaPlayer.configure(shakaConfig);
394
+
395
+ shakaPlayer.setTextTrackVisibility(true);
396
+
397
+ // Add error handling
398
+ shakaPlayer.addEventListener('error', (error) => {
399
+ console.error('Shaka Player Error:', error);
400
+ });
401
+
402
+ // Load the same source
403
+ shakaPlayer.load(defaultSource).catch(error => {
404
+ console.error('Error loading video in Shaka:', error);
405
+ });
406
+ }
407
+ }
408
+
409
+ // Initialize HLS.js
410
+ const initHlsPlayer = () => {
411
+ if (Hls.isSupported()) {
412
+ // Configure HLS.js
413
+ // add autostart
414
+ const hlsConfig = {};
415
+
416
+ // Get video element for HLS
417
+ const hlsVideo = document.getElementById('hlsVideo');
418
+ hlsVideo.controls = true;
419
+
420
+ const hlsPlayer = new Hls(hlsConfig);
421
+
422
+ // Add HLS.js error handling
423
+ hlsPlayer.on(Hls.Events.ERROR, function (event, data) {
424
+ console.error('HLS.js Error:', data);
425
+ });
426
+
427
+ hlsPlayer.loadSource(defaultSource);
428
+ hlsPlayer.attachMedia(hlsVideo);
429
+ }
430
+ }
431
+
432
+ const initRavnurPlayer = () => {
433
+ // Initialize player with default source and options
434
+ var player = new RavnurMediaPlayer(element, {});
435
+
436
+ const video = {
437
+ id: '1',
438
+ title: "Ravnur Media Player Demo",
439
+ src: defaultSource,
440
+ type: defaultType,
441
+ thumbnails: thumbnailsURL,
442
+ // cc: ccSources,
443
+ annotations: annotationsURL,
444
+ chapters: chaptersURL,
445
+ preview: "",
446
+ poster: "https://placehold.co/600x400?text=RMP"
447
+ };
448
+
449
+ player.setup(video, playerOptions);
450
+ }
451
+
452
+ initRavnurPlayer();
453
+ initShakaPlayer();
454
+ initHlsPlayer();
455
+ </script>
456
+ </body>
457
+
458
+ </html>