Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6172ccd

Browse files
committed
[feta]支持多线程模式播放视频
1 parent 1bf18fa commit 6172ccd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+63140
-12
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
v 0.5.9
2+
3+
[feta]支持用户通过开启谷歌实验室特性启动多线程解码
4+
5+
[feta]新增开启开启谷歌实验室特性引导说明
6+
7+
v 0.5.8
8+
[feta-beta]支持多线程解码视频-beta
9+
110
v 0.5.7
211
[feta]新增对讲成功回调,用于国标对讲成功,开启视频声音
312

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,6 @@ themeData将主题数据本地化,设置本地数据,需要删除template参
252252
</td><td>N</td></tr>
253253
<tr><td>plugin</td><td>String</td><td>按需加载插件,可选值: talk:对讲,示例:plugin:["talk"] </td><td>N</td></tr>
254254
<tr><td>handleSuccess</td><td>function</td><td>自动播放成功回调</td><td>N</td></tr>
255-
<tr><td>handleError</td><td>function</td><td>播放失败回调</td><td>N</td></tr>
256255
<tr><td>poster</td><td>String</td><td>视频默认封面 版本号> v0.4.6 </td><td>N</td></tr>
257256
</table>
258257

demos/base-demo/ezuikit.js

Lines changed: 85 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ var addJs = function addJs(filepath, callback, isReadyFun) {
110110
if (!isReady) {
111111
var oJs = document.createElement("script");
112112
oJs.setAttribute("src", filepath);
113+
oJs.setAttribute("crossorigin", true);
113114
oJs.onload = callback;
114115
document.getElementsByTagName("head")[0].appendChild(oJs);
115116
} else {
@@ -31877,6 +31878,12 @@ var matchTemplate = function matchTemplate(templateName, params) {
3187731878
}
3187831879
};
3187931880

31881+
var isVersion2Available = function isVersion2Available() {
31882+
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
31883+
var isSharedArrayBuffer = window.SharedArrayBuffer;
31884+
return isSharedArrayBuffer && !isMobile;
31885+
};
31886+
3188031887
var EZUIKitPlayer = /*#__PURE__*/function () {
3188131888
function EZUIKitPlayer(params) {
3188231889
var _this = this;
@@ -31911,11 +31918,13 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3191131918
this.poster = params.poster;
3191231919
this.speed = 1;
3191331920
this.disabledTimeLine = false;
31921+
this.disabledPTZ = false;
31922+
this.enableSharedArrayBufferGuide = false;
3191431923
this.capacity = {};
3191531924
this.env = {
3191631925
domain: "https://open.ys7.com"
3191731926
};
31918-
this.staticPath = "https://open.ys7.com/assets/ezuikit_v4.0";
31927+
this.staticPath = isVersion2Available() ? "https://open.ys7.com/assets/ezuikit_v5.0" : "https://open.ys7.com/assets/ezuikit_v4.0";
3191931928

3192031929
if (typeof params.staticPath === 'string') {
3192131930
this.staticPath = params.staticPath;
@@ -31929,7 +31938,66 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3192931938
this.disabledTimeLine = params.disabledTimeLine;
3193031939
}
3193131940

31932-
addJs("".concat(this.staticPath, "/js/jsPlugin-4.0.2.min.js"), function () {
31941+
if (typeof params.disabledPTZ !== 'undefined') {
31942+
this.disabledPTZ = params.disabledPTZ;
31943+
}
31944+
31945+
if (typeof params.enableSharedArrayBufferGuide !== 'undefined') {
31946+
this.enableSharedArrayBufferGuide = params.enableSharedArrayBufferGuide;
31947+
}
31948+
31949+
var pluginUrl = "".concat(this.staticPath, "/js/jsPlugin-4.0.2.min.js");
31950+
31951+
if (isVersion2Available()) {
31952+
console.log("启用多线程解析视频");
31953+
pluginUrl = "".concat(this.staticPath, "/jsPlugin-2.0.0.min.js");
31954+
} else {
31955+
// 是否引导用户开启谷歌实验室 Google Labs 特性
31956+
//enableSharedArrayBufferGuide
31957+
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
31958+
31959+
var getChromeVersion = function getChromeVersion() {
31960+
var arr = navigator.userAgent.split(' ');
31961+
var chromeVersion = '';
31962+
31963+
for (var i = 0; i < arr.length; i++) {
31964+
if (/chrome/i.test(arr[i])) {
31965+
chromeVersion = arr[i];
31966+
}
31967+
}
31968+
31969+
if (chromeVersion) {
31970+
return Number(chromeVersion.split('/')[1].split('.')[0]);
31971+
}
31972+
31973+
return false;
31974+
}; // pc端 谷歌浏览器 版本92 ~ 105
31975+
31976+
31977+
if (!isMobile && 91 < getChromeVersion < 106 && this.enableSharedArrayBufferGuide) {
31978+
console.log("提示用户开启谷歌实验室特性");
31979+
var wapDomId = "".concat(this.id, "-wrap");
31980+
var guideDom = document.createElement("div");
31981+
var guideSpan = document.createElement("span");
31982+
guideSpan.innerHTML = "您当前浏览器可以开启谷歌实验室多线程特性,获取更好播放体验,避免浏览器卡顿及崩溃,详见";
31983+
guideDom.appendChild(guideSpan);
31984+
var guideLink = document.createElement("a");
31985+
guideLink.href = "https://open.ys7.com/help/384";
31986+
guideLink.setAttribute("target", "_blank");
31987+
guideDom.appendChild(guideLink);
31988+
guideLink.innerHTML = "开启说明"; //guideDom.innerHTML = "您的浏览器当前使用单进程播放视频,可能因内存占用过高导致浏览器卡顿,您可参考·谷歌浏览器开启多线程(链接)·开启谷歌实验室多线程特性,获取更好播放体验";
31989+
31990+
guideDom.id = "".concat(this.id, "-guide");
31991+
guideDom.style = "font-size:12px;color:red;";
31992+
setTimeout(function () {
31993+
if (document.getElementById(wapDomId)) {
31994+
document.getElementById(wapDomId).insertBefore(guideDom, document.getElementById(_this.id));
31995+
}
31996+
}, 5000);
31997+
}
31998+
}
31999+
32000+
addJs(pluginUrl, function () {
3193332001
if (autoplay) {
3193432002
_this.initTime = new Date().getTime();
3193532003

@@ -32194,7 +32262,11 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3219432262
var validateCode = getQueryString('checkCode', realUrl);
3219532263

3219632264
if (validateCode) {
32197-
_this3.jSPlugin.JS_SetSecretKey(0, validateCode);
32265+
if (typeof _this3.jSPlugin.decoderVersion !== 'undefined' && _this3.jSPlugin.decoderVersion === '2.0') {
32266+
_this3.validateCode = validateCode;
32267+
} else {
32268+
_this3.jSPlugin.JS_SetSecretKey(0, validateCode);
32269+
}
3219832270
} // 回放处理
3219932271

3220032272

@@ -32503,6 +32575,10 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3250332575
this.jSPlugin.JS_Play(wsUrl, wsParams, 0).then(function () {
3250432576
console.log("播放成功");
3250532577

32578+
if (_this4.validateCode && typeof _this4.jSPlugin.decoderVersion !== 'undefined' && _this4.jSPlugin.decoderVersion === '2.0') {
32579+
_this4.jSPlugin.JS_SetSecretKey(0, _this4.validateCode);
32580+
}
32581+
3250632582
_this4.pluginStatus.loadingClear();
3250732583

3250832584
_this4.pluginStatus.setPlayStatus({
@@ -32661,19 +32737,23 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3266132737
this.url = url;
3266232738
var promise = new Promise(function (resolve, reject) {
3266332739
_this7.stop().then(function () {
32740+
console.log("changePlayUrl stop success");
32741+
3266432742
if (options.accessToken) {
3266532743
_this7.accessToken = options.accessToken;
3266632744
return _this7.play({
3266732745
accessToken: options.accessToken,
3266832746
url: url
3266932747
}).then(function () {
32748+
console.log("changePlayUrl replay success");
3267032749
resolve(url);
3267132750
})["catch"](function (err) {
3267232751
reject(url);
3267332752
});
3267432753
}
3267532754

3267632755
_this7.play(url).then(function () {
32756+
console.log("changePlayUrl replay success");
3267732757
resolve(url);
3267832758
})["catch"](function (err) {
3267932759
reject(url);
@@ -33152,9 +33232,9 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3315233232
var end = defaultTime.length;
3315333233
var standardTime = time + defaultTime.substring(start, end);
3315433234
return standardTime.slice(0, 8) + 'T' + standardTime.slice(8) + 'Z';
33155-
} else {
33156-
throw new Error('回放时间格式有误,请确认');
3315733235
}
33236+
33237+
throw new Error('回放时间格式有误,请确认');
3315833238
}
3315933239

3316033240
var seekRT = this.jSPlugin.JS_Seek(0, startTime, endTime);

demos/nginx-demo/conf/fastcgi.conf

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
3+
fastcgi_param QUERY_STRING $query_string;
4+
fastcgi_param REQUEST_METHOD $request_method;
5+
fastcgi_param CONTENT_TYPE $content_type;
6+
fastcgi_param CONTENT_LENGTH $content_length;
7+
8+
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
9+
fastcgi_param REQUEST_URI $request_uri;
10+
fastcgi_param DOCUMENT_URI $document_uri;
11+
fastcgi_param DOCUMENT_ROOT $document_root;
12+
fastcgi_param SERVER_PROTOCOL $server_protocol;
13+
fastcgi_param REQUEST_SCHEME $scheme;
14+
fastcgi_param HTTPS $https if_not_empty;
15+
16+
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
17+
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
18+
19+
fastcgi_param REMOTE_ADDR $remote_addr;
20+
fastcgi_param REMOTE_PORT $remote_port;
21+
fastcgi_param SERVER_ADDR $server_addr;
22+
fastcgi_param SERVER_PORT $server_port;
23+
fastcgi_param SERVER_NAME $server_name;
24+
25+
# PHP only, required if PHP was built with --enable-force-cgi-redirect
26+
fastcgi_param REDIRECT_STATUS 200;
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
fastcgi_param QUERY_STRING $query_string;
3+
fastcgi_param REQUEST_METHOD $request_method;
4+
fastcgi_param CONTENT_TYPE $content_type;
5+
fastcgi_param CONTENT_LENGTH $content_length;
6+
7+
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
8+
fastcgi_param REQUEST_URI $request_uri;
9+
fastcgi_param DOCUMENT_URI $document_uri;
10+
fastcgi_param DOCUMENT_ROOT $document_root;
11+
fastcgi_param SERVER_PROTOCOL $server_protocol;
12+
fastcgi_param REQUEST_SCHEME $scheme;
13+
fastcgi_param HTTPS $https if_not_empty;
14+
15+
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
16+
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
17+
18+
fastcgi_param REMOTE_ADDR $remote_addr;
19+
fastcgi_param REMOTE_PORT $remote_port;
20+
fastcgi_param SERVER_ADDR $server_addr;
21+
fastcgi_param SERVER_PORT $server_port;
22+
fastcgi_param SERVER_NAME $server_name;
23+
24+
# PHP only, required if PHP was built with --enable-force-cgi-redirect
25+
fastcgi_param REDIRECT_STATUS 200;

demos/nginx-demo/conf/koi-utf

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
2+
# This map is not a full koi8-r <> utf8 map: it does not contain
3+
# box-drawing and some other characters. Besides this map contains
4+
# several koi8-u and Byelorussian letters which are not in koi8-r.
5+
# If you need a full and standard map, use contrib/unicode2nginx/koi-utf
6+
# map instead.
7+
8+
charset_map koi8-r utf-8 {
9+
10+
80 E282AC ; # euro
11+
12+
95 E280A2 ; # bullet
13+
14+
9A C2A0 ; # &nbsp;
15+
16+
9E C2B7 ; # &middot;
17+
18+
A3 D191 ; # small yo
19+
A4 D194 ; # small Ukrainian ye
20+
21+
A6 D196 ; # small Ukrainian i
22+
A7 D197 ; # small Ukrainian yi
23+
24+
AD D291 ; # small Ukrainian soft g
25+
AE D19E ; # small Byelorussian short u
26+
27+
B0 C2B0 ; # &deg;
28+
29+
B3 D081 ; # capital YO
30+
B4 D084 ; # capital Ukrainian YE
31+
32+
B6 D086 ; # capital Ukrainian I
33+
B7 D087 ; # capital Ukrainian YI
34+
35+
B9 E28496 ; # numero sign
36+
37+
BD D290 ; # capital Ukrainian soft G
38+
BE D18E ; # capital Byelorussian short U
39+
40+
BF C2A9 ; # (C)
41+
42+
C0 D18E ; # small yu
43+
C1 D0B0 ; # small a
44+
C2 D0B1 ; # small b
45+
C3 D186 ; # small ts
46+
C4 D0B4 ; # small d
47+
C5 D0B5 ; # small ye
48+
C6 D184 ; # small f
49+
C7 D0B3 ; # small g
50+
C8 D185 ; # small kh
51+
C9 D0B8 ; # small i
52+
CA D0B9 ; # small j
53+
CB D0BA ; # small k
54+
CC D0BB ; # small l
55+
CD D0BC ; # small m
56+
CE D0BD ; # small n
57+
CF D0BE ; # small o
58+
59+
D0 D0BF ; # small p
60+
D1 D18F ; # small ya
61+
D2 D180 ; # small r
62+
D3 D181 ; # small s
63+
D4 D182 ; # small t
64+
D5 D183 ; # small u
65+
D6 D0B6 ; # small zh
66+
D7 D0B2 ; # small v
67+
D8 D18C ; # small soft sign
68+
D9 D18B ; # small y
69+
DA D0B7 ; # small z
70+
DB D188 ; # small sh
71+
DC D18D ; # small e
72+
DD D189 ; # small shch
73+
DE D187 ; # small ch
74+
DF D18A ; # small hard sign
75+
76+
E0 D0AE ; # capital YU
77+
E1 D090 ; # capital A
78+
E2 D091 ; # capital B
79+
E3 D0A6 ; # capital TS
80+
E4 D094 ; # capital D
81+
E5 D095 ; # capital YE
82+
E6 D0A4 ; # capital F
83+
E7 D093 ; # capital G
84+
E8 D0A5 ; # capital KH
85+
E9 D098 ; # capital I
86+
EA D099 ; # capital J
87+
EB D09A ; # capital K
88+
EC D09B ; # capital L
89+
ED D09C ; # capital M
90+
EE D09D ; # capital N
91+
EF D09E ; # capital O
92+
93+
F0 D09F ; # capital P
94+
F1 D0AF ; # capital YA
95+
F2 D0A0 ; # capital R
96+
F3 D0A1 ; # capital S
97+
F4 D0A2 ; # capital T
98+
F5 D0A3 ; # capital U
99+
F6 D096 ; # capital ZH
100+
F7 D092 ; # capital V
101+
F8 D0AC ; # capital soft sign
102+
F9 D0AB ; # capital Y
103+
FA D097 ; # capital Z
104+
FB D0A8 ; # capital SH
105+
FC D0AD ; # capital E
106+
FD D0A9 ; # capital SHCH
107+
FE D0A7 ; # capital CH
108+
FF D0AA ; # capital hard sign
109+
}

0 commit comments

Comments
 (0)