xgplayer 2.32.2 → 2.32.5

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 (267) hide show
  1. package/browser/controls/airplay.js +1 -1
  2. package/browser/controls/cssFullscreen.js +1 -1
  3. package/browser/controls/danmu.js +1 -1
  4. package/browser/controls/definition.js +1 -1
  5. package/browser/controls/download.js +1 -1
  6. package/browser/controls/enter.js +1 -1
  7. package/browser/controls/error.js +1 -1
  8. package/browser/controls/errorRetry.js +1 -1
  9. package/browser/controls/flex.js +1 -1
  10. package/browser/controls/fullscreen.js +1 -1
  11. package/browser/controls/loading.js +1 -1
  12. package/browser/controls/memoryPlay.js +1 -1
  13. package/browser/controls/miniplayer.js +7 -9
  14. package/browser/controls/mobile.js +1 -1
  15. package/browser/controls/nativeTextTrack.js +1 -1
  16. package/browser/controls/pip.js +1 -1
  17. package/browser/controls/play.js +1 -1
  18. package/browser/controls/playNext.js +1 -1
  19. package/browser/controls/playbackRate.js +1 -1
  20. package/browser/controls/poster.js +1 -1
  21. package/browser/controls/progress.js +1 -1
  22. package/browser/controls/reload.js +1 -1
  23. package/browser/controls/replay.js +1 -1
  24. package/browser/controls/rotate.js +1 -1
  25. package/browser/controls/screenShot.js +1 -1
  26. package/browser/controls/start.js +1 -1
  27. package/browser/controls/textTrack.js +1 -1
  28. package/browser/controls/time.js +1 -1
  29. package/browser/controls/volume.js +1 -1
  30. package/browser/core_player.js +1 -1
  31. package/browser/core_player.js.map +1 -1
  32. package/browser/index.js +7 -9
  33. package/browser/index.js.map +1 -1
  34. package/browser/simple_player.js +1 -1
  35. package/browser/simple_player.js.map +1 -1
  36. package/dist/controls/airplay.js +1 -1
  37. package/dist/controls/cssFullscreen.js +1 -1
  38. package/dist/controls/danmu.js +1 -1
  39. package/dist/controls/definition.js +1 -1
  40. package/dist/controls/download.js +1 -1
  41. package/dist/controls/enter.js +1 -1
  42. package/dist/controls/error.js +1 -1
  43. package/dist/controls/errorRetry.js +1 -1
  44. package/dist/controls/flex.js +1 -1
  45. package/dist/controls/fullscreen.js +1 -1
  46. package/dist/controls/loading.js +1 -1
  47. package/dist/controls/memoryPlay.js +1 -1
  48. package/dist/controls/miniplayer.js +7 -9
  49. package/dist/controls/mobile.js +1 -1
  50. package/dist/controls/nativeTextTrack.js +1 -1
  51. package/dist/controls/pip.js +1 -1
  52. package/dist/controls/play.js +1 -1
  53. package/dist/controls/playNext.js +1 -1
  54. package/dist/controls/playbackRate.js +1 -1
  55. package/dist/controls/poster.js +1 -1
  56. package/dist/controls/progress.js +1 -1
  57. package/dist/controls/reload.js +1 -1
  58. package/dist/controls/replay.js +1 -1
  59. package/dist/controls/rotate.js +1 -1
  60. package/dist/controls/screenShot.js +1 -1
  61. package/dist/controls/start.js +1 -1
  62. package/dist/controls/textTrack.js +1 -1
  63. package/dist/controls/time.js +1 -1
  64. package/dist/controls/volume.js +1 -1
  65. package/dist/core_player.js +2904 -2970
  66. package/dist/core_player.js.map +1 -1
  67. package/dist/index.js +3161 -1856
  68. package/dist/index.js.map +1 -1
  69. package/dist/simple_player.js +190 -165
  70. package/dist/simple_player.js.map +1 -1
  71. package/es/controls/airplay.js +1 -1
  72. package/es/controls/cssFullscreen.js +1 -1
  73. package/es/controls/danmu.js +1 -1
  74. package/es/controls/definition.js +1 -1
  75. package/es/controls/download.js +1 -1
  76. package/es/controls/enter.js +1 -1
  77. package/es/controls/error.js +1 -1
  78. package/es/controls/errorRetry.js +1 -1
  79. package/es/controls/flex.js +1 -1
  80. package/es/controls/fullscreen.js +1 -1
  81. package/es/controls/i18n.js +1 -1
  82. package/es/controls/keyboard.js +1 -1
  83. package/es/controls/loading.js +1 -1
  84. package/es/controls/localPreview.js +1 -1
  85. package/es/controls/memoryPlay.js +1 -1
  86. package/es/controls/miniplayer.js +7 -9
  87. package/es/controls/mobile.js +1 -1
  88. package/es/controls/nativeTextTrack.js +1 -1
  89. package/es/controls/pc.js +1 -1
  90. package/es/controls/pip.js +1 -1
  91. package/es/controls/play.js +1 -1
  92. package/es/controls/playNext.js +1 -1
  93. package/es/controls/playbackRate.js +1 -1
  94. package/es/controls/poster.js +1 -1
  95. package/es/controls/progress.js +1 -1
  96. package/es/controls/reload.js +1 -1
  97. package/es/controls/replay.js +1 -1
  98. package/es/controls/rotate.js +1 -1
  99. package/es/controls/screenShot.js +1 -1
  100. package/es/controls/start.js +1 -1
  101. package/es/controls/textTrack.js +1 -1
  102. package/es/controls/time.js +1 -1
  103. package/es/controls/volume.js +1 -1
  104. package/es/core_player.js +1 -1
  105. package/es/core_player.js.map +1 -1
  106. package/es/index.js +7 -9
  107. package/es/index.js.map +1 -1
  108. package/es/simple_player.js +1 -1
  109. package/es/simple_player.js.map +1 -1
  110. package/package.json +12 -2
  111. package/types/index.d.ts +0 -11
  112. package/postcss.config.js +0 -7
  113. package/src/bind/airplay.js +0 -10
  114. package/src/bind/cssFullscreen.js +0 -10
  115. package/src/bind/danmu.js +0 -10
  116. package/src/bind/definition.js +0 -10
  117. package/src/bind/download.js +0 -10
  118. package/src/bind/enter.js +0 -8
  119. package/src/bind/error.js +0 -8
  120. package/src/bind/errorRetry.js +0 -8
  121. package/src/bind/flex.js +0 -8
  122. package/src/bind/fullscreen.js +0 -10
  123. package/src/bind/i18n.js +0 -8
  124. package/src/bind/keyboard.js +0 -8
  125. package/src/bind/loading.js +0 -8
  126. package/src/bind/localPreview.js +0 -10
  127. package/src/bind/memoryPlay.js +0 -10
  128. package/src/bind/miniplayer.js +0 -10
  129. package/src/bind/mobile.js +0 -8
  130. package/src/bind/nativeTextTrack.js +0 -8
  131. package/src/bind/pc.js +0 -8
  132. package/src/bind/pip.js +0 -10
  133. package/src/bind/play.js +0 -10
  134. package/src/bind/playNext.js +0 -10
  135. package/src/bind/playbackRate.js +0 -8
  136. package/src/bind/poster.js +0 -8
  137. package/src/bind/progress.js +0 -8
  138. package/src/bind/reload.js +0 -10
  139. package/src/bind/replay.js +0 -10
  140. package/src/bind/rotate.js +0 -10
  141. package/src/bind/screenShot.js +0 -10
  142. package/src/bind/stallCheck.js +0 -8
  143. package/src/bind/start.js +0 -10
  144. package/src/bind/textTrack.js +0 -8
  145. package/src/bind/time.js +0 -8
  146. package/src/bind/volume.js +0 -10
  147. package/src/controls/airplay.js +0 -20
  148. package/src/controls/cssFullscreen.js +0 -49
  149. package/src/controls/danmu.js +0 -75
  150. package/src/controls/definition.js +0 -13
  151. package/src/controls/download.js +0 -28
  152. package/src/controls/errorRetry.js +0 -132
  153. package/src/controls/fullscreen.js +0 -145
  154. package/src/controls/keyboard.js +0 -214
  155. package/src/controls/localPreview.js +0 -32
  156. package/src/controls/memoryPlay.js +0 -14
  157. package/src/controls/miniplayer.js +0 -128
  158. package/src/controls/mobile.js +0 -100
  159. package/src/controls/pc.js +0 -123
  160. package/src/controls/pip.js +0 -52
  161. package/src/controls/play.js +0 -34
  162. package/src/controls/playNext.js +0 -29
  163. package/src/controls/reload.js +0 -24
  164. package/src/controls/replay.js +0 -30
  165. package/src/controls/rotate.js +0 -99
  166. package/src/controls/screenShot.js +0 -65
  167. package/src/controls/stallCheck.js +0 -38
  168. package/src/controls/start.js +0 -60
  169. package/src/controls/textTrack.js +0 -182
  170. package/src/controls/volume.js +0 -178
  171. package/src/controls.js +0 -36
  172. package/src/core_player.js +0 -13
  173. package/src/error.js +0 -74
  174. package/src/index.js +0 -57
  175. package/src/player.js +0 -553
  176. package/src/proxy.js +0 -495
  177. package/src/simple_player.js +0 -42
  178. package/src/skin/assets/airplay.svg +0 -1
  179. package/src/skin/assets/download.svg +0 -14
  180. package/src/skin/assets/exitCssFull.svg +0 -3
  181. package/src/skin/assets/exitFull.svg +0 -3
  182. package/src/skin/assets/loading.svg +0 -3
  183. package/src/skin/assets/panel.svg +0 -4
  184. package/src/skin/assets/pause.svg +0 -3
  185. package/src/skin/assets/play.svg +0 -3
  186. package/src/skin/assets/playNext.svg +0 -3
  187. package/src/skin/assets/reload.svg +0 -3
  188. package/src/skin/assets/replay.svg +0 -3
  189. package/src/skin/assets/requestCssFull.svg +0 -3
  190. package/src/skin/assets/requestFull.svg +0 -3
  191. package/src/skin/assets/rotate.svg +0 -11
  192. package/src/skin/assets/startPause.svg +0 -3
  193. package/src/skin/assets/startPlay.svg +0 -3
  194. package/src/skin/assets/volumeLarge.svg +0 -4
  195. package/src/skin/assets/volumeMuted.svg +0 -4
  196. package/src/skin/assets/volumeSmall.svg +0 -4
  197. package/src/skin/controls/airplay.js +0 -44
  198. package/src/skin/controls/cssFullscreen.js +0 -36
  199. package/src/skin/controls/danmu.js +0 -214
  200. package/src/skin/controls/definition.js +0 -251
  201. package/src/skin/controls/download.js +0 -29
  202. package/src/skin/controls/enter.js +0 -21
  203. package/src/skin/controls/error.js +0 -57
  204. package/src/skin/controls/flex.js +0 -13
  205. package/src/skin/controls/fullscreen.js +0 -43
  206. package/src/skin/controls/i18n.js +0 -168
  207. package/src/skin/controls/loading.js +0 -17
  208. package/src/skin/controls/localPreview.js +0 -18
  209. package/src/skin/controls/memoryPlay.js +0 -39
  210. package/src/skin/controls/miniplayer.js +0 -26
  211. package/src/skin/controls/nativeTextTrack.js +0 -153
  212. package/src/skin/controls/pip.js +0 -26
  213. package/src/skin/controls/play.js +0 -43
  214. package/src/skin/controls/playNext.js +0 -41
  215. package/src/skin/controls/playbackRate.js +0 -141
  216. package/src/skin/controls/poster.js +0 -18
  217. package/src/skin/controls/progress.js +0 -407
  218. package/src/skin/controls/reload.js +0 -29
  219. package/src/skin/controls/replay.js +0 -56
  220. package/src/skin/controls/rotate.js +0 -29
  221. package/src/skin/controls/screenShot.js +0 -27
  222. package/src/skin/controls/start.js +0 -62
  223. package/src/skin/controls/textTrack.js +0 -113
  224. package/src/skin/controls/time.js +0 -40
  225. package/src/skin/controls/volume.js +0 -63
  226. package/src/skin/index.js +0 -63
  227. package/src/skin/style/common/animation.scss +0 -16
  228. package/src/skin/style/common/svg-url.scss +0 -70
  229. package/src/skin/style/controls/airplay.scss +0 -35
  230. package/src/skin/style/controls/controls.scss +0 -40
  231. package/src/skin/style/controls/cssfullscreen.scss +0 -103
  232. package/src/skin/style/controls/danmu.scss +0 -333
  233. package/src/skin/style/controls/definition.scss +0 -76
  234. package/src/skin/style/controls/download.scss +0 -45
  235. package/src/skin/style/controls/enter.scss +0 -55
  236. package/src/skin/style/controls/error.scss +0 -34
  237. package/src/skin/style/controls/fullscreen.scss +0 -60
  238. package/src/skin/style/controls/icon.scss +0 -12
  239. package/src/skin/style/controls/live.scss +0 -9
  240. package/src/skin/style/controls/loading.scss +0 -44
  241. package/src/skin/style/controls/memoryPlay.scss +0 -28
  242. package/src/skin/style/controls/miniplayer.scss +0 -104
  243. package/src/skin/style/controls/pip.scss +0 -42
  244. package/src/skin/style/controls/placeholder.scss +0 -7
  245. package/src/skin/style/controls/play.scss +0 -79
  246. package/src/skin/style/controls/playNext.scss +0 -44
  247. package/src/skin/style/controls/playbackRate.scss +0 -82
  248. package/src/skin/style/controls/poster.scss +0 -19
  249. package/src/skin/style/controls/progress.scss +0 -182
  250. package/src/skin/style/controls/reload.scss +0 -43
  251. package/src/skin/style/controls/replay.scss +0 -46
  252. package/src/skin/style/controls/rotate.scss +0 -41
  253. package/src/skin/style/controls/screenShot.scss +0 -42
  254. package/src/skin/style/controls/start.scss +0 -78
  255. package/src/skin/style/controls/textTrack.scss +0 -87
  256. package/src/skin/style/controls/time.scss +0 -24
  257. package/src/skin/style/controls/tips.scss +0 -24
  258. package/src/skin/style/controls/videoProxy.scss +0 -6
  259. package/src/skin/style/controls/volume.scss +0 -143
  260. package/src/skin/style/index.scss +0 -88
  261. package/src/utils/sniffer.js +0 -47
  262. package/src/utils/url.js +0 -10
  263. package/src/utils/util.js +0 -358
  264. package/src/utils/xgplayerTimeRange.js +0 -17
  265. package/src/version.js +0 -7
  266. package/version.json +0 -3
  267. package/webpack.config.js +0 -168
@@ -1,182 +0,0 @@
1
- import SubTitles from 'xgplayer-subtitles'
2
- const defaultStyle = {
3
- follow: true, // 是否跟随控制栏调整位置
4
- mode: 'stroke', // 字体显示模式,默认是描边
5
- followBottom: 50, // 跟随底部控制栏的高度
6
- fitVideo: true, // 是否跟随视频自动调整字号
7
- offsetBottom: 2, // 字幕距离画面底部百分比,默认2%
8
- baseSizeX: 49, // 横屏视频适配基准字号
9
- baseSizeY: 28, // 竖屏视频适配基准字号
10
- minSize: 16, // pc端最小字号
11
- minMobileSize: 13, // 移动端最小字号
12
- line: 'double', // 最大显示行数 single/double/three
13
- fontColor: '#fff' // 字体颜色
14
- }
15
-
16
- // function createSubTitle (textTrack, style = {}, defaultOpen = true) {
17
- // const config = {
18
- // subTitles: textTrack,
19
- // defaultOpen: defaultOpen
20
- // }
21
-
22
- // Object.keys(style).map(key => {
23
- // config[key] = style[key]
24
- // })
25
- // return new SubTitles(config)
26
- // }
27
-
28
- class XgSubtitles {
29
- constructor (player, list, style) {
30
- const subtitle = this.create(list, style, player.textTrackShowDefault)
31
- subtitle.attachPlayer(player)
32
- this.subtitle = subtitle
33
- this.player = player
34
- this.positionData = {
35
- vBottom: 0,
36
- marginBottom: 0
37
- }
38
- this.isActive = false
39
- this.followBottom = style.followBottom;
40
- ['onSubtitleResize', 'onFocus', 'onBlur'].map(item => {
41
- this[item] = this[item].bind(this)
42
- })
43
-
44
- if (player.controls && style.follow) {
45
- this.subtitle.on('resize', this.onSubtitleResize)
46
- player.on('focus', this.onFocus)
47
- player.on('blur', this.onBlur)
48
- }
49
- }
50
-
51
- create (textTrack, style = {}, defaultOpen = true) {
52
- const config = {
53
- subTitles: textTrack,
54
- defaultOpen: defaultOpen
55
- }
56
- Object.keys(style).map(key => {
57
- config[key] = style[key]
58
- })
59
- return new SubTitles(config)
60
- }
61
-
62
- switch (subtitle) {
63
- return this.subtitle.switch(subtitle)
64
- }
65
-
66
- switchOff () {
67
- return this.subtitle.switchOff()
68
- }
69
-
70
- setSubTitles (subtitles, showDefault, isNeedMove) {
71
- return this.subtitle.setSubTitles(subtitles, showDefault, isNeedMove)
72
- }
73
-
74
- onFocus () {
75
- const { marginBottom, vBottom } = this.positionData
76
- if (this.isActive || !marginBottom) {
77
- return
78
- }
79
- this.isActive = true
80
- let bottom = marginBottom + vBottom
81
- if (this.followBottom > bottom) {
82
- bottom = this.followBottom
83
- }
84
- this.subtitle && (this.subtitle.root.style.bottom = `${bottom}px`)
85
- }
86
-
87
- onBlur () {
88
- this.isActive = false
89
- const bottom = this.positionData.vBottom + this.positionData.marginBottom
90
- this.subtitle && (this.subtitle.root.style.bottom = `${bottom}px`)
91
- }
92
-
93
- onSubtitleResize (data) {
94
- this.positionData.vBottom = data.vBottom
95
- this.positionData.marginBottom = data.marginBottom
96
- }
97
-
98
- destroy () {
99
- this.subtitle.off('resize', this.onSubtitleResize)
100
- this.player.off('focus', this.onFocus)
101
- this.player.off('blur', this.onBlur)
102
- this.subtitle.destroy()
103
- this.subtitle = null
104
- }
105
- }
106
-
107
- let textTrack = function () {
108
- const player = this
109
- const { textTrack } = player.config
110
- if (!textTrack) {
111
- return
112
- }
113
- let textTrackStyle = player.config.textTrackStyle || {}
114
- Object.keys(defaultStyle).map(key => {
115
- if (textTrackStyle[key] === undefined) {
116
- textTrackStyle[key] = defaultStyle[key]
117
- }
118
- })
119
- player.textTrackShowDefault = false
120
- player.config.textTrack.map((item, index) => {
121
- if (!item.id && !item.language) {
122
- item.id = index
123
- }
124
- !item.url && (item.url = item.src)
125
- !item.language && (item.language = item.srclang)
126
- item.isDefault === undefined && (item.isDefault = item.default)
127
- !player.textTrackShowDefault && (player.textTrackShowDefault = item.isDefault || item.default)
128
- })
129
-
130
- this.subTitles = new XgSubtitles(player, player.config.textTrack, textTrackStyle)
131
-
132
- player.setSubTitles = (textTrack, needRemove = true) => {
133
- let showDefault = false
134
- textTrack.map((item, index) => {
135
- if (!item.id && !item.language) {
136
- item.id = index
137
- }
138
- !item.url && (item.url = item.src)
139
- !item.language && (item.language = item.srclang)
140
- item.isDefault === undefined && (item.isDefault = item.default)
141
- item.isDefault && (showDefault = true)
142
- })
143
- player.textTrackShowDefault = showDefault
144
- this.subTitles.setSubTitles(textTrack, showDefault, needRemove)
145
- player.emit('subtitle_change', {
146
- off: false,
147
- isListUpdate: true,
148
- list: textTrack
149
- })
150
- }
151
-
152
- player.switchSubTitle = (subtitle = { id: '', language: '' }) => {
153
- this.subTitles.switch(subtitle).then(data => {
154
- if (data.code === 0) {
155
- subtitle.off = false
156
- subtitle.isListUpdate = false
157
- subtitle.list = []
158
- player.emit('subtitle_change', subtitle)
159
- }
160
- })
161
- }
162
-
163
- player.switchOffSubtile = () => {
164
- this.subTitles.switchOff()
165
- player.emit('subtitle_change', {
166
- off: true,
167
- isListUpdate: false,
168
- list: []
169
- })
170
- }
171
-
172
- function onDestroy () {
173
- this.subTitles.destroy()
174
- this.subTitles = null
175
- }
176
- player.once('destroy', onDestroy)
177
- }
178
-
179
- export default {
180
- name: 'textTrack',
181
- method: textTrack
182
- }
@@ -1,178 +0,0 @@
1
- import { addClass, removeClass, event } from '../utils/util'
2
- import sniffer from '../utils/sniffer'
3
-
4
- let volume = function () {
5
- let player = this
6
- let root = player.root
7
- let container, slider, bar, selected
8
- function onCanplay () {
9
- // player.volume = sniffer.device === 'mobile' ? 1 : player.config.volume
10
- if(!player.controls) return
11
- player.volume = player.config.volume
12
- container = player.controls.querySelector('.xgplayer-volume')
13
- if(!container) return
14
- slider = container.querySelector('.xgplayer-slider')
15
- bar = container.querySelector('.xgplayer-bar')
16
- selected = container.querySelector('.xgplayer-drag')
17
- if (sniffer.device === 'mobile') {
18
- if(player.volume === 0) {
19
- player.video.muted = true
20
- }
21
- onVolumeChange()
22
- }
23
- }
24
- player.once('canplay', onCanplay)
25
-
26
- function onVolumeBarClick (e) {
27
- if(!slider) return
28
- player.video.muted = false
29
- slider.focus()
30
- event(e)
31
-
32
- let barRect = bar.getBoundingClientRect()
33
- let pos = {x: e.clientX, y: e.clientY}
34
- let height = selected.getBoundingClientRect().height
35
- let isMove = false
36
- let onMove = function (e) {
37
- e.preventDefault()
38
- e.stopPropagation()
39
- event(e)
40
- isMove = true
41
- let w = height - e.clientY + pos.y
42
- let now = w / barRect.height
43
- selected.style.height = `${w}px`
44
- player.volume = Math.max(Math.min(now, 1), 0)
45
- }
46
- let onUp = function (e) {
47
- e.preventDefault()
48
- e.stopPropagation()
49
- event(e)
50
- window.removeEventListener('mousemove', onMove)
51
- window.removeEventListener('touchmove', onMove)
52
- window.removeEventListener('mouseup', onUp)
53
- window.removeEventListener('touchend', onUp)
54
-
55
- if (!isMove) {
56
- let w = barRect.height - (e.clientY - barRect.top)
57
- let now = w / barRect.height
58
- selected.style.height = `${w}px`
59
- if (now <= 0) {
60
- if (player.volume > 0) {
61
- selected.volume = player.video.volume
62
- } else {
63
- now = selected.volume
64
- }
65
- }
66
- player.volume = Math.max(Math.min(now, 1), 0)
67
- }
68
- slider.volume = player.volume
69
- isMove = false
70
- }
71
- window.addEventListener('mousemove', onMove)
72
- window.addEventListener('touchmove', onMove)
73
- window.addEventListener('mouseup', onUp)
74
- window.addEventListener('touchend', onUp)
75
- return false
76
- }
77
- player.on('volumeBarClick', onVolumeBarClick)
78
-
79
- function onVolumeIconClick () {
80
- if (sniffer.device === 'mobile') {
81
- if (player.video.muted) {
82
- player.video.muted = false
83
- player.emit('unmute')
84
- player.volume = 1
85
- } else {
86
- player.video.muted = true
87
- player.emit('mute')
88
- player.volume = 0
89
- }
90
- } else {
91
- if(!slider) return
92
- player.video.muted = false
93
- if (player.volume < 0.1) {
94
- if (slider.volume < 0.1) {
95
- player.volume = 0.6
96
- } else {
97
- player.volume = slider.volume
98
- }
99
- player.emit('unmute')
100
- } else {
101
- player.volume = 0
102
- player.emit('mute')
103
- }
104
- }
105
- // onVolumeChange ()
106
- }
107
- player.on('volumeIconClick', onVolumeIconClick)
108
-
109
- function onVolumeIconEnter () {
110
- addClass(root, 'xgplayer-volume-active')
111
- if (container) {
112
- container.focus()
113
- }
114
- }
115
- player.on('volumeIconEnter', onVolumeIconEnter)
116
-
117
- function onVolumeIconLeave () {
118
- removeClass(root, 'xgplayer-volume-active')
119
- }
120
- player.on('volumeIconLeave', onVolumeIconLeave)
121
-
122
- let _changeTimer = null
123
- function onVolumeChange () {
124
- if (_changeTimer) {
125
- clearTimeout(_changeTimer)
126
- }
127
- _changeTimer = setTimeout(() => {
128
- if (sniffer.device === 'mobile') {
129
- removeClass(root, 'xgplayer-volume-muted')
130
- removeClass(root, 'xgplayer-volume-large')
131
- if (player.video.muted || player.video.defaultMuted) {
132
- if (!player.video.muted) {
133
- player.video.muted = true
134
- }
135
- player.video.defaultMuted = false
136
- addClass(root, 'xgplayer-volume-muted')
137
- } else {
138
- addClass(root, 'xgplayer-volume-large')
139
- }
140
- } else {
141
- removeClass(root, 'xgplayer-volume-muted')
142
- removeClass(root, 'xgplayer-volume-small')
143
- removeClass(root, 'xgplayer-volume-large')
144
- if (player.volume === 0 || player.muted) {
145
- addClass(root, 'xgplayer-volume-muted')
146
- } else if (player.volume < 0.5) {
147
- addClass(root, 'xgplayer-volume-small')
148
- } else {
149
- addClass(root, 'xgplayer-volume-large')
150
- }
151
- if (!bar) return
152
- let containerHeight = bar.getBoundingClientRect().height || 76
153
- selected.style.height = `${player.volume * containerHeight}px`
154
- }
155
- }, 50)
156
- }
157
- player.on('volumechange', onVolumeChange)
158
-
159
- function onDestroy () {
160
- player.off('canplay', onCanplay)
161
- player.off('volumeBarClick', onVolumeBarClick)
162
- player.off('volumeIconClick', onVolumeIconClick)
163
- player.off('volumeIconEnter', onVolumeIconEnter)
164
- player.off('volumeIconLeave', onVolumeIconLeave)
165
- player.off('volumechange', onVolumeChange)
166
- player.off('destroy', onDestroy)
167
- if (_changeTimer) {
168
- clearTimeout(_changeTimer);
169
- _changeTimer = null;
170
- }
171
- }
172
- player.once('destroy', onDestroy)
173
- }
174
-
175
- export default {
176
- name: 'volume',
177
- method: volume
178
- }
package/src/controls.js DELETED
@@ -1,36 +0,0 @@
1
- import * as Controls from './controls/*.js'
2
- import * as Skin from './skin/controls/*.js';
3
-
4
- let keyList = []
5
- for (let k in Controls.controls) {
6
- keyList.push(k)
7
- }
8
- for (let k in Skin.skin.controls) {
9
- if(keyList.indexOf(k) < 0) {
10
- keyList.push(k)
11
- }
12
- }
13
- let controls = {}
14
- keyList.forEach(item => {
15
- controls[item] = {
16
- name: item
17
- }
18
- if(Controls.controls[item]) {
19
- if(Skin.skin.controls[item]) {
20
- controls[item].method = function () {
21
- Controls.controls[item].method.call(this)
22
- Skin.skin.controls[item].method.call(this)
23
- }
24
- } else {
25
- controls[item].method = function () {
26
- Controls.controls[item].method.call(this)
27
- }
28
- }
29
- } else {
30
- controls[item].method = function () {
31
- Skin.skin.controls[item].method.call(this)
32
- }
33
- }
34
- })
35
-
36
- export default controls
@@ -1,13 +0,0 @@
1
- import Player from './player'
2
-
3
- import Mobile from './controls/mobile'
4
- import Pc from './controls/pc'
5
- import Start from './controls/start'
6
- import S_start from './skin/controls/start'
7
-
8
- let controlLst = [Mobile, Pc, Start, S_start]
9
- controlLst.forEach(function(control) {
10
- Player.install(control.name, control.method)
11
- })
12
-
13
- export default Player
package/src/error.js DELETED
@@ -1,74 +0,0 @@
1
- import {version} from '../version.json'
2
- const ErrorTypes = {
3
- network: {
4
- code: 1,
5
- msg: '视频下载错误',
6
- remark: '只要视频下载错误就使用此类型,无论是video本身的超时还是xhr的分段请求超时或者资源不存在'
7
- },
8
- mse: {
9
- code: 2,
10
- msg: '流追加错误',
11
- remark: '追加流的时候如果类型不对、无法被正确解码则会触发此类错误'
12
- },
13
- parse: {
14
- code: 3,
15
- msg: '解析错误',
16
- remark: 'mp4、hls、flv我们都是使用js进行格式解析,如果解析失败则会触发此类错误'
17
- },
18
- format: {
19
- code: 4,
20
- msg: '格式错误',
21
- remark: '如果浏览器不支持的格式导致播放错误'
22
- },
23
- decoder: {
24
- code: 5,
25
- msg: '解码错误',
26
- remark: '浏览器解码异常会抛出此类型错误'
27
- },
28
- runtime: {
29
- code: 6,
30
- msg: '语法错误',
31
- remark: '播放器语法错误'
32
- },
33
- timeout: {
34
- code: 7,
35
- msg: '播放超时',
36
- remark: '播放过程中无法正常请求下一个分段导致播放中断'
37
- },
38
- other: {
39
- code: 8,
40
- msg: '其他错误',
41
- remark: '不可知的错误或被忽略的错误类型'
42
- }
43
- }
44
-
45
- class Errors {
46
- constructor (type, currentTime, duration, networkState, readyState, src, currentSrc,
47
- ended, errd = {line: '', handle: '', msg: '', version: ''}, errorCode, mediaError) {
48
- let r = {}
49
- if (arguments.length > 1) {
50
- r.playerVersion = version // 播放器版本
51
- r.errorType = type
52
- r.domain = document.domain // domain
53
- r.duration = duration // 视频时长
54
- r.currentTime = currentTime
55
- r.networkState = networkState
56
- r.readyState = readyState
57
- r.currentSrc = currentSrc
58
- r.src = src
59
- r.ended = ended
60
- r.errd = errd // 错误详情
61
- r.ex = (ErrorTypes[type] || {}).msg // 补充信息
62
- r.errorCode = errorCode
63
- r.mediaError = mediaError
64
- } else {
65
- const arg = arguments[0]
66
- Object.keys(arg).map(key => {
67
- r[key] = arg[key]
68
- })
69
- r.ex = ((arg.type && ErrorTypes[arg.type]) || {}).msg
70
- }
71
- return r
72
- }
73
- }
74
- export default Errors
package/src/index.js DELETED
@@ -1,57 +0,0 @@
1
- import Player from './player'
2
-
3
- import Airplay from './controls/airplay.js'
4
- import CssFullscreen from './controls/cssFullscreen.js'
5
- import Danmu from './controls/danmu.js'
6
- import Definition from './controls/definition.js'
7
- import Download from './controls/download.js'
8
- import ErrorRetryControl from './controls/errorRetry.js'
9
- import Fullscreen from './controls/fullscreen.js'
10
- import Keyboard from './controls/keyboard.js'
11
- import LocalPreview from './controls/localPreview.js'
12
- import MemoryPlay from './controls/memoryPlay.js'
13
- import Miniplayer from './controls/miniplayer.js'
14
- import Mobile from './controls/mobile.js'
15
- import Pc from './controls/pc.js'
16
- import Pip from './controls/pip.js'
17
- import Play from './controls/play.js'
18
- import PlayNext from './controls/playNext.js'
19
- import Reload from './controls/reload.js'
20
- import Replay from './controls/replay.js'
21
- import Rotate from './controls/rotate.js'
22
- import ScreenShot from './controls/screenShot.js'
23
- import StallCheck from './controls/stallCheck.js'
24
- import Start from './controls/start.js'
25
- import Volume from './controls/volume.js'
26
- import TextTrack from './controls/textTrack.js'
27
-
28
- Player.installAll([
29
- Airplay,
30
- CssFullscreen,
31
- Danmu,
32
- Definition,
33
- Download,
34
- ErrorRetryControl,
35
- Fullscreen,
36
- Keyboard,
37
- LocalPreview,
38
- MemoryPlay,
39
- Miniplayer,
40
- Mobile,
41
- Pc,
42
- Pip,
43
- Play,
44
- PlayNext,
45
- Reload,
46
- Replay,
47
- Rotate,
48
- ScreenShot,
49
- StallCheck,
50
- Start,
51
- Volume,
52
- TextTrack
53
- ])
54
-
55
- import './skin/index.js';
56
-
57
- export default Player