@@ -275,57 +275,6 @@ var request = function request(url, method, params, header, success, error) {
275275 }
276276 http_request.send(data);
277277};
278- // 增加防抖函数
279- var debouncePromise = function debouncePromise(fn, delay) {
280- var immdiate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
281- var timer = null;
282- var isInvoke = false;
283- return function _debounce() {
284- var _this = this;
285- for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) {
286- arg[_key] = arguments[_key];
287- }
288- return new Promise(function (resolve, reject) {
289- if (timer) {
290- console.log("防抖, delay 后执行", timer, delay, fn);
291- clearTimeout(timer);
292- }
293- // 双击执行2次
294- if (immdiate && !isInvoke) {
295- console.log("防抖 第一次执行...", isInvoke, fn);
296- isInvoke = true;
297- fn.apply(_this, arg).then(function () {
298- resolve();
299- })["catch"](function (err) {
300- console.log("防抖,err", err);
301- reject();
302- });
303- setTimeout(function () {
304- isInvoke = false;
305- }, delay);
306- } else {
307- if (isInvoke) {
308- console.log("操作过于频繁,仅支持" + delay + "ms时间内切换一次");
309- reject({
310- code: -1,
311- msg: "操作过于频繁,仅支持" + delay + "ms时间内切换一次"
312- });
313- return false;
314- }
315- timer = setTimeout(function () {
316- console.log("防抖 执行...", fn);
317- fn.apply(_this, arg).then(function () {
318- resolve();
319- })["catch"](function (err) {
320- console.log("防抖,err", err);
321- reject();
322- });
323- isInvoke = false;
324- }, delay);
325- }
326- });
327- };
328- };
329278
330279var HLS = /*#__PURE__*/function () {
331280 function HLS(videoId, url) {
@@ -31141,6 +31090,62 @@ var Monitor = /*#__PURE__*/function () {
3114131090});
3114231091var EZUIKitV3$1 = EZUIKitV3;
3114331092
31093+ /* global setTimeout, clearTimeout */
31094+ var dist = function debounce(fn) {
31095+ var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
31096+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
31097+ var lastCallAt = void 0;
31098+ var deferred = void 0;
31099+ var timer = void 0;
31100+ var pendingArgs = [];
31101+ return function debounced() {
31102+ var currentWait = getWait(wait);
31103+ var currentTime = new Date().getTime();
31104+ var isCold = !lastCallAt || currentTime - lastCallAt > currentWait;
31105+ lastCallAt = currentTime;
31106+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
31107+ args[_key] = arguments[_key];
31108+ }
31109+ if (isCold && options.leading) {
31110+ return options.accumulate ? Promise.resolve(fn.call(this, [args])).then(function (result) {
31111+ return result[0];
31112+ }) : Promise.resolve(fn.call.apply(fn, [this].concat(args)));
31113+ }
31114+ if (deferred) {
31115+ clearTimeout(timer);
31116+ } else {
31117+ deferred = defer();
31118+ }
31119+ pendingArgs.push(args);
31120+ timer = setTimeout(flush.bind(this), currentWait);
31121+ if (options.accumulate) {
31122+ var argsIndex = pendingArgs.length - 1;
31123+ return deferred.promise.then(function (results) {
31124+ return results[argsIndex];
31125+ });
31126+ }
31127+ return deferred.promise;
31128+ };
31129+ function flush() {
31130+ var thisDeferred = deferred;
31131+ clearTimeout(timer);
31132+ Promise.resolve(options.accumulate ? fn.call(this, pendingArgs) : fn.apply(this, pendingArgs[pendingArgs.length - 1])).then(thisDeferred.resolve, thisDeferred.reject);
31133+ pendingArgs = [];
31134+ deferred = null;
31135+ }
31136+ };
31137+ function getWait(wait) {
31138+ return typeof wait === 'function' ? wait() : wait;
31139+ }
31140+ function defer() {
31141+ var deferred = {};
31142+ deferred.promise = new Promise(function (resolve, reject) {
31143+ deferred.resolve = resolve;
31144+ deferred.reject = reject;
31145+ });
31146+ return deferred;
31147+ }
31148+
3114431149/**
3114531150 * Created by wangweijie5 on 2016/12/16.
3114631151 */
@@ -31737,6 +31742,9 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3173731742 function EZUIKitPlayer(params) {
3173831743 var _this = this;
3173931744 _classCallCheck$1(this, EZUIKitPlayer);
31745+ // 解决当ws连接建立但是没有推流导致未触发播放成功事件,
31746+ // 此时切换设备执行 播放器 stop 时触发了播放成功事件导致设备序列号重置
31747+ this.isStoping = false; // 是否在播放前 stop 执行过程中
3174031748 var _params$autoplay = params.autoplay,
3174131749 autoplay = _params$autoplay === void 0 ? true : _params$autoplay;
3174231750 // 如果设置了模板(除精简版),此处不自动播放,根据模板判断是否执行自动播放:
@@ -31967,14 +31975,15 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3196731975 return new EZUIKitV3$1.EZUIKitPlayer(params);
3196831976 }
3196931977 // this.stop = debouncePromise(()=>this._stop(),0,true);
31970- this.play = debouncePromise (function (options) {
31978+ this.play = dist (function (options) {
3197131979 return _this._play(options);
31972- }, 1000, true);
31973- // this.pause = debouncePromise(()=>this._pause(),1000,true);
31974- this.resume = debouncePromise(function (time) {
31980+ }, 500, true);
31981+ this.resume = dist(function (time) {
3197531982 return _this._resume(time);
31976- }, 1000, true);
31977- //this.changePlayUrl = debouncePromise((time)=>this._changePlayUrl(time),1000,true);
31983+ }, 500, true);
31984+ this.changePlayUrl = dist(function (options) {
31985+ return _this._changePlayUrl(options);
31986+ }, 500);
3197831987 // 监听到页面退出
3197931988 // 研究院反馈,播放过程中退出页面需要执行停止视频,否则可能导致浏览器崩溃
3198031989 window.addEventListener("beforeunload", function () {
@@ -32211,6 +32220,7 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3221132220 key: "_getRealUrlPromise",
3221232221 value: function _getRealUrlPromise(accessToken, url) {
3221332222 var _this3 = this;
32223+ console.log("\u83B7\u53D6\u64AD\u653E\u5730\u5740 url => ".concat(url, " ").concat(this.accessToken));
3221432224 var apiDomain = this.env.domain;
3221532225 if (this.env) {
3221632226 apiDomain = this.env.domain;
@@ -32520,7 +32530,7 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3252032530 key: "_pluginPlay",
3252132531 value: function _pluginPlay(data, successCallback, errorCallback) {
3252232532 var _this4 = this;
32523- console.log("get real url result === ", data);
32533+ console.log("执行播放 _pluginPlay ", data);
3252432534 if (!data) {
3252532535 return false;
3252632536 }
@@ -32543,8 +32553,17 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3254332553 var wsParams = {
3254432554 playURL: getPlayParams(data).websocketStreamingParam
3254532555 };
32556+ console.log('播放前 stop 阶段 结束');
32557+ this.isStoping = false;
32558+ var now = Date.now();
32559+ console.log('执行播放 ... this.jSPlugin.JS_Play at ', now);
3254632560 this.jSPlugin.JS_Play(wsUrl, wsParams, 0).then(function () {
32547- console.log("播放成功");
32561+ console.log("执行播放 ... this.jSPlugin.JS_Play 播放成功", wsUrl, wsParams);
32562+ console.log("执行播放耗时 ", Date.now() - now);
32563+ if (_this4.isStoping) {
32564+ console.log('现在在播放前 stop 阶段,此次应为无效播放成功触发。不执行后续回调, 此次耗时无效');
32565+ return;
32566+ }
3254832567 if (_this4.validateCode && typeof _this4.jSPlugin.decoderVersion !== 'undefined' && _this4.jSPlugin.decoderVersion === '2.0') {
3254932568 _this4.jSPlugin.JS_SetSecretKey(0, _this4.validateCode);
3255032569 }
@@ -32646,6 +32665,7 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3264632665 key: "_play",
3264732666 value: function _play(options) {
3264832667 var _this5 = this;
32668+ console.log("\u6267\u884C\u64AD\u653E play options.url =>", options);
3264932669 this.pluginStatus.setPlayStatus({
3265032670 play: false,
3265132671 loading: true
@@ -32672,8 +32692,10 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3267232692 }
3267332693 }
3267432694 var promise = new Promise(function (resolve, reject) {
32695+ console.log('执行 播放前 stop');
32696+ _this5.isStoping = true;
3267532697 _this5.jSPlugin.JS_Stop(0).then(function () {
32676- console.log("play_stop- success" );
32698+ console.log("\u64AD\u653E\u524D stop \u6267\u884C\u6210\u529F this.url => ".concat(_this5.url, " ").concat(_this5.accessToken) );
3267732699 _this5._getRealUrlPromise(_this5.accessToken, _this5.url).then(function (data) {
3267832700 _this5._pluginPlay(data, function () {
3267932701 return resolve(true);
@@ -32787,26 +32809,27 @@ var EZUIKitPlayer = /*#__PURE__*/function () {
3278732809 }
3278832810 }
3278932811 }, {
32790- key: "changePlayUrl ",
32791- value: function changePlayUrl (options) {
32812+ key: "_changePlayUrl ",
32813+ value: function _changePlayUrl (options) {
3279232814 var _this8 = this;
32815+ console.log('_changePlayUrl');
3279332816 this.reSetTheme();
3279432817 var initUrl = this.url;
3279532818 var url = matchUrl(initUrl, options);
3279632819 if (options.accessToken) {
3279732820 this.accessToken = options.accessToken;
3279832821 }
32822+ this.url = url;
3279932823 var promise = new Promise(function (resolve, reject) {
32800- console.log("changePlayUrl stop success");
3280132824 var changePlayUrlParams = {
3280232825 url: url
3280332826 };
3280432827 if (options.accessToken) {
3280532828 changePlayUrlParams["accessToken"] = options.accessToken;
3280632829 }
32807- console.log("changePlayUrlParams ", changePlayUrlParams);
32830+ console.log("切换播放地址 参数 ", changePlayUrlParams);
3280832831 return _this8.play(changePlayUrlParams).then(function () {
32809- console.log("changePlayUrl replay success" );
32832+ console.log("切换播放地址 play 执行成功 ", url );
3281032833 _this8.url = url;
3281132834 // 当前处于网页全屏状态
3281232835 if (_this8.Theme && _this8.Theme.decoderState.state.webExpend) {
0 commit comments