@besovideo/webrtc-player 0.8.80 → 0.8.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.es.css CHANGED
@@ -901,6 +901,34 @@
901
901
  right: 16px;
902
902
  top: 14px;
903
903
  }
904
+ .bvplayer-blaybackbar .optionsContent {
905
+ position: absolute;
906
+ right: 85px;
907
+ bottom: 30px;
908
+ padding: 10px 5px;
909
+ border-radius: 5px;
910
+ height: 130px;
911
+ background-color: white;
912
+ color: black;
913
+ display: none;
914
+ }
915
+ .bvplayer-blaybackbar .options-item select {
916
+ vertical-align: text-bottom;
917
+ }
918
+ .bvplayer-blaybackbar .options-item {
919
+ text-align: center;
920
+ padding: 2px 12px;
921
+ -webkit-user-select: none;
922
+ user-select: none;
923
+ }
924
+ .bvplayer-blaybackbar .options-item[data-selected=true] {
925
+ background-color: #cfcfcf;
926
+ }
927
+ .bvplayer-blaybackbar .options-item:hover {
928
+ cursor: pointer;
929
+ background-color: #dfdfdf;
930
+ border-radius: 3px;
931
+ }
904
932
  .bvplayer-blaybackbar .svg-sound {
905
933
  color: white;
906
934
  cursor: pointer;
package/dist/main.es.js CHANGED
@@ -111,7 +111,7 @@ var __async = (__this, __arguments, generator) => {
111
111
  var define_processenv_default;
112
112
  var init_define_processenv = __esm({
113
113
  "<define:processenv>"() {
114
- define_processenv_default = { NODE_ENV: "production", SH_LIB_NAME: "@besovideo/webrtc-player", SH_LIB_VERSION: "0.8.80", PROJECT_NAMESPACE: "bvplayer" };
114
+ define_processenv_default = { NODE_ENV: "production", SH_LIB_NAME: "@besovideo/webrtc-player", SH_LIB_VERSION: "0.8.82", PROJECT_NAMESPACE: "bvplayer" };
115
115
  }
116
116
  });
117
117
 
@@ -5053,7 +5053,7 @@ var getDeviceBvrtc = (param, token, signal) => __async(void 0, null, function* (
5053
5053
  signal
5054
5054
  );
5055
5055
  logger_default.api("\u8BBE\u5907\u97F3\u89C6\u9891\u6D41 bvrtc\u65B9\u5F0F\u6253\u5F00dialog: ", { params, resData });
5056
- if (resData == null ? void 0 : resData.code) {
5056
+ if ((resData == null ? void 0 : resData.code) == 9) {
5057
5057
  throw new TokenFailError("token fail");
5058
5058
  }
5059
5059
  if (!resData || resData.code !== 0 || !((_a = resData.data) == null ? void 0 : _a.dialogid))
@@ -14901,7 +14901,8 @@ var en_default = {
14901
14901
  "tiao-zhuan": "Jump",
14902
14902
  "fa-song": "Send",
14903
14903
  "xian-shi": "Show",
14904
- "token-fail": "Token Fail"
14904
+ "token-fail": "Token Fail",
14905
+ "bei-su": "Speed"
14905
14906
  };
14906
14907
 
14907
14908
  // src/locales/zh.json
@@ -14951,7 +14952,8 @@ var zh_default = {
14951
14952
  "tiao-zhuan": "\u8DF3\u8F6C",
14952
14953
  "xian-shi": "\u663E\u793A",
14953
14954
  "fa-song": "\u53D1\u9001",
14954
- "token-fail": "\u8BA4\u8BC1\u5931\u6548"
14955
+ "token-fail": "\u8BA4\u8BC1\u5931\u6548",
14956
+ "bei-su": "\u500D\u901F"
14955
14957
  };
14956
14958
 
14957
14959
  // src/locales/i18n.ts
@@ -16573,6 +16575,7 @@ var PuPlayer = (props) => {
16573
16575
  player.mask.text = t("lost-connection");
16574
16576
  player.close();
16575
16577
  onDisConnected && onDisConnected();
16578
+ useRecntMgr == null ? void 0 : useRecntMgr.reconnect();
16576
16579
  },
16577
16580
  onConnected: (_pc) => {
16578
16581
  onConnected && onConnected();
@@ -16651,8 +16654,6 @@ var PuPlayer = (props) => {
16651
16654
  var _a2, _b2;
16652
16655
  muted2 = arguments.length == 0 ? currentMuted : muted2;
16653
16656
  console.log("open with muted: ", muted2);
16654
- if (!useRecntMgr)
16655
- useRecntMgr = reconnectMgr;
16656
16657
  player.clearEventListener("close");
16657
16658
  logger_default.debug(
16658
16659
  "PuPlayer open",
@@ -16696,7 +16697,7 @@ var PuPlayer = (props) => {
16696
16697
  player.mask.visible = true;
16697
16698
  player.mask.text = e.toString();
16698
16699
  onConnectedFailed && onConnectedFailed();
16699
- useRecntMgr == null ? void 0 : useRecntMgr.reconnect();
16700
+ reconnectMgr == null ? void 0 : reconnectMgr.reconnect();
16700
16701
  return;
16701
16702
  }
16702
16703
  try {
@@ -16900,10 +16901,12 @@ var PuPlayer = (props) => {
16900
16901
  player.mask.text = e2.toString();
16901
16902
  hplayer == null ? void 0 : hplayer.close();
16902
16903
  onConnectedFailed && onConnectedFailed();
16903
- useRecntMgr == null ? void 0 : useRecntMgr.reconnect();
16904
+ reconnectMgr == null ? void 0 : reconnectMgr.reconnect();
16904
16905
  throw e2;
16905
16906
  }
16906
16907
  }
16908
+ if (!useRecntMgr)
16909
+ useRecntMgr = reconnectMgr;
16907
16910
  });
16908
16911
  },
16909
16912
  play: () => __async(void 0, null, function* () {
@@ -17128,7 +17131,35 @@ var PlaybackBar = class extends Plugin {
17128
17131
  this.svgFullscreen = core_default.dom.createByJsx(/* @__PURE__ */ jsx_default.h("svg", { onclick: () => {
17129
17132
  this.dispatch("fullscreen");
17130
17133
  }, style: "margin-left: 30px; cursor: pointer", xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24" }, /* @__PURE__ */ jsx_default.h("path", { fill: "white", d: "M4 4h6v2H6v4H4zm10 0h6v6h-2V6h-4zM6 14v4h4v2H4v-6zm14 0v6h-6v-2h4v-4z" })));
17131
- this.svgOptions = core_default.dom.createByJsx(/* @__PURE__ */ jsx_default.h("svg", { style: "margin-left: 30px", xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24" }, /* @__PURE__ */ jsx_default.h("path", { fill: "white", d: "M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0m0-6a2 2 0 1 0 4 0a2 2 0 0 0-4 0m0 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0" })));
17134
+ this.optionsValues = ["2.0", "1.5", "1.25", "1.0", "0.75", "0.50"];
17135
+ this.currenSpeed = 1;
17136
+ this.optionsContent = core_default.dom.createByJsx(
17137
+ /* @__PURE__ */ jsx_default.h("div", { className: "optionsContent", onclick: (e) => {
17138
+ e.stopPropagation();
17139
+ } }, this.optionsValues.map((item) => {
17140
+ return /* @__PURE__ */ jsx_default.h(jsx_default.Fragment, null, /* @__PURE__ */ jsx_default.h("div", { className: "options-item", "data-selected": this.currenSpeed == Number(item) ? "true" : void 0, onclick: (e) => {
17141
+ var _a;
17142
+ const divEle = e.target;
17143
+ (_a = divEle.parentNode) == null ? void 0 : _a.childNodes.forEach((div2) => {
17144
+ if (div2.dataset["selected"]) {
17145
+ delete div2.dataset["selected"];
17146
+ }
17147
+ });
17148
+ divEle.dataset["selected"] = true;
17149
+ if (this.currenSpeed = Number(item)) {
17150
+ this.currenSpeed = Number(item);
17151
+ this.onOptionChange(this.currenSpeed);
17152
+ }
17153
+ } }, " ", item, "x"));
17154
+ }))
17155
+ );
17156
+ this.globalClickTemp = () => {
17157
+ };
17158
+ this.svgOptions = core_default.dom.createByJsx(/* @__PURE__ */ jsx_default.h("svg", { style: "margin-left: 30px; cursor: pointer", xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24" }, /* @__PURE__ */ jsx_default.h("path", { fill: "white", d: "M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0m0-6a2 2 0 1 0 4 0a2 2 0 0 0-4 0m0 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0" })));
17159
+ this.playSpeed = core_default.dom.createByJsx(/* @__PURE__ */ jsx_default.h(jsx_default.Fragment, null, /* @__PURE__ */ jsx_default.h("span", { onclick: (e) => {
17160
+ this.toggleOptionsContent();
17161
+ e.stopPropagation();
17162
+ }, style: "vertical-align: bottom;margin-top: 10px;line-height: 30px; margin-right: 10px; margin-left: 30px; cursor: pointer; user-select: none; font-size: 12px" }, t("bei-su"))));
17132
17163
  this.svgDownload = core_default.dom.createByJsx(/* @__PURE__ */ jsx_default.h("span", { onclick: () => {
17133
17164
  this.dispatch("download");
17134
17165
  }, style: "transition: opacity 0.5s; display: inline-block; height: 24px; width: 24px; padding-left: 4px; position: absolute; top: 50%; background-color: black;border-radius: 8px; right: 0px; padding-top: 2px; cursor: pointer;" }, /* @__PURE__ */ jsx_default.h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 1024 1024" }, /* @__PURE__ */ jsx_default.h("path", { fill: "white", d: "M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696l236.288-236.352l45.248 45.248L508.8 704L192 387.2l45.248-45.248L480 584.704V128h64z" }))));
@@ -17246,6 +17277,27 @@ var PlaybackBar = class extends Plugin {
17246
17277
  }
17247
17278
  this.dispatch("changeVolume", { volume: this.volumeCurrent });
17248
17279
  }
17280
+ onOptionChange(speed) {
17281
+ this.dispatch("playSpeedChange", { speed });
17282
+ }
17283
+ globalClick() {
17284
+ window.removeEventListener("click", this.globalClickTemp);
17285
+ this.toggleOptionsContent(true);
17286
+ }
17287
+ toggleOptionsContent(isHide) {
17288
+ const ele = this.optionsContent;
17289
+ if (isHide) {
17290
+ ele.style.display = "none";
17291
+ } else {
17292
+ if (ele.style.display == "block") {
17293
+ ele.style.display = "none";
17294
+ } else {
17295
+ ele.style.display = "block";
17296
+ this.globalClickTemp = this.globalClick.bind(this);
17297
+ window.addEventListener("click", this.globalClickTemp);
17298
+ }
17299
+ }
17300
+ }
17249
17301
  isPlaying() {
17250
17302
  var _a;
17251
17303
  return !!((_a = this.svgPause) == null ? void 0 : _a.parentNode);
@@ -17306,7 +17358,7 @@ var PlaybackBar = class extends Plugin {
17306
17358
  const rightPanel = this.controls.rightControls ? this.controls.rightControls : (() => {
17307
17359
  this.controls.rightControls = core_default.dom.createByJsx(/* @__PURE__ */ jsx_default.h("span", { class: "right-options" }));
17308
17360
  core_default.dom.append(this.svgSound, this.svgSound100);
17309
- core_default.dom.append(this.controls.rightControls, this.svgSound, this.svgFullscreen, this.svgOptions);
17361
+ core_default.dom.append(this.controls.rightControls, this.svgSound, this.playSpeed, this.svgFullscreen, this.svgOptions, this.optionsContent);
17310
17362
  return this.controls.rightControls;
17311
17363
  })();
17312
17364
  const barContent = this.controls.barContent ? this.controls.barContent : this.controls.barContent = core_default.dom.createByJsx(
@@ -17459,6 +17511,9 @@ var MarkerHandle = class extends Plugin {
17459
17511
  }
17460
17512
  init(_container, layoutInfo) {
17461
17513
  if (this.createParams.displayMode == "playback") {
17514
+ if (_container) {
17515
+ this.playArea = _container;
17516
+ }
17462
17517
  return _container;
17463
17518
  }
17464
17519
  if (layoutInfo) {
@@ -17840,6 +17895,11 @@ var PlayBack = (props) => {
17840
17895
  videoEle.currentTime = params == null ? void 0 : params.targetSeconds;
17841
17896
  }
17842
17897
  };
17898
+ barHandle.addEventListener("playSpeedChange", (params) => {
17899
+ if (params) {
17900
+ videoEle.playbackRate = params.speed;
17901
+ }
17902
+ });
17843
17903
  handle2.close = () => {
17844
17904
  videoEle.src = "";
17845
17905
  markerHandle.destroy();
@@ -17911,6 +17971,18 @@ var PlayBack = (props) => {
17911
17971
  hplayer.setVolume(data.volume / 100);
17912
17972
  }
17913
17973
  });
17974
+ barHandle.addEventListener("playSpeedChange", (params) => __async(this, null, function* () {
17975
+ if (params && playbackInfo.data) {
17976
+ const isPlaying = barHandle.isPlaying();
17977
+ const data = yield hplayer == null ? void 0 : hplayer.getPlayerStatistic();
17978
+ const ptsVideo = Number(data.data.mediaStatisticInfo.videoStatistic.lastvideopts) / 1e6;
17979
+ yield playbackController.seek({ scale: params.speed, range: [Number(ptsVideo.toFixed(4)), playbackInfo.data.range[1]] });
17980
+ yield hplayer == null ? void 0 : hplayer.playbackStart(params.speed);
17981
+ if (!isPlaying) {
17982
+ yield hplayer == null ? void 0 : hplayer.playbackStop();
17983
+ }
17984
+ }
17985
+ }));
17914
17986
  if (playbackInfo.data) {
17915
17987
  barHandle.updata({
17916
17988
  total: playbackInfo.data.range[1],
@@ -11,6 +11,9 @@ interface IPlaybackBarEventMap extends IPluginEventMap {
11
11
  volume: number;
12
12
  };
13
13
  download: {};
14
+ playSpeedChange: {
15
+ speed: number;
16
+ };
14
17
  }
15
18
  declare class PlaybackBar extends Plugin<HTMLDivElement, IPlaybackBarEventMap> {
16
19
  private content;
@@ -44,9 +47,17 @@ declare class PlaybackBar extends Plugin<HTMLDivElement, IPlaybackBarEventMap> {
44
47
  private svgSound100;
45
48
  private svgSound;
46
49
  private svgFullscreen;
50
+ private optionsValues;
51
+ private currenSpeed;
52
+ private optionsContent;
53
+ private onOptionChange;
54
+ private globalClick;
55
+ private globalClickTemp;
56
+ private toggleOptionsContent;
47
57
  private svgOptions;
58
+ private playSpeed;
48
59
  private svgDownload;
49
- private isPlaying;
60
+ isPlaying(): boolean;
50
61
  private controls;
51
62
  private display;
52
63
  getPlaySlice(): [number, number];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@besovideo/webrtc-player",
3
- "version": "0.8.80",
3
+ "version": "0.8.82",
4
4
  "description": "@besovideo/webrtc-player desc",
5
5
  "type": "module",
6
6
  "types": "./dist/types/main.d.ts",