avs-sdk
Version:
音视频服务前端sdk
89 lines (85 loc) • 2.59 kB
JavaScript
require('./video.min.css')
import videojs1 from './video.min.js'
import { Base64 } from './base64.js'
var videojs = videojs1
var playerDom
var CreatePlayer = (id, options, callback) => {
var obj = {}
for (var key in options) {
if (key !== 'controlBar' && key !== 'sources') {
obj[key] = options[key]
} else if (key === 'controlBar') {
var obj1 = {}
var controlObj = options[key]
for (var k in controlObj) {
if (k !== 'volumePanel') {
obj1[k] = controlObj[k]
} else {
if (controlObj[k] === 'vertical') {
obj1[k] = {
inline: false,
CurrentTimeDisplay: true
}
}
}
}
obj[key] = obj1
} else if (key === 'sources') {
var arr = []
obj[key] = arr
var obj2 = {}
var sourcesObj = options[key][0]
for (var keyVal in sourcesObj) {
if (keyVal === 'src') {
if (options.srcISencryption) {
obj2[keyVal] = decodeFunc(sourcesObj[keyVal]) // 解密
} else {
obj2[keyVal] = sourcesObj[keyVal]
}
} else {
obj2[keyVal] = sourcesObj[keyVal]
}
}
obj[key] = [obj2]
}
}
var player = videojs(id, obj, callback)
playerDom = player
return player
}
function decodeFunc (str) {
var num = str.indexOf('.m3u8')
if (num >= 0) {
var arr = str.split('/live/')
var arr1 = arr[0].split('//')
var replace1 = arr1[1]
var arr2 = arr[1].split('/')
var replace2 = arr2[0]
var decode1 = str.replace(replace1, Base64.decode(replace1))
var m3u8DecodeStr = decode1.replace(replace2, Base64.decode(replace2))
console.log(m3u8DecodeStr)
return m3u8DecodeStr
} else {
var arr3 = str.split('//')
var arr4 = arr3[1].split('/')
var replace3 = arr4[1]
var mp4DecodeStr = str.replace(replace3, Base64.decode(replace3))
return mp4DecodeStr
}
}
var AddControlButton = (hoverText, className, insertPlace, callback) => {
var btn1 = videojs.getComponent('Button')
var danmakuBtn = videojs.extend(btn1, {
constructor: function () {
btn1.apply(this, arguments)
this.controlText(hoverText)
},
buildCSSClass: function () {
return className + ' vjs-control vjs-button'
},
handleClick: callback
})
videojs.registerComponent('danBtn', danmakuBtn)
playerDom.getChild('controlBar').addChild('danBtn', {}, insertPlace)
}
export {CreatePlayer, AddControlButton}