describe('Document', function () {
afterEach(function () {
[...Artplayer.instances].forEach((art) => {
art.destroy(true);
});
});
function testAll(art, done) {
let isDone = false;
art.on('ready', () => {
expect(art.id).to.be.an('number');
if (!isDone) {
isDone = true;
done();
}
});
art.on('video:error', () => {
expect(art.id).to.be.an('number');
if (!isDone) {
isDone = true;
done();
}
});
setTimeout(() => {
expect(art.id).to.be.an('number');
if (!isDone) {
isDone = true;
done();
}
}, 1000);
}
it('Test0', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
var $video = art.template.query('.art-video');
console.info($video);
});
testAll(art, done);
});
it('Test1', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
var $video = art.query('.art-video');
console.info($video);
});
testAll(art, done);
});
it('Test2', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.storage.set('your-key', 'your-value');
art.storage.get('your-key');
art.storage.del('your-key');
art.storage.clear();
testAll(art, done);
});
it('Test3', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.i18n.get('Play'));
});
testAll(art, done);
});
it('Test4', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
lang: 'jp',
});
art.i18n.update({
'zh-cn': {
Language: '简体',
},
'zh-tw': {
Language: '繁體',
},
en: {
Language: 'English',
},
jp: {
Language: '日文',
},
fr: {
Language: 'Français',
},
ru: {
Language: 'Russe',
},
});
testAll(art, done);
});
it('Test5', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
subtitle: {
url: './assets/sample/subtitle.srt',
},
});
art.on('ready', () => {
art.seek = 20;
art.subtitle.show = false;
setTimeout(() => {
art.subtitle.show = true;
}, 3000);
});
testAll(art, done);
});
it('Test6', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
subtitle: {
url: './assets/sample/subtitle.srt',
encoding: 'utf-8',
style: {
color: '#03A9F4',
'font-size': '30px',
},
},
});
art.on('ready', () => {
art.seek = 20;
setTimeout(() => {
art.subtitle.style({
color: 'red',
'font-size': '40px',
});
}, 3000);
});
testAll(art, done);
});
it('Test7', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
subtitle: {
url: './assets/sample/subtitle.srt',
encoding: 'utf-8',
style: {
color: '#03A9F4',
'font-size': '30px',
},
},
});
art.on('ready', () => {
console.info(art.subtitle.url);
setTimeout(() => {
art.subtitle.url = './assets/sample/subtitle.srt?t=1';
}, 3000);
});
testAll(art, done);
});
it('Test8', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
subtitle: {
url: './assets/sample/subtitle.srt',
encoding: 'utf-8',
style: {
color: 'red',
'font-size': '30px',
},
},
});
art.on('ready', () => {
art.seek = 20;
setTimeout(() => {
art.subtitle.switch('./assets/sample/subtitle.srt?t=1', {
name: 'The new subtitle',
style: {
color: 'green',
'font-size': '24px',
},
});
}, 3000);
});
testAll(art, done);
});
it('Test9', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
var img = './assets/sample/layer.png';
art.on('ready', () => {
setTimeout(() => {
art.layers.add({
html: `
`,
style: {
position: 'absolute',
top: '20px',
right: '20px',
opacity: '.9',
},
});
}, 3000);
});
testAll(art, done);
});
it('Test10', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.notice.show = '自定义提示信息1';
art.notice.show = '自定义提示信息2';
});
testAll(art, done);
});
it('Test11', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
setTimeout(() => {
art.controls.show = false;
}, 3000);
});
testAll(art, done);
});
it('Test12', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
setTimeout(() => {
art.controls.add({
position: 'right',
index: 10,
html: '自定义按钮',
tooltip: '自定义按钮的提示',
click: function () {
console.log('你点击了自定义按钮');
},
});
}, 3000);
});
testAll(art, done);
});
it('Test13', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.contextmenu.show = true;
setTimeout(() => {
art.contextmenu.show = false;
}, 3000);
});
testAll(art, done);
});
it('Test14', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.contextmenu.show = true;
setTimeout(() => {
art.contextmenu.add({
html: '自定义菜单',
click: function () {
console.info('你点击了自定义菜单');
art.contextmenu.show = false;
},
});
}, 3000);
});
testAll(art, done);
});
it('Test15', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.loading.show = true;
setTimeout(() => {
art.loading.show = false;
}, 3000);
});
testAll(art, done);
});
it('Test16', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.mask.show = true;
setTimeout(() => {
art.mask.show = false;
}, 3000);
});
testAll(art, done);
});
it('Test17', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.hotkey.add(65, () => {
console.info('你点击了 A 键');
});
art.hotkey.add(66, () => {
console.info('你点击了 B 键');
});
});
testAll(art, done);
});
it('Test18', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
autoSize: true,
});
art.on('ready', () => {
art.seek = 20;
art.setting.show = true;
setTimeout(() => {
art.setting.show = false;
}, 3000);
});
testAll(art, done);
});
it('Test19', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(Artplayer.instances);
});
testAll(art, done);
});
it('Test20', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('video:play', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test21', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test22', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('play', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test23', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('pause', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test24', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('seek', (...args) => {
console.info(args);
});
art.on('ready', (...args) => {
art.seek = 5;
});
testAll(art, done);
});
it('Test25', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('volume', (...args) => {
console.info(args);
});
art.on('ready', (...args) => {
art.volume = 0.5;
});
testAll(art, done);
});
it('Test26', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('destroy', (...args) => {
console.info(args);
});
art.on('ready', (...args) => {
art.destroy();
});
testAll(art, done);
});
it('Test27', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('focus', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test28', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('blur', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test29', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('hover', (state) => {
// state 为true时,鼠标从外面移进播放器
// state 为false时,鼠标从播放器移出外面
console.info(state);
});
testAll(art, done);
});
it('Test30', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoSize: true,
});
art.on('resize', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test31', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('mousemove', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test32', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('url', (...args) => {
console.info(args);
});
art.on('ready', (...args) => {
art.url = './assets/sample/video.mp4?t=0';
});
testAll(art, done);
});
it('Test33', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreen: true,
});
art.on('fullscreen', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test34', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreenWeb: true,
});
art.on('fullscreenWeb', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test35', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('hotkey', (...args) => {
console.info(args);
});
testAll(art, done);
});
it('Test36', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
// container: document.querySelector('.artplayer-app'),
url: './assets/sample/video.mp4',
});
testAll(art, done);
});
it('Test37', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
testAll(art, done);
});
it('Test38', function (done) {
var art = new Artplayer(
{
container: '.artplayer-app',
url: './assets/sample/video.mp4',
muted: true,
},
function () {
this.play();
},
);
testAll(art, done);
});
it('Test39', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
poster: './assets/sample/poster.jpg',
});
testAll(art, done);
});
it('Test40', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
title: '【新海诚动画】『秒速5センチメートル』',
screenshot: true,
});
testAll(art, done);
});
it('Test41', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
theme: '#ffad00',
});
testAll(art, done);
});
it('Test42', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
volume: 0.5,
});
testAll(art, done);
});
it('Test43', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
isLive: true,
});
testAll(art, done);
});
it('Test44', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
muted: true,
});
testAll(art, done);
});
it('Test45', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoplay: true,
muted: true,
});
testAll(art, done);
});
it('Test46', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoMini: true,
});
testAll(art, done);
});
it('Test47', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
loop: true,
});
testAll(art, done);
});
it('Test48', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
flip: true,
setting: true,
});
testAll(art, done);
});
it('Test49', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
playbackRate: true,
setting: true,
});
testAll(art, done);
});
it('Test50', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
aspectRatio: true,
setting: true,
});
testAll(art, done);
});
it('Test51', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
screenshot: true,
// 可选
moreVideoAttr: {
crossOrigin: 'anonymous',
},
});
testAll(art, done);
});
it('Test52', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
});
testAll(art, done);
});
it('Test53', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
hotkey: true,
});
testAll(art, done);
});
it('Test54', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
pip: true,
});
testAll(art, done);
});
it('Test55', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
mutex: true,
});
testAll(art, done);
});
it('Test56', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreen: true,
});
testAll(art, done);
});
it('Test57', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreenWeb: true,
});
testAll(art, done);
});
it('Test58', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
subtitle: {
url: './assets/sample/subtitle.srt',
},
setting: true,
subtitleOffset: true,
});
testAll(art, done);
});
it('Test59', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
miniProgressBar: true,
});
testAll(art, done);
});
it('Test60', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
playsInline: true,
});
testAll(art, done);
});
it('Test61', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
settings: [
{
html: '自定义设置01',
selector: [
{
html: '子菜单01',
},
{
html: '子菜单02',
},
],
onSelect: function (item) {
console.log(item.html);
},
},
{
html: '自定义设置02',
selector: [
{
html: '子菜单01',
},
{
html: '子菜单02',
},
],
onSelect: function (item) {
console.log(item.html);
},
},
],
});
testAll(art, done);
});
it('Test62', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
contextmenu: [
{
html: '自定义菜单',
click: function () {
console.info('你点击了自定义菜单');
art.contextmenu.show = false;
},
},
],
});
art.on('ready', () => {
art.contextmenu.show = true;
});
testAll(art, done);
});
it('Test63', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
controls: [
{
disable: false,
name: 'button',
index: 10,
position: 'right',
html: '自定义按钮',
tooltip: '自定义按钮的提示1',
style: {
color: 'red',
},
click: function () {
console.log('你点击了自定义按钮1');
},
mounted: function () {
console.log('自定义按钮挂载完成1');
},
},
{
position: 'left',
html: '自定义按钮2',
tooltip: '自定义按钮的提示2',
style: {
color: 'green',
},
click: function () {
console.log('你点击了自定义按钮2');
},
},
],
});
testAll(art, done);
});
it('Test64', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
quality: [
{
default: true,
html: 'SD 480P',
url: './assets/sample/video.mp4',
},
{
html: 'HD 720P',
url: './assets/sample/video.mp4',
},
],
});
testAll(art, done);
});
it('Test65', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
highlight: [
{
time: 60,
text: 'One more chance',
},
{
time: 120,
text: '谁でもいいはずなのに',
},
{
time: 180,
text: '夏の想い出がまわる',
},
{
time: 240,
text: 'こんなとこにあるはずもないのに',
},
{
time: 300,
text: '--终わり--',
},
],
});
testAll(art, done);
});
it('Test66', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
// whitelist: [(ua) => /iPhone OS 11/gi.test(ua)],
// whitelist: [/iPhone OS 11/gi],
// whitelist: ['iPhone OS 11'],
whitelist: ['*'],
});
testAll(art, done);
});
it('Test67', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
thumbnails: {
url: './assets/sample/thumbnails.png',
number: 100,
column: 10,
},
});
testAll(art, done);
});
it('Test68', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
subtitle: {
url: './assets/sample/subtitle.srt',
type: 'srt',
encoding: 'utf-8',
style: {
color: '#03A9F4',
'font-size': '30px',
},
},
});
testAll(art, done);
});
it('Test69', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
moreVideoAttr: {
'webkit-playsinline': true,
playsInline: true,
},
});
testAll(art, done);
});
it('Test70', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
icons: {
loading: '
',
state: '
',
play: '',
pause: '',
check: '',
volume: '',
volumeClose: '',
screenshot: '',
setting: '',
pip: '',
arrowLeft: '',
arrowRight: '',
playbackRate: '',
aspectRatio: '',
config: '',
lock: '',
flip: '',
unlock: '',
fullscreenOff: '',
fullscreenOn: '',
fullscreenWebOff: '',
fullscreenWebOn: '',
switchOn: '',
switchOff: '',
error: '',
indicator: '',
},
});
testAll(art, done);
});
it('Test71', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.flv',
type: 'flv',
});
testAll(art, done);
});
it('Test72', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.flv',
customType: {
flv: function (video, url, art) {
// video: 视频dom元素
// url: 视频地址
// art: 当前实例
},
},
});
testAll(art, done);
});
it('Test73', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
lang: 'en',
});
testAll(art, done);
});
it('Test74', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
lock: true,
});
testAll(art, done);
});
it('Test75', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fastForward: true,
});
testAll(art, done);
});
it('Test76', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoPlayback: true,
});
testAll(art, done);
});
it('Test77', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoOrientation: true,
});
testAll(art, done);
});
it('Test78', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
airplay: true,
});
testAll(art, done);
});
it('Test79', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoSize: true,
fullscreen: true,
fullscreenWeb: true,
plugins: [
artplayerPluginAds({
// html广告,假如是视频广告则忽略该值
html: '
',
// 视频广告的地址
video: './assets/sample/test1.mp4',
// 广告跳转网址,为空则不跳转
url: 'http://artplayer.org',
// 必须观看的时长,期间不能被跳过,单位为秒
// 当该值大于或等于totalDuration时,不能提前关闭广告
// 当该值等于或小于0时,则随时都可以关闭广告
playDuration: 5,
// 广告总时长,单位为秒
totalDuration: 10,
// 视频广告是否默认静音
muted: false,
// 多语言支持
i18n: {
close: '关闭广告',
countdown: '%s秒',
detail: '查看详情',
canBeClosed: '%s秒后可关闭广告',
},
}),
],
});
art.on('artplayerPluginAds:click', (ads) => {
console.info('广告被点击', ads);
});
art.on('artplayerPluginAds:skip', (ads) => {
console.info('广告被跳过', ads);
});
testAll(art, done);
});
it('Test80', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
autoSize: true,
setting: true,
playbackRate: true,
fullscreenWeb: true,
plugins: [
artplayerPluginDanmuku({
// 弹幕数组
danmuku: [
{
text: '111', // 弹幕文本
time: 1, // 发送时间,单位秒
color: '#fff', // 弹幕局部颜色
border: false, // 是否显示描边
mode: 0, // 弹幕模式: 0表示滚动、1静止
},
{
text: '222',
time: 2,
color: 'red',
border: true,
mode: 0,
},
{
text: '333',
time: 3,
color: 'green',
border: false,
mode: 1,
},
],
speed: 5, // 弹幕持续时间,单位秒,范围在[1 ~ 10]
opacity: 1, // 弹幕透明度,范围在[0 ~ 1]
fontSize: 25, // 字体大小,支持数字和百分比
color: '#FFFFFF', // 默认字体颜色
mode: 0, // 默认模式,0-滚动,1-静止
margin: [10, '25%'], // 弹幕上下边距,支持数字和百分比
antiOverlap: true, // 是否防重叠
useWorker: true, // 是否使用 web worker
synchronousPlayback: false, // 是否同步到播放速度
filter: (danmu) => danmu.text.length < 50, // 弹幕过滤函数,返回 true 则可以发送
lockTime: 5, // 输入框锁定时间,单位秒,范围在[1 ~ 60]
maxLength: 100, // 输入框最大可输入的字数,范围在[0 ~ 500]
minWidth: 200, // 输入框最小宽度,范围在[0 ~ 500],填 0 则为无限制
maxWidth: 400, // 输入框最大宽度,范围在[0 ~ Infinity],填 0 则为 100% 宽度
theme: 'dark', // 输入框自定义挂载时的主题色,默认为 dark,可以选填亮色 light
beforeEmit: (danmu) => !!danmu.text.trim(), // 发送弹幕前的自定义校验,返回 true 则可以发送
// 通过 mount 选项可以自定义输入框挂载的位置,默认挂载于播放器底部,仅在当宽度小于最小值时生效
// mount: document.querySelector('.artplayer-danmuku'),
}),
],
});
testAll(art, done);
});
it('Test81', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
// 弹幕 XML 文件,和 Bilibili 网站的弹幕格式一致
danmuku: './assets/sample/danmuku.xml',
}),
],
});
testAll(art, done);
});
it('Test82', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
// 使用 Promise 异步返回
danmuku: function () {
return new Promise((resovle) => {
return resovle([
{
text: '111',
time: 1,
},
{
text: '222',
time: 2,
},
{
text: '333',
time: 3,
},
]);
});
},
}),
],
});
testAll(art, done);
});
it('Test83', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
controls: [
{
position: 'right',
html: '隐藏弹幕',
click: function () {
art.plugins.artplayerPluginDanmuku.hide();
},
},
{
position: 'right',
html: '显示弹幕',
click: function () {
art.plugins.artplayerPluginDanmuku.show();
},
},
],
});
testAll(art, done);
});
it('Test84', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
controls: [
{
position: 'right',
html: '隐藏弹幕',
click: function (_, event) {
if (art.plugins.artplayerPluginDanmuku.isHide) {
art.plugins.artplayerPluginDanmuku.show();
event.target.innerText = '隐藏弹幕';
} else {
art.plugins.artplayerPluginDanmuku.hide();
event.target.innerText = '显示弹幕';
}
},
},
],
});
testAll(art, done);
});
it('Test85', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
controls: [
{
position: 'right',
html: '发送弹幕',
click: function () {
var text = prompt('请输入弹幕文本', '弹幕测试文本');
if (!text || !text.trim()) return;
var color = '#' + Math.floor(Math.random() * 0xffffff).toString(16);
art.plugins.artplayerPluginDanmuku.emit({
text: text,
color: color,
border: true,
});
},
},
],
});
testAll(art, done);
});
it('Test86', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
controls: [
{
position: 'right',
html: '弹幕大小:',
style: {
display: 'flex',
alignItems: 'center',
},
mounted: function ($setting) {
const $range = $setting.querySelector('input[type=range]');
$range.addEventListener('change', () => {
art.plugins.artplayerPluginDanmuku.config({
fontSize: Number($range.value),
});
});
},
},
],
});
testAll(art, done);
});
it('Test87', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
controls: [
{
position: 'right',
html: '重载弹幕',
click: function () {
art.plugins.artplayerPluginDanmuku.load();
},
},
{
position: 'right',
html: '切换弹幕',
click: function () {
art.plugins.artplayerPluginDanmuku.config({
danmuku: './assets/sample/danmuku-v2.xml',
});
art.plugins.artplayerPluginDanmuku.load();
},
},
],
});
testAll(art, done);
});
it('Test88', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
});
art.on('resize', () => {
art.plugins.artplayerPluginDanmuku.reset();
});
testAll(art, done);
});
it('Test89', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
});
art.on('ready', () => {
console.log(art.plugins.artplayerPluginDanmuku.option);
});
testAll(art, done);
});
it('Test90', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
plugins: [
artplayerPluginDanmuku({
danmuku: './assets/sample/danmuku.xml',
}),
],
});
art.on('artplayerPluginDanmuku:emit', (danmu) => {
console.info('新增弹幕', danmu);
});
art.on('artplayerPluginDanmuku:loaded', (danmus) => {
console.info('加载弹幕', danmus.length);
});
art.on('artplayerPluginDanmuku:error', (error) => {
console.info('加载错误', error);
});
art.on('artplayerPluginDanmuku:config', (option) => {
console.info('配置变化', option);
});
art.on('artplayerPluginDanmuku:stop', () => {
console.info('弹幕停止');
});
art.on('artplayerPluginDanmuku:start', () => {
console.info('弹幕开始');
});
art.on('artplayerPluginDanmuku:hide', () => {
console.info('弹幕隐藏');
});
art.on('artplayerPluginDanmuku:show', () => {
console.info('弹幕显示');
});
art.on('artplayerPluginDanmuku:destroy', () => {
console.info('弹幕销毁');
});
testAll(art, done);
});
it('Test91', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
muted: true,
});
art.on('ready', () => {
art.play();
});
testAll(art, done);
});
it('Test92', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
muted: true,
});
art.on('ready', () => {
art.play();
setTimeout(() => {
art.pause();
}, 3000);
});
testAll(art, done);
});
it('Test93', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
muted: true,
});
art.on('ready', () => {
art.toggle();
setTimeout(() => {
art.toggle();
}, 3000);
});
testAll(art, done);
});
it('Test94', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 5;
});
testAll(art, done);
});
it('Test95', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.forward = 5;
});
testAll(art, done);
});
it('Test96', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 5;
setTimeout(() => {
art.backward = 2;
}, 3000);
});
testAll(art, done);
});
it('Test97', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.volume);
art.volume = 0.5;
console.info(art.volume);
});
testAll(art, done);
});
it('Test98', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.url);
art.url = './assets/sample/video.mp4?t=0';
console.info(art.url);
});
testAll(art, done);
});
it('Test99', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 10;
setTimeout(() => {
art.switchUrl('./assets/sample/video.mp4?t=0', '新视频名字');
}, 3000);
});
testAll(art, done);
});
it('Test100', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 10;
setTimeout(() => {
art.switchQuality('./assets/sample/video.mp4?t=0', '新视频地址');
}, 3000);
});
testAll(art, done);
});
it('Test101', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.muted);
art.muted = true;
console.info(art.muted);
});
testAll(art, done);
});
it('Test102', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.currentTime);
art.currentTime = 5;
console.info(art.currentTime);
});
testAll(art, done);
});
it('Test103', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.duration);
});
testAll(art, done);
});
it('Test104', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 10;
art.once('video:canplay', () => {
art.screenshot();
});
});
testAll(art, done);
});
it('Test105', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 10;
art.getDataURL().then((url) => console.info(url));
});
testAll(art, done);
});
it('Test106', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.seek = 10;
art.getBlobUrl().then((url) => console.info(url));
});
testAll(art, done);
});
it('Test107', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreen: true,
});
art.on('ready', () => {
art.fullscreen = true;
setTimeout(() => {
art.fullscreen = false;
}, 3000);
});
testAll(art, done);
});
it('Test108', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreenWeb: true,
});
art.on('ready', () => {
art.fullscreenWeb = true;
setTimeout(() => {
art.fullscreenWeb = false;
}, 3000);
});
testAll(art, done);
});
it('Test109', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
fullscreenWeb: true,
});
art.on('ready', () => {
art.pip = true;
setTimeout(() => {
art.pip = false;
}, 3000);
});
testAll(art, done);
});
it('Test110', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
poster: './assets/sample/poster.jpg',
});
art.on('ready', () => {
console.info(art.poster);
art.poster = './assets/sample/poster.jpg?t=0';
console.info(art.poster);
});
testAll(art, done);
});
it('Test111', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.mini = true;
});
testAll(art, done);
});
it('Test112', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
muted: true,
});
art.on('ready', () => {
console.info(art.playing);
art.play();
console.info(art.playing);
});
testAll(art, done);
});
it('Test113', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.autoSize);
art.autoSize = true;
console.info(art.autoSize);
});
testAll(art, done);
});
it('Test114', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(JSON.stringify(art.rect));
});
testAll(art, done);
});
it('Test115', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.flip);
art.flip = 'horizontal';
console.info(art.flip);
});
testAll(art, done);
});
it('Test116', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.playbackRate);
art.playbackRate = 2;
console.info(art.playbackRate);
});
testAll(art, done);
});
it('Test117', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.aspectRatio);
art.aspectRatio = '16:9';
console.info(art.aspectRatio);
});
testAll(art, done);
});
it('Test118', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.loop);
art.loop = [5, 10];
console.info(art.loop);
});
testAll(art, done);
});
it('Test119', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.autoHeight);
art.autoHeight = true;
console.info(art.autoHeight);
});
testAll(art, done);
});
it('Test120', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.attr('playsInline'));
art.attr('playsInline', true);
console.info(art.attr('playsInline'));
});
testAll(art, done);
});
it('Test121', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.title);
art.title = '新标题';
console.info(art.title);
});
testAll(art, done);
});
it('Test122', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.type);
art.type = 'm3u8';
console.info(art.type);
});
testAll(art, done);
});
it('Test123', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
console.info(art.theme);
art.theme = '#000';
console.info(art.theme);
});
testAll(art, done);
});
it('Test124', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
controls: [
{
name: 'airplay',
position: 'right',
html: 'AirPlay',
click: function () {
art.airplay();
},
},
],
});
testAll(art, done);
});
it('Test125', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
});
art.on('ready', () => {
art.destroy();
});
testAll(art, done);
});
it('Test126', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
controls: [
{
position: 'right',
html: 'Subtitle 01',
selector: [
{
default: true,
html: 'Subtitle 01',
url: './assets/sample/subtitle.srt?id=1',
},
{
html: 'Subtitle 02',
url: './assets/sample/subtitle.srt?id=2',
},
],
onSelect: function (item, $dom) {
console.info(item, $dom);
art.subtitle.url = item.url;
return '你点击了 ' + item.html;
},
},
],
});
testAll(art, done);
});
it('Test127', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
});
art.on('ready', () => {
art.layers.add({
name: 'layer1',
html: 'your-layer',
mounted: function ($layer1) {
//
},
});
art.contextmenu.add({
name: 'contextmenu1',
html: 'your-contextmenu',
mounted: function ($contextmenu1) {
//
},
});
art.controls.add({
name: 'control1',
html: 'your-control',
position: 'right',
mounted: function ($control1) {
//
},
});
// 使用查询 query 获取组件的DOM元素
var $layer1 = art.query('.art-layer-layer1');
var $contextmenu1 = art.query('.art-contextmenu-contextmenu1');
var $control1 = art.query('.art-control-control1');
// 推荐使用 name 获取组件的DOM元素
var $layer1 = art.layers['layer1'];
var $contextmenu1 = art.contextmenu['contextmenu1'];
var $control1 = art.controls['control1'];
});
testAll(art, done);
});
it('Test128', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
flip: true,
playbackRate: true,
aspectRatio: true,
settings: [
{
html: '选择字幕',
width: 250,
tooltip: '字幕 01',
selector: [
{
default: true,
html: '字幕 01',
url: './assets/sample/subtitle.srt?id=1',
},
{
html: '字幕 02',
url: './assets/sample/subtitle.srt?id=2',
},
],
onSelect: function (item, $dom, event) {
console.info(item, $dom, event);
art.subtitle.url = item.url;
// 改变提示文本
return item.html;
},
},
{
html: '选择画质',
width: 150,
tooltip: '1080P',
selector: [
{
default: true,
html: '1080P',
url: './assets/sample/video.mp4?id=1080',
},
{
html: '720P',
url: './assets/sample/video.mp4?id=720',
},
{
html: '360P',
url: './assets/sample/video.mp4?id=360',
},
],
onSelect: function (item, $dom, event) {
console.info(item, $dom, event);
art.switchQuality(item.url, item.html);
// 改变提示文本
return item.html;
},
},
{
html: '多层嵌套',
selector: [
{
html: '嵌套01',
selector: [
{
html: '嵌套02',
},
{
html: '嵌套02',
},
],
},
{
html: '嵌套01',
selector: [
{
html: '嵌套02',
},
{
html: '嵌套02',
},
],
},
],
},
],
});
testAll(art, done);
});
it('Test129', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
flip: true,
playbackRate: true,
aspectRatio: true,
settings: [
{
html: '画中画模式',
tooltip: '关闭',
icon: '
',
switch: false,
onSwitch: function (item, $dom, event) {
console.info(item, $dom, event);
const nextState = !item.switch;
art.pip = nextState;
// 改变提示文本
item.tooltip = nextState ? '开启' : '关闭';
// 改变按钮状态
return nextState;
},
},
{
html: '和列表组合',
width: 200,
selector: [
{
default: true,
html: '设置 01',
},
{
html: '设置 02',
},
{
html: '设置 03',
switch: false,
onSwitch: function (item, $dom, event) {
return !item.switch;
},
},
{
html: '设置 04',
icon: '',
switch: true,
onSwitch: function (item, $dom, event) {
return !item.switch;
},
},
],
onSelect: function (item) {
return item.html;
},
},
],
});
testAll(art, done);
});
it('Test130', function (done) {
var art = new Artplayer({
container: '.artplayer-app',
url: './assets/sample/video.mp4',
setting: true,
flip: true,
playbackRate: true,
aspectRatio: true,
settings: [
{
html: '滑块',
tooltip: '5x',
icon: '
',
range: [5, 1, 10, 1],
onRange: function (item) {
// 改变提示文本
return item.range + 'x';
},
},
{
html: '和列表组合',
width: 200,
selector: [
{
default: true,
html: '设置 01',
},
{
html: '设置 02',
},
{
html: '设置 03',
tooltip: '5x',
range: [5, 1, 10, 1],
onRange: function (item) {
return item.range + 'x';
},
},
{
html: '设置 04',
icon: '',
tooltip: '5x',
range: [5, 1, 10, 1],
onRange: function (item) {
return item.range + 'x';
},
},
],
onSelect: function (item) {
return item.html;
},
},
],
});
testAll(art, done);
});
});