index.html 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>DPlayer Demo</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  7. <link rel="stylesheet" href="https://unpkg.com/github-markdown-css">
  8. <link rel="stylesheet" href="demo.css">
  9. <script src="https://unpkg.com/flv.js/dist/flv.min.js"></script>
  10. <script src="https://unpkg.com/hls.js/dist/hls.min.js"></script>
  11. <script src="https://cdn.jsdelivr.net/npm/dashjs/dist/dash.all.min.js"></script>
  12. <script src="DPlayer.js"></script>
  13. </head>
  14. <body class="markdown-body">
  15. <h2 id="quick-start">Quick Start</h2>
  16. <div class="example">
  17. <div id="dplayer1"></div>
  18. <script>
  19. var dp1 = new DPlayer({
  20. container: document.getElementById('dplayer1'),
  21. video: {
  22. url: 'http://devtest.qiniudn.com/若能绽放光芒.mp4',
  23. pic: 'http://devtest.qiniudn.com/若能绽放光芒.png',
  24. thumbnails: 'http://devtest.qiniudn.com/thumbnails.jpg',
  25. },
  26. subtitle: {
  27. url: 'http://devtest.qiniudn.com/若能绽放光芒2.vtt'
  28. },
  29. danmaku: {
  30. id: '9E2E3368B56CDBB4',
  31. api: 'https://api.prprpr.me/dplayer/'
  32. }
  33. });
  34. </script>
  35. </div>
  36. <h2 id="options">Options</h2>
  37. <div class="example">
  38. <button class="btn" onclick="switchDPlayer()">Switch Video</button>
  39. <button class="btn" onclick="dp2.notice('Notice演示')">notice</button>
  40. <button class="btn" onclick="dp2.seek(120)">seek</button>
  41. <button class="btn" onclick="dp2.volume(0.2)">volume</button>
  42. <button class="btn" onclick="dp2.toggle()">toggle</button>
  43. <button class="btn" onclick="dp2.destroy()">destroy</button>
  44. <button class="btn" onclick="dp2.danmaku.hide()">danmaku.hide</button>
  45. <button class="btn" onclick="dp2.danmaku.show()">danmaku.show</button>
  46. <div id="dplayer2"></div>
  47. <div id="events"></div>
  48. <script>
  49. var dp2 = new DPlayer({
  50. container: document.getElementById('dplayer2'),
  51. autoplay: false,
  52. theme: '#FADFA3',
  53. loop: true,
  54. screenshot: true,
  55. hotkey: true,
  56. logo: 'http://devtest.qiniudn.com/DPlayer.png',
  57. volume: 0.2,
  58. mutex: false,
  59. video: {
  60. url: 'http://devtest.qiniudn.com/若能绽放光芒.mp4',
  61. pic: 'http://devtest.qiniudn.com/若能绽放光芒.png',
  62. type: 'auto',
  63. thumbnails: 'http://devtest.qiniudn.com/thumbnails.jpg'
  64. },
  65. subtitle: {
  66. url: 'http://devtest.qiniudn.com/若能绽放光芒2.vtt',
  67. type: 'webvtt',
  68. fontSize: '25px',
  69. bottom: '10%',
  70. color: '#b7daff'
  71. },
  72. danmaku: {
  73. id: '9E2E3368B56CDBB4',
  74. api: 'https://api.prprpr.me/dplayer/',
  75. token: 'tokendemo',
  76. maximum: 3000,
  77. user: 'DIYgod',
  78. margin: {
  79. bottom: '15%'
  80. },
  81. unlimited: true
  82. },
  83. contextmenu: [
  84. {
  85. text: 'custom contextmenu',
  86. link: 'https://github.com/DIYgod/DPlayer'
  87. }
  88. ]
  89. });
  90. function switchDPlayer() {
  91. if (dp2.danmaku.options.api.id !== '5rGf5Y2X55qu6Z2p') {
  92. dp2.switchVideo({
  93. url: 'http://devtest.qiniudn.com/若能绽放光芒5.m3u8',
  94. type: 'hls'
  95. },
  96. {
  97. id: '5rGf5Y2X55qu6Z2p',
  98. api: 'https://api.prprpr.me/dplayer/',
  99. maximum: 3000,
  100. user: 'DIYgod'
  101. });
  102. }
  103. else {
  104. dp2.switchVideo({
  105. url: 'http://devtest.qiniudn.com/若能绽放光芒.mp4',
  106. pic: 'http://devtest.qiniudn.com/若能绽放光芒.png',
  107. type: 'auto',
  108. },
  109. {
  110. id: '9E2E3368B56CDBB4',
  111. api: 'https://api.prprpr.me/dplayer/',
  112. maximum: 3000,
  113. user: 'DIYgod'
  114. });
  115. }
  116. }
  117. var events = [
  118. 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error',
  119. 'loadeddata', 'loadedmetadata', 'loadstart', 'mozaudioavailable', 'pause', 'play',
  120. 'playing', 'ratechange', 'seeked', 'seeking', 'stalled',
  121. 'volumechange', 'waiting',
  122. 'screenshot',
  123. 'thumbnails_show', 'thumbnails_hide',
  124. 'danmaku_show', 'danmaku_hide', 'danmaku_clear',
  125. 'danmaku_loaded', 'danmaku_send', 'danmaku_opacity',
  126. 'contextmenu_show', 'contextmenu_hide',
  127. 'notice_show', 'notice_hide',
  128. 'quality_start', 'quality_end',
  129. 'destroy',
  130. 'resize',
  131. 'fullscreen', 'fullscreen_cancel', 'webfullscreen', 'webfullscreen_cancel',
  132. 'subtitle_show', 'subtitle_hide', 'subtitle_change'
  133. ];
  134. var eventsEle = document.getElementById('events');
  135. for (let i = 0; i < events.length; i++) {
  136. dp2.on(events[i], (info) => {
  137. eventsEle.innerHTML += '<p>Event: ' + events[i] + '</p>';
  138. eventsEle.scrollTop = eventsEle.scrollHeight;
  139. })
  140. }
  141. </script>
  142. </div>
  143. <h2 id="quality-switching">Quality switching</h2>
  144. <div class="example">
  145. <button class="btn" onclick="dp3.switchQuality(1)">Switch quality</button>
  146. <div id="dplayer3"></div>
  147. <script>
  148. var dp3 = new DPlayer({
  149. container: document.getElementById('dplayer3'),
  150. video: {
  151. quality: [{
  152. name: 'HD',
  153. url: 'http://devtest.qiniudn.com/若能绽放光芒5.m3u8',
  154. type: 'hls'
  155. }, {
  156. name: 'SD',
  157. url: 'http://devtest.qiniudn.com/若能绽放光芒.mp4',
  158. type: 'normal'
  159. }],
  160. defaultQuality: 0,
  161. pic: 'http://devtest.qiniudn.com/若能绽放光芒.png'
  162. }
  163. });
  164. </script>
  165. </div>
  166. <h2 id="hls-support">HLS support</h2>
  167. <div class="example">
  168. <div id="dplayer4"></div>
  169. <script>
  170. var dp4 = new DPlayer({
  171. container: document.getElementById('dplayer4'),
  172. video: {
  173. url: 'http://devtest.qiniudn.com/若能绽放光芒5.m3u8',
  174. type: 'hls'
  175. }
  176. });
  177. </script>
  178. </div>
  179. <h2 id="flv-support">FLV support</h2>
  180. <div class="example">
  181. <div id="dplayer5"></div>
  182. <script>
  183. var dp5 = new DPlayer({
  184. container: document.getElementById('dplayer5'),
  185. video: {
  186. url: 'http://devtest.qiniudn.com/【微小微】玖月奇迹-踩踩踩.flv',
  187. type: 'flv'
  188. }
  189. });
  190. </script>
  191. </div>
  192. <h2 id="dash-support">MPEG DASH support</h2>
  193. <div class="example">
  194. <div id="dplayer10"></div>
  195. <script>
  196. var dp10 = new DPlayer({
  197. container: document.getElementById('dplayer10'),
  198. video: {
  199. url: 'http://devtest.qiniudn.com/若能绽放光芒.mpd',
  200. type: 'dash'
  201. }
  202. });
  203. </script>
  204. </div>
  205. <h2 id="live">Live</h2>
  206. <div class="example">
  207. <button class="btn" onclick="drawDanmaku()">假装收到 WebSocket 弹幕</button>
  208. <div id="dplayer11"></div>
  209. <script>
  210. var dp10 = new DPlayer({
  211. container: document.getElementById('dplayer11'),
  212. live: true,
  213. danmaku: true,
  214. apiBackend: {
  215. read: function (endpoint, callback) {
  216. setTimeout(function () {}, 1000);
  217. console.log('假装 WebSocket 连接成功');
  218. callback();
  219. },
  220. send: function (endpoint, danmakuData, callback) {
  221. console.log('假装通过 WebSocket 发送数据', danmakuData);
  222. setTimeout(function () {}, 1000);
  223. callback();
  224. }
  225. },
  226. video: {
  227. url: 'http://devtest.qiniudn.com/若能绽放光芒5.m3u8',
  228. type: 'hls'
  229. }
  230. });
  231. function drawDanmaku() {
  232. dp10.danmaku.draw({
  233. text: '假装收到 WebSocket 弹幕',
  234. color: '#fff',
  235. type: 'right'
  236. })
  237. }
  238. </script>
  239. </div>
  240. <script src="https://unpkg.com/stats.js"></script>
  241. <script src="demo.js"></script>
  242. </body>
  243. </html>