Skip to content

Commit

Permalink
update demo
Browse files Browse the repository at this point in the history
  • Loading branch information
snowinszu committed Dec 2, 2019
1 parent 1031423 commit 1a9fb36
Show file tree
Hide file tree
Showing 8 changed files with 134 additions and 45 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,8 @@ bin-release/
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
# should NOT be excluded as they contain compiler settings and other important
# information for Eclipse / Flash Builder.

.idea
node_modules
package-lock.json
.DS_Store
45 changes: 32 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,36 @@
# chplayer
网页视频播放器,html5优先,兼容移动端,支持mp4,flv,f4v以及m3u8格式,支持rtmp。支持点播和直播
官网:http://www.chplayer.com
演示:http://www.chplayer.com/down/v1.0/
## 简介
[CHPlayer](http://www.chplayer.com/),支持http协议下的flv,f4v,mp4,支持rtmp视频流和rtmp视频回放,
支持m3u8格式,是你做视频直播,视频点播的理想播放器。</br>
本项目属于非官方定制版,嵌入了P2P加速引擎CDNBye [hlsjs-p2p-engine](https://github.com/cdnbye/hlsjs-p2p-engine)
播放hls流支持P2P加速,API与CHPlayer保持一致,使用方法参考[quick-start.html](quick-start.html)

## 调用示例
```
## 示例
```javascript
<!DOCTYPE html>
<html>
<body>
<div id="video" style="width: 100%; height: 400px;max-width: 600px;"></div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/p2p-chplayer@latest/chplayer/chplayer.min.js" charset="UTF-8"></script>
<script type="text/javascript">
var videoObject = {
logo: 'chplayer', //设置logo,非必须
container: '#video',//“#”代表容器的ID,“.”或“”代表容器的class
variable: 'player',//该属性必需设置,值等于下面的new chplayer()的对象
video:'examples01.mp4'//视频地址
};
var player=new chplayer(videoObject);
var videoObject = {
container: '#video',//“#”代表容器的ID,“.”或“”代表容器的class
variable: 'player',//该属性必需设置,值等于下面的new chplayer()的对象
autoplay: true,
html5m3u8: true,
video: 'http://cn1.ruioushang.com/hls/20190824/6bbb04d6e14df9b331cf88409a8846c6/1566615719/index.m3u8',//视频地址
hlsjsConfig: { // hlsjs和CDNBye的配置参数
debug: false,
// Other hlsjsConfig options provided by hls.js
p2pConfig: {
logLevel: false,
live: false,
// Other p2pConfig options provided by CDNBye
// https://github.com/cdnbye/hlsjs-p2p-engine/blob/master/docs/%E4%B8%AD%E6%96%87/API.md
}
}
};
var player = new chplayer(videoObject);
</script>
</body>
</html>
```
38 changes: 31 additions & 7 deletions chplayer/chplayer.js
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@
if(v[1] != '' && !mobile && supportType(v[1], codecs(v[1])) && v[0].substr(0, 4) != 'rtmp') {
nva.push(v);
}
if(this.getFileExt(v[0]) == '.m3u8' && this.vars['html5m3u8']) {
if(this.getFileExt(v[0]) == '.m3u8' && this.vars['html5m3u8'] && !this.isIOS() && !this.isUCBrowser()) {
this.isM3u8 = true;
nva.push(v);
}
Expand Down Expand Up @@ -532,9 +532,10 @@
this.V.volume = volume; //定义音量
if(this.isM3u8) {
var loadJsHandler = function() {
thisTemp.embedHls(thisTemp.VA[0][0], v['autoplay']);
thisTemp.embedHls(thisTemp.VA[0][0], v['autoplay'], v['hlsjsConfig']);
};
this.loadJs(javascriptPath + 'hls/hls.min.js', loadJsHandler);
// this.loadJs(javascriptPath + 'hls/hls.min.js', loadJsHandler);
this.loadJs('https://cdn.jsdelivr.net/npm/cdnbye@latest', loadJsHandler);
}
this.css(this.V, 'backgroundColor', '#000000');
//创建一个画布容器
Expand Down Expand Up @@ -2390,7 +2391,7 @@
this.V.innerHTML = source;
}
} else {
this.embedHls(vArr[0][0], this.vars['autoplay']);
this.embedHls(vArr[0][0], this.vars['autoplay'], this.vars['hlsjsConfig']);
}
this.V.autoplay = 'autoplay';
this.V.load();
Expand All @@ -2401,10 +2402,13 @@
内置函数
播放hls
*/
embedHls: function(url, autoplay) {
embedHls: function(url, autoplay, config) {
var thisTemp = this;
var hlsjsConfig = config || {};
if (!hlsjsConfig.p2pConfig) hlsjsConfig.p2pConfig = {};
if (!hlsjsConfig.p2pConfig.tag) hlsjsConfig.p2pConfig.tag = 'p2p-chplayer';
if(Hls.isSupported()) {
var hls = new Hls();
var hls = new Hls(hlsjsConfig);
hls.loadSource(url);
hls.attachMedia(this.V);
hls.on(Hls.Events.MANIFEST_PARSED, function() {
Expand Down Expand Up @@ -2799,7 +2803,7 @@
}
this.V.load();
} else {
this.embedHls(vArr[0][0], v['autoplay']);
this.embedHls(vArr[0][0], v['autoplay'], v['hlsjsConfig']);
}
if(!this.isUndefined(v['volume'])) {
this.changeVolume(v['volume']);
Expand Down Expand Up @@ -5201,6 +5205,26 @@
}
return '';
},
/*
内置函数
判断是否是iOS
*/
isIOS: function() {
if (navigator.userAgent.match(/(iPhone|iPad|iPod|iOS)/i)) {
return true;
}
return false;
},
/*
内置函数
判断是否是UC浏览器
*/
isUCBrowser: function() {
if (navigator.userAgent.indexOf('UBrowser') > -1 || navigator.userAgent.indexOf('UCBrowser') > -1) {
return true;
}
return false;
},
/*
内置函数
搜索字符串str是否包含key
Expand Down
16 changes: 1 addition & 15 deletions chplayer/chplayer.min.js

Large diffs are not rendered by default.

12 changes: 2 additions & 10 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
var videoObject = {
container: '#video', //容器的ID或className
variable: 'player',
html5m3u8:true,
volume: 0.6, //默认音量
poster: 'screenshot/wdm.jpg', //封面图片地址
autoplay: false, //是否自动播放
Expand Down Expand Up @@ -46,16 +47,7 @@
time: 120,
}
], //提示点,words=提示点的内容,time=提示点对应的时间
video: [
['http://img.ksbbs.com/asset/Mon_1703/05cacb4e02f9d9e.mp4', 'video/mp4', '中文标清', 0],
['http://img.ksbbs.com/asset/Mon_1703/d0897b4e9ddd9a5.mp4', 'video/mp4', '中文高清', 0],
['http://img.ksbbs.com/asset/Mon_1703/eb048d7839442d0.mp4', 'video/mp4', '英文高清', 10],
['http://img.ksbbs.com/asset/Mon_1703/d30e02a5626c066.mp4', 'video/mp4', '英文超清', 0],
]
/*video:[
['http://cdn.theoplayer.com/video/star_wars_episode_vii-the_force_awakens_official_comic-con_2015_reel_(2015)/index.m3u8','','标清',0],
['http://cdn.theoplayer.com/video/star_wars_episode_vii-the_force_awakens_official_comic-con_2015_reel_(2015)/index.m3u8','','高清',10]
]*/
video: 'http://cn1.ruioushang.com/hls/20190824/6bbb04d6e14df9b331cf88409a8846c6/1566615719/index.m3u8',
};
var player = new chplayer(videoObject);

Expand Down
26 changes: 26 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "p2p-chplayer",
"version": "0.1.0",
"description": "网页视频播放器,html5优先,兼容移动端,支持mp4,flv,f4v以及m3u8格式,支持rtmp。支持点播和直播 官网:http://www.chplayer.com 演示:http://www.chplayer.com/down/v1.0/",
"main": "webpack.config.js",
"scripts": {
"build": "webpack --config webpack.config.js",
"publish": "npm publish",
"git-push": "git add . && git commit -m 'fix bug' && git push",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cdnbye/P2P-CHPlayer.git"
},
"author": "cdnbye",
"license": "ISC",
"bugs": {
"url": "https://github.com/cdnbye/P2P-CHPlayer/issues"
},
"homepage": "https://github.com/cdnbye/P2P-CHPlayer#readme",
"devDependencies": {
"webpack": "^4.41.2",
"webpack-cli": "^3.3.10"
}
}
27 changes: 27 additions & 0 deletions quick-start.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<body>
<div id="video" style="width: 100%; height: 400px;max-width: 600px;"></div>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/p2p-chplayer@latest/chplayer/chplayer.min.js" charset="UTF-8"></script>
<script type="text/javascript">
var videoObject = {
container: '#video',//“#”代表容器的ID,“.”或“”代表容器的class
variable: 'player',//该属性必需设置,值等于下面的new chplayer()的对象
autoplay: true,
html5m3u8: true,
video: 'http://cn1.ruioushang.com/hls/20190824/6bbb04d6e14df9b331cf88409a8846c6/1566615719/index.m3u8',//视频地址
hlsjsConfig: { // hlsjs和CDNBye的配置参数
debug: false,
// Other hlsjsConfig options provided by hls.js
p2pConfig: {
logLevel: false,
live: false,
// Other p2pConfig options provided by CDNBye
// https://github.com/cdnbye/hlsjs-p2p-engine/blob/master/docs/%E4%B8%AD%E6%96%87/API.md
}
}
};
var player = new chplayer(videoObject);
</script>
</body>
</html>
10 changes: 10 additions & 0 deletions webpack.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

const path = require('path');

module.exports = {
entry:'./chplayer/chplayer.js',
output: {
filename: 'chplayer.min.js',
path: path.resolve(__dirname, 'chplayer')
}
};

0 comments on commit 1a9fb36

Please sign in to comment.