# 超强播放器支持flv、hls、rtmp等ckplayer
# antd中引入第三方js文件
找到document.ejs文件,引入
<script type="text/javascript" src="<%= context.publicPath %>ckplayer/ckplayer/ckplayer.js"></script>
1
以上尤其注意src,antd中必须这么写,否则找不到js文件,此js文件放到public文件夹中
# 具体操作
# 组件中为方便新建一个全局对象
const ckplayerOptions = {
container: '#videoBodyDiv',
autoplay: true,
loop: false,
variable: 'videoPlayer',
}
1
2
3
4
5
6
2
3
4
5
6
具体实现如下
let { hls, videoPlayer } = this.state;
const newVideoObject = { ...ckplayerOptions, video: finalUrl }
// 判断是需要重新加载播放器还是直接换新地址
if (videoPlayer) {
// 当前是html5video,新地址如果是以下情况,则需要重新加载播放器,更换为flashPlayer
if (videoPlayer.playerType === 'html5video') {
if (videoPlayer.getFileExt(finalUrl) === '.flv'
|| videoPlayer.getFileExt(finalUrl) === '.m3u8'
|| videoPlayer.getFileExt(finalUrl) === '.f4v'
|| finalUrl.substr(0, 4) === 'rtmp'
|| finalUrl.includes('testFlv')) {
videoPlayer.removeChild();
videoPlayer = null;
// eslint-disable-next-line new-cap
videoPlayer = new window.ckplayer();
videoPlayer.embed(newVideoObject);
} else {
videoPlayer.newVideo(newVideoObject);
}
} else if (videoPlayer.getFileExt(finalUrl) === '.mp4'
|| videoPlayer.getFileExt(finalUrl) === '.webm'
|| videoPlayer.getFileExt(finalUrl) === '.ogg') {
videoPlayer = null;
// eslint-disable-next-line new-cap
videoPlayer = new window.ckplayer();
videoPlayer.embed(newVideoObject);
} else {
videoPlayer.newVideo(newVideoObject);
}
} else {
// eslint-disable-next-line new-cap
videoPlayer = new window.ckplayer(newVideoObject);
}
this.setState({ videoPlayer });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35