demo.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. // stats.js: JavaScript Performance Monitor
  2. const stats = new Stats();
  3. stats.showPanel(0); // 0: fps, 1: ms, 2: mb, 3+: custom
  4. document.body.appendChild(stats.dom);
  5. function animate () {
  6. stats.begin();
  7. // monitored code goes here
  8. stats.end();
  9. requestAnimationFrame(animate);
  10. }
  11. requestAnimationFrame(animate);
  12. initPlayers();
  13. function initPlayers () {
  14. // dp1
  15. window.dp1 = new DPlayer({
  16. container: document.getElementById('dplayer1'),
  17. preload: 'none',
  18. screenshot: true,
  19. video: {
  20. url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.mp4',
  21. pic: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.png',
  22. thumbnails: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara_thumbnails.jpg'
  23. },
  24. subtitle: {
  25. url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.vtt'
  26. },
  27. danmaku: {
  28. id: '9E2E3368B56CDBB4',
  29. api: 'https://dan.prprpr.me/'
  30. }
  31. });
  32. // dp2
  33. window.dp2 = new DPlayer({
  34. container: document.getElementById('dplayer2'),
  35. preload: 'none',
  36. autoplay: false,
  37. theme: '#FADFA3',
  38. loop: true,
  39. screenshot: true,
  40. hotkey: true,
  41. logo: 'https://moeplayer.b0.upaiyun.com/dplayer/DPlayer.png',
  42. volume: 0.2,
  43. mutex: true,
  44. video: {
  45. url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.mp4',
  46. pic: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.png',
  47. thumbnails: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara_thumbnails.jpg',
  48. type: 'auto'
  49. },
  50. subtitle: {
  51. url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.vtt',
  52. type: 'webvtt',
  53. fontSize: '25px',
  54. bottom: '10%',
  55. color: '#b7daff'
  56. },
  57. danmaku: {
  58. id: '9E2E3368B56CDBB4',
  59. api: 'https://dan.prprpr.me/',
  60. token: 'tokendemo',
  61. maximum: 3000,
  62. user: 'DIYgod',
  63. bottom: '15%',
  64. unlimited: true
  65. },
  66. contextmenu: [
  67. {
  68. text: 'custom contextmenu',
  69. link: 'https://github.com/MoePlayer/DPlayer'
  70. }
  71. ]
  72. });
  73. const events = [
  74. 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error',
  75. 'loadeddata', 'loadedmetadata', 'loadstart', 'mozaudioavailable', 'pause', 'play',
  76. 'playing', 'ratechange', 'seeked', 'seeking', 'stalled',
  77. 'volumechange', 'waiting',
  78. 'screenshot',
  79. 'thumbnails_show', 'thumbnails_hide',
  80. 'danmaku_show', 'danmaku_hide', 'danmaku_clear',
  81. 'danmaku_loaded', 'danmaku_send', 'danmaku_opacity',
  82. 'contextmenu_show', 'contextmenu_hide',
  83. 'notice_show', 'notice_hide',
  84. 'quality_start', 'quality_end',
  85. 'destroy',
  86. 'resize',
  87. 'fullscreen', 'fullscreen_cancel', 'webfullscreen', 'webfullscreen_cancel',
  88. 'subtitle_show', 'subtitle_hide', 'subtitle_change'
  89. ];
  90. const eventsEle = document.getElementById('events');
  91. for (let i = 0; i < events.length; i++) {
  92. dp2.on(events[i], (info) => {
  93. eventsEle.innerHTML += '<p>Event: ' + events[i] + '</p>';
  94. eventsEle.scrollTop = eventsEle.scrollHeight;
  95. });
  96. }
  97. // dp3
  98. // window.dp3 = new DPlayer({
  99. // container: document.getElementById('dplayer3'),
  100. // preload: 'none',
  101. // video: {
  102. // quality: [{
  103. // name: 'HD',
  104. // url: 'https://moeplayer.b0.upaiyun.com/dplayer/hls/hikarunara.m3u8',
  105. // type: 'hls'
  106. // }, {
  107. // name: 'SD',
  108. // url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.mp4',
  109. // type: 'normal'
  110. // }],
  111. // defaultQuality: 0,
  112. // pic: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.png'
  113. // }
  114. // });
  115. // // dp4
  116. // window.dp4 = new DPlayer({
  117. // container: document.getElementById('dplayer4'),
  118. // preload: 'none',
  119. // video: {
  120. // url: 'https://moeplayer.b0.upaiyun.com/dplayer/hls/hikarunara.m3u8',
  121. // type: 'hls'
  122. // }
  123. // });
  124. // // dp5
  125. // window.dp5 = new DPlayer({
  126. // container: document.getElementById('dplayer5'),
  127. // preload: 'none',
  128. // video: {
  129. // url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.flv',
  130. // type: 'flv'
  131. // }
  132. // });
  133. // window.dp8 = new DPlayer({
  134. // container: document.getElementById('dplayer8'),
  135. // preload: 'none',
  136. // video: {
  137. // url: 'https://moeplayer.b0.upaiyun.com/dplayer/dash/hikarunara.mpd',
  138. // type: 'dash'
  139. // }
  140. // });
  141. // window.dp9 = new DPlayer({
  142. // container: document.getElementById('dplayer9'),
  143. // video: {
  144. // url: 'magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10&dn=Sintel&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fsintel.torrent',
  145. // type: 'webtorrent'
  146. // }
  147. // });
  148. // window.dp6 = new DPlayer({
  149. // container: document.getElementById('dplayer6'),
  150. // preload: 'none',
  151. // live: true,
  152. // danmaku: true,
  153. // apiBackend: {
  154. // read: function (endpoint, callback) {
  155. // console.log('假装 WebSocket 连接成功');
  156. // callback();
  157. // },
  158. // send: function (endpoint, danmakuData, callback) {
  159. // console.log('假装通过 WebSocket 发送数据', danmakuData);
  160. // callback();
  161. // }
  162. // },
  163. // video: {
  164. // url: 'https://moeplayer.b0.upaiyun.com/dplayer/hls/hikarunara.m3u8',
  165. // type: 'hls'
  166. // }
  167. // });
  168. // window.dp10 = new DPlayer({
  169. // container: document.getElementById('dplayer10'),
  170. // video: {
  171. // url: 'https://qq.webrtc.win/tv/Pear-Demo-Yosemite_National_Park.mp4',
  172. // type: 'pearplayer',
  173. // customType: {
  174. // 'pearplayer': function (video, player) {
  175. // new PearPlayer(video, {
  176. // src: video.src,
  177. // autoplay: player.options.autoplay
  178. // });
  179. // }
  180. // }
  181. // }
  182. // });
  183. }
  184. function clearPlayers () {
  185. for (let i = 0; i < 6; i++) {
  186. window['dp' + (i + 1)].pause();
  187. document.getElementById('dplayer' + (i + 1)).innerHTML = '';
  188. }
  189. }
  190. function switchDPlayer () {
  191. if (dp2.option.danmaku.id !== '5rGf5Y2X55qu6Z2p') {
  192. dp2.switchVideo({
  193. url: 'https://moeplayer.b0.upaiyun.com/dplayer/flowerdance.mp4',
  194. pic: 'https://moeplayer.b0.upaiyun.com/dplayer/flowerdance.jpg',
  195. type: 'auto',
  196. }, {
  197. id: '5rGf5Y2X55qu6Z2p',
  198. api: 'https://dan.prprpr.me/',
  199. maximum: 3000,
  200. user: 'DIYgod'
  201. });
  202. } else {
  203. dp2.switchVideo({
  204. url: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.mp4',
  205. pic: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara.png',
  206. thumbnails: 'https://moeplayer.b0.upaiyun.com/dplayer/hikarunara_thumbnails.jpg',
  207. type: 'auto'
  208. }, {
  209. id: '9E2E3368B56CDBB42',
  210. api: 'https://dan.prprpr.me/',
  211. maximum: 3000,
  212. user: 'DIYgod'
  213. });
  214. }
  215. }