Browse Source

更新流媒体前端

yanglzh 10 months ago
parent
commit
32a58dea8e
59 changed files with 652 additions and 14 deletions
  1. 0 0
      public/plugin/media/assets/Card-a2373807.js
  2. 0 0
      public/plugin/media/assets/Group-4b9c63de.js
  3. 0 0
      public/plugin/media/assets/LeftOutlined-c2f0c6f7.js
  4. 0 0
      public/plugin/media/assets/_mock-server-3b101704.js
  5. 0 0
      public/plugin/media/assets/detail-3defd323.js
  6. 1 1
      public/plugin/media/assets/device-8fe195c3.js
  7. 0 0
      public/plugin/media/assets/en-e976cadc.js
  8. 0 0
      public/plugin/media/assets/formily-ab0cfed0.js
  9. 1 1
      public/plugin/media/assets/gb28281-0e7cb96f.js
  10. 1 1
      public/plugin/media/assets/global-a9adb082.js
  11. 0 0
      public/plugin/media/assets/hard-disk.vue_vue_type_script_setup_true_lang-7f01c929.js
  12. 0 0
      public/plugin/media/assets/index-064324fc.js
  13. 0 0
      public/plugin/media/assets/index-0b9916a9.js
  14. 0 0
      public/plugin/media/assets/index-0c0db1fb.js
  15. 0 0
      public/plugin/media/assets/index-17c9db41.js
  16. 0 0
      public/plugin/media/assets/index-18fd9e20.js
  17. 0 0
      public/plugin/media/assets/index-4947d8ca.js
  18. 0 0
      public/plugin/media/assets/index-5495ae27.js
  19. 0 0
      public/plugin/media/assets/index-55a9b941.js
  20. 0 0
      public/plugin/media/assets/index-57eef813.js
  21. 0 0
      public/plugin/media/assets/index-5deb1b0e.js
  22. 0 0
      public/plugin/media/assets/index-5e6b6a13.js
  23. 0 0
      public/plugin/media/assets/index-7706f479.js
  24. 1 1
      public/plugin/media/assets/index-80aef772.js
  25. 1 1
      public/plugin/media/assets/index-85932e3c.js
  26. 0 0
      public/plugin/media/assets/index-8775e434.js
  27. 0 0
      public/plugin/media/assets/index-8c7c112a.js
  28. 0 0
      public/plugin/media/assets/index-8c9ca932.js
  29. 0 0
      public/plugin/media/assets/index-a04e20c2.js
  30. 0 0
      public/plugin/media/assets/index-b026f53e.js
  31. 1 1
      public/plugin/media/assets/index-b58a4415.js
  32. 0 0
      public/plugin/media/assets/index-bded74ca.js
  33. 0 0
      public/plugin/media/assets/index-bf402a68.js
  34. 0 0
      public/plugin/media/assets/index-bff35cc7.js
  35. 0 0
      public/plugin/media/assets/index-custom-5ad7b1f4.js
  36. 0 0
      public/plugin/media/assets/index-f8c2f725.js
  37. 1 1
      public/plugin/media/assets/index-fa3cd3df.js
  38. 1 1
      public/plugin/media/assets/index.vue_vue_type_script_setup_true_lang-99603737.js
  39. 0 0
      public/plugin/media/assets/index.vue_vue_type_script_setup_true_lang-c37e8361.js
  40. 0 0
      public/plugin/media/assets/jb4-1ec71f75.js
  41. 1 0
      public/plugin/media/assets/jb4-3f26c69d.js
  42. 1 0
      public/plugin/media/assets/jb4-ae804964.css
  43. 0 1
      public/plugin/media/assets/jb4-edaf754e.css
  44. 1 1
      public/plugin/media/assets/scroll-tip.vue_vue_type_script_setup_true_lang-66fcefe4.js
  45. 1 1
      public/plugin/media/assets/scrollTo-b1ea1992.js
  46. 1 1
      public/plugin/media/assets/state-f330b388.js
  47. 0 0
      public/plugin/media/assets/useFlexGapSupport-4be2e6ee.js
  48. 1 1
      public/plugin/media/assets/useModal-efb23566.js
  49. 0 0
      public/plugin/media/assets/usePlay-06c84877.js
  50. 0 0
      public/plugin/media/assets/usePlay-b5cfb573.js
  51. 0 0
      public/plugin/media/assets/usePlay-d4a21c71.js
  52. 0 0
      public/plugin/media/assets/usePlay-fd37a6ea.js
  53. 1 1
      public/plugin/media/assets/utils-25f43beb.js
  54. 0 0
      public/plugin/media/assets/zh_CN-b8180be4.js
  55. 0 0
      public/plugin/media/decoder.js
  56. BIN
      public/plugin/media/decoder.wasm
  57. 0 0
      public/plugin/media/index.html
  58. 637 0
      public/plugin/media/jessibuca.d.ts
  59. 0 0
      public/plugin/media/jessibuca.js

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/Card-a2373807.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/Group-4b9c63de.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/LeftOutlined-c2f0c6f7.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/_mock-server-3b101704.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/detail-3defd323.js


+ 1 - 1
public/plugin/media/assets/device-8bc1f9f0.js → public/plugin/media/assets/device-8fe195c3.js

@@ -1 +1 @@
-import"./index-5b047fbb.js";import{O as v}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{b as o}from"./gb28281-df50a3f9.js";const I=v({id:"app-device-store",state:()=>({deviceList:[],deviceTree:[],deviceArr:[]}),actions:{setDeviceList(e){this.deviceList=e},setDeviceTree(e){this.deviceTree=e},setDeviceArr(e){this.deviceArr=e},async fetchDeviceList(){const e=await o();e.length>1&&e.sort((t,r)=>Number(t.ID)-Number(r.ID)),e.map(t=>{var r;return((r=t.Channels)==null?void 0:r.length)>1&&t.Channels.sort((s,n)=>Number(s.Name)-Number(n.Name)),t}),this.setDeviceList(e||[])},async fetchdeviceTree(){const e=await o();e.length>1&&e.sort((s,n)=>Number(s.ID)-Number(n.ID)),e.map(s=>{var n;return((n=s.Channels)==null?void 0:n.length)>1&&s.Channels.sort((c,i)=>Number(c.Name)-Number(i.Name)),s});const t=h(e)||[];this.setDeviceTree(t);const r=u(t);this.setDeviceArr(r)}}});function h(e){const t=[];return e!=null&&e.length&&e.map(({Channels:r,ID:s,Name:n})=>{t.push({title:n||s,key:s,ID:s,DeviceName:n,children:l(r,{ID:s,DeviceName:n})})}),t}const l=(e,t)=>{const r=[];if(e!=null&&e.length){const s=JSON.parse(JSON.stringify(e)),n=s.reduce((c,i)=>(i.children=[],c[i.DeviceID]=i,c),{});s.forEach(c=>{const i={title:c.Name||c.DeviceID,key:`${c.DeviceID}-${c.ParentID||t.ID}`,children:[],Name:c.Name,DeviceID:c.DeviceID,ID:t.ID,DeviceName:t.DeviceName,LiveStatus:c==null?void 0:c.LiveStatus,disabled:!1};let D=null;r!=null&&r.length&&!(D=r.filter(a=>a.DeviceID===a.ParentID)[0])&&(D=n[c.DeviceID]),D?(D.children.push(i),(!r.length||!r.some(a=>a.DeviceID===D.DeviceID))&&r.push(i)):r.push(i)})}return r};function u(e){return e.reduce((t,r)=>{const{children:s=[],...n}=r;return t.concat([{...n}],u(s))},[])}export{I as u};
+import"./index-a04e20c2.js";import{O as v}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{b as o}from"./gb28281-0e7cb96f.js";const I=v({id:"app-device-store",state:()=>({deviceList:[],deviceTree:[],deviceArr:[]}),actions:{setDeviceList(e){this.deviceList=e},setDeviceTree(e){this.deviceTree=e},setDeviceArr(e){this.deviceArr=e},async fetchDeviceList(){const e=await o();e.length>1&&e.sort((t,r)=>Number(t.ID)-Number(r.ID)),e.map(t=>{var r;return((r=t.Channels)==null?void 0:r.length)>1&&t.Channels.sort((s,n)=>Number(s.Name)-Number(n.Name)),t}),this.setDeviceList(e||[])},async fetchdeviceTree(){const e=await o();e.length>1&&e.sort((s,n)=>Number(s.ID)-Number(n.ID)),e.map(s=>{var n;return((n=s.Channels)==null?void 0:n.length)>1&&s.Channels.sort((c,i)=>Number(c.Name)-Number(i.Name)),s});const t=h(e)||[];this.setDeviceTree(t);const r=u(t);this.setDeviceArr(r)}}});function h(e){const t=[];return e!=null&&e.length&&e.map(({Channels:r,ID:s,Name:n})=>{t.push({title:n||s,key:s,ID:s,DeviceName:n,children:l(r,{ID:s,DeviceName:n})})}),t}const l=(e,t)=>{const r=[];if(e!=null&&e.length){const s=JSON.parse(JSON.stringify(e)),n=s.reduce((c,i)=>(i.children=[],c[i.DeviceID]=i,c),{});s.forEach(c=>{const i={title:c.Name||c.DeviceID,key:`${c.DeviceID}-${c.ParentID||t.ID}`,children:[],Name:c.Name,DeviceID:c.DeviceID,ID:t.ID,DeviceName:t.DeviceName,LiveStatus:c==null?void 0:c.LiveStatus,disabled:!1};let D=null;r!=null&&r.length&&!(D=r.filter(a=>a.DeviceID===a.ParentID)[0])&&(D=n[c.DeviceID]),D?(D.children.push(i),(!r.length||!r.some(a=>a.DeviceID===D.DeviceID))&&r.push(i)):r.push(i)})}return r};function u(e){return e.reduce((t,r)=>{const{children:s=[],...n}=r;return t.concat([{...n}],u(s))},[])}export{I as u};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/en-e976cadc.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/formily-ab0cfed0.js


+ 1 - 1
public/plugin/media/assets/gb28281-df50a3f9.js → public/plugin/media/assets/gb28281-0e7cb96f.js

@@ -1 +1 @@
-import"./dayjs-4778c158.js";import{au as s,av as t}from"./index-5b047fbb.js";const r=s({requestOptions:{apiUrl:()=>t("gb28181")}});function a(){return r.get({url:"/list"},{errorMessageMode:"message"})}function g(e){return r.get({url:"/invite",params:e},{errorMessageMode:"none"})}function i(e){return r.get({url:"/bye",params:e},{errorMessageMode:"message"})}function u(e){return r.get({url:"/records",params:e},{errorMessageMode:"message"})}function c(e){return r.get({url:"/control",params:e},{errorMessageMode:"message"})}export{c as a,a as b,u as g,g as i,i as s};
+import"./dayjs-4778c158.js";import{au as s,av as t}from"./index-a04e20c2.js";const r=s({requestOptions:{apiUrl:()=>t("gb28181")}});function a(){return r.get({url:"/list"},{errorMessageMode:"message"})}function g(e){return r.get({url:"/invite",params:e},{errorMessageMode:"none"})}function i(e){return r.get({url:"/bye",params:e},{errorMessageMode:"message"})}function u(e){return r.get({url:"/records",params:e},{errorMessageMode:"message"})}function c(e){return r.get({url:"/control",params:e},{errorMessageMode:"message"})}export{c as a,a as b,u as g,g as i,i as s};

+ 1 - 1
public/plugin/media/assets/global-099f16b4.js → public/plugin/media/assets/global-a9adb082.js

@@ -1 +1 @@
-import"./dayjs-4778c158.js";import{bS as s,av as a,ag as n}from"./index-5b047fbb.js";function i(){return s.get({url:"/sysinfo"},{errorMessageMode:"message"})}let r;function m(t){r=r||new EventSource(a()+"/summary");try{r.onmessage=e=>{if(!e.data)return{};t(JSON.parse(e.data))},r.onerror=e=>{throw e}}catch(e){n.error(`Summary EventSource failed: ${e}`)}return o}function o(){r==null||r.close(),r=null}function c(t){return s.get({url:"/stream",params:t},{errorMessageMode:"message"})}function f(){return s.get({url:"/plugins"},{errorMessageMode:"message"})}function l(t={name:"",formily:"1"}){return s.get({url:"/getconfig",params:t},{errorMessageMode:"message"})}function d(t,e){return s.post({url:"/updateconfig",params:t,data:e},{errorMessageMode:"message"})}export{l as a,i as b,m as c,c as d,f as g,d as u};
+import"./dayjs-4778c158.js";import{bR as s,av as a,ag as n}from"./index-a04e20c2.js";function i(){return s.get({url:"/sysinfo"},{errorMessageMode:"message"})}let r;function m(t){r=r||new EventSource(a()+"/summary");try{r.onmessage=e=>{if(!e.data)return{};t(JSON.parse(e.data))},r.onerror=e=>{throw e}}catch(e){n.error(`Summary EventSource failed: ${e}`)}return o}function o(){r==null||r.close(),r=null}function c(t){return s.get({url:"/stream",params:t},{errorMessageMode:"message"})}function f(){return s.get({url:"/plugins"},{errorMessageMode:"message"})}function l(t={name:"",formily:"1"}){return s.get({url:"/getconfig",params:t},{errorMessageMode:"message"})}function d(t,e){return s.post({url:"/updateconfig",params:t,data:e},{errorMessageMode:"message"})}export{l as a,i as b,m as c,c as d,f as g,d as u};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/hard-disk.vue_vue_type_script_setup_true_lang-7f01c929.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-064324fc.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-0b9916a9.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-0c0db1fb.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-17c9db41.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-18fd9e20.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-4947d8ca.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-5495ae27.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-55a9b941.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-57eef813.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-5deb1b0e.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-5e6b6a13.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-7706f479.js


+ 1 - 1
public/plugin/media/assets/index-07f0ea42.js → public/plugin/media/assets/index-80aef772.js

@@ -1,2 +1,2 @@
-import{bv as c,u as p,b as d}from"./index-5b047fbb.js";import{r as m,a as n,R as v}from"./Group-5aa2801a.js";import{d as b,c as y,f as C}from"./vue-18ee037d.js";function _(e,f){var r=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=c(e))||f&&e&&typeof e.length=="number"){r&&(e=r);var i=0,l=function(){};return{s:l,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(a){throw a},f:l}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
+import{bv as c,u as p,b as d}from"./index-a04e20c2.js";import{r as m,a as n,R as v}from"./Group-4b9c63de.js";import{d as b,c as y,f as C}from"./vue-18ee037d.js";function _(e,f){var r=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=c(e))||f&&e&&typeof e.length=="number"){r&&(e=r);var i=0,l=function(){};return{s:l,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(a){throw a},f:l}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var s=!0,o=!1,u;return{s:function(){r=r.call(e)},n:function(){var a=r.next();return s=a.done,a},e:function(a){o=!0,u=a},f:function(){try{!s&&r.return!=null&&r.return()}finally{if(o)throw u}}}}const h=b({compatConfig:{MODE:3},name:"ARadioButton",props:m(),setup:function(f,r){var i=r.slots,l=p("radio-button",f),s=l.prefixCls,o=y("radioGroupContext",void 0);return function(){var u,t=d(d({},f),{},{prefixCls:s.value});return o&&(t.onChange=o.onRadioChange,t.checked=t.value===o.stateValue.value,t.disabled=t.disabled||o.props.disabled),C(n,t,{default:function(){return[(u=i.default)===null||u===void 0?void 0:u.call(i)]}})}}});n.Group=v;n.Button=h;n.install=function(e){return e.component(n.name,n),e.component(n.Group.name,n.Group),e.component(n.Button.name,n.Button),e};export{h as R,_};
 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var s=!0,o=!1,u;return{s:function(){r=r.call(e)},n:function(){var a=r.next();return s=a.done,a},e:function(a){o=!0,u=a},f:function(){try{!s&&r.return!=null&&r.return()}finally{if(o)throw u}}}}const h=b({compatConfig:{MODE:3},name:"ARadioButton",props:m(),setup:function(f,r){var i=r.slots,l=p("radio-button",f),s=l.prefixCls,o=y("radioGroupContext",void 0);return function(){var u,t=d(d({},f),{},{prefixCls:s.value});return o&&(t.onChange=o.onRadioChange,t.checked=t.value===o.stateValue.value,t.disabled=t.disabled||o.props.disabled),C(n,t,{default:function(){return[(u=i.default)===null||u===void 0?void 0:u.call(i)]}})}}});n.Group=v;n.Button=h;n.install=function(e){return e.component(n.name,n),e.component(n.Group.name,n.Group),e.component(n.Button.name,n.Button),e};export{h as R,_};

+ 1 - 1
public/plugin/media/assets/index-d6662ccc.js → public/plugin/media/assets/index-85932e3c.js

@@ -1 +1 @@
-import{l as p,u as S,d as a,b as d,f as D}from"./index-5b047fbb.js";import{d as _,e as r,f as v}from"./vue-18ee037d.js";var b=function(){return{prefixCls:String,type:{type:String,default:"horizontal"},dashed:{type:Boolean,default:!1},orientation:{type:String,default:"center"},plain:{type:Boolean,default:!1},orientationMargin:[String,Number]}},P=_({compatConfig:{MODE:3},name:"ADivider",props:b(),setup:function(n,g){var l=g.slots,u=S("divider",n),o=u.prefixCls,h=u.direction,c=r(function(){return n.orientation==="left"&&n.orientationMargin!=null}),f=r(function(){return n.orientation==="right"&&n.orientationMargin!=null}),m=r(function(){var t,i=n.type,x=n.dashed,M=n.plain,e=o.value;return t={},a(t,e,!0),a(t,"".concat(e,"-").concat(i),!0),a(t,"".concat(e,"-dashed"),!!x),a(t,"".concat(e,"-plain"),!!M),a(t,"".concat(e,"-rtl"),h.value==="rtl"),a(t,"".concat(e,"-no-default-orientation-margin-left"),c.value),a(t,"".concat(e,"-no-default-orientation-margin-right"),f.value),t}),y=r(function(){var t=typeof n.orientationMargin=="number"?"".concat(n.orientationMargin,"px"):n.orientationMargin;return d(d({},c.value&&{marginLeft:t}),f.value&&{marginRight:t})}),C=r(function(){return n.orientation.length>0?"-"+n.orientation:n.orientation});return function(){var t,i=D((t=l.default)===null||t===void 0?void 0:t.call(l));return v("div",{class:[m.value,i.length?"".concat(o.value,"-with-text ").concat(o.value,"-with-text").concat(C.value):""],role:"separator"},[i.length?v("span",{class:"".concat(o.value,"-inner-text"),style:y.value},[i]):null])}}});const I=p(P);export{I as D};
+import{l as p,u as S,d as a,b as d,f as D}from"./index-a04e20c2.js";import{d as _,e as r,f as v}from"./vue-18ee037d.js";var b=function(){return{prefixCls:String,type:{type:String,default:"horizontal"},dashed:{type:Boolean,default:!1},orientation:{type:String,default:"center"},plain:{type:Boolean,default:!1},orientationMargin:[String,Number]}},P=_({compatConfig:{MODE:3},name:"ADivider",props:b(),setup:function(n,g){var l=g.slots,u=S("divider",n),o=u.prefixCls,h=u.direction,c=r(function(){return n.orientation==="left"&&n.orientationMargin!=null}),f=r(function(){return n.orientation==="right"&&n.orientationMargin!=null}),m=r(function(){var t,i=n.type,x=n.dashed,M=n.plain,e=o.value;return t={},a(t,e,!0),a(t,"".concat(e,"-").concat(i),!0),a(t,"".concat(e,"-dashed"),!!x),a(t,"".concat(e,"-plain"),!!M),a(t,"".concat(e,"-rtl"),h.value==="rtl"),a(t,"".concat(e,"-no-default-orientation-margin-left"),c.value),a(t,"".concat(e,"-no-default-orientation-margin-right"),f.value),t}),y=r(function(){var t=typeof n.orientationMargin=="number"?"".concat(n.orientationMargin,"px"):n.orientationMargin;return d(d({},c.value&&{marginLeft:t}),f.value&&{marginRight:t})}),C=r(function(){return n.orientation.length>0?"-"+n.orientation:n.orientation});return function(){var t,i=D((t=l.default)===null||t===void 0?void 0:t.call(l));return v("div",{class:[m.value,i.length?"".concat(o.value,"-with-text ").concat(o.value,"-with-text").concat(C.value):""],role:"separator"},[i.length?v("span",{class:"".concat(o.value,"-inner-text"),style:y.value},[i]):null])}}});const I=p(P);export{I as D};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-8775e434.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-8c7c112a.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-8c9ca932.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-a04e20c2.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-b026f53e.js


+ 1 - 1
public/plugin/media/assets/index-3be14004.js → public/plugin/media/assets/index-b58a4415.js

@@ -1 +1 @@
-import{d as p,S as f,e as o,u as t,U as u,V as d,a8 as _,W as m,X as x}from"./vue-18ee037d.js";import{N as g}from"./index-5b047fbb.js";const h=["xlink:href"],y=p({__name:"index",props:{prefix:{type:String,default:"icon"},icon:{type:String,required:!0},size:{type:[Number,String],default:16},infinite:{type:Boolean,default:!1}},setup(i){const s=i,r=f(),a=o(()=>`#${s.prefix}-${s.icon}`),c=o(()=>{const e=["svg-icon",t(r).class];return s.infinite&&e.push("svg-icon__infinite"),e}),l=o(()=>{const{size:e}=s,n=`${`${e}`.replace("px","")}px`;return{width:n,height:n}});return(e,n)=>(u(),d("svg",{class:m(t(c)),style:x(t(l)),"aria-hidden":"true"},[_("use",{"xlink:href":t(a)},null,8,h)],6))}}),z=g(y,[["__scopeId","data-v-2cfda6f1"]]);export{z as S};
+import{d as p,S as f,e as o,u as t,U as u,V as d,a8 as _,W as m,X as x}from"./vue-18ee037d.js";import{N as g}from"./index-a04e20c2.js";const h=["xlink:href"],y=p({__name:"index",props:{prefix:{type:String,default:"icon"},icon:{type:String,required:!0},size:{type:[Number,String],default:16},infinite:{type:Boolean,default:!1}},setup(i){const s=i,r=f(),a=o(()=>`#${s.prefix}-${s.icon}`),c=o(()=>{const e=["svg-icon",t(r).class];return s.infinite&&e.push("svg-icon__infinite"),e}),l=o(()=>{const{size:e}=s,n=`${`${e}`.replace("px","")}px`;return{width:n,height:n}});return(e,n)=>(u(),d("svg",{class:m(t(c)),style:x(t(l)),"aria-hidden":"true"},[_("use",{"xlink:href":t(a)},null,8,h)],6))}}),z=g(y,[["__scopeId","data-v-2cfda6f1"]]);export{z as S};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-bded74ca.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-bf402a68.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-bff35cc7.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-custom-5ad7b1f4.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index-f8c2f725.js


+ 1 - 1
public/plugin/media/assets/index-cda51ceb.js → public/plugin/media/assets/index-fa3cd3df.js

@@ -1 +1 @@
-import{l as D,j as _,b as o,bL as h,u as A,bM as T,o as j,a3 as E,P as m,bN as I,a$ as g}from"./index-5b047fbb.js";import{d as O,k as R,e as z,f as i,F}from"./vue-18ee037d.js";var L=function(){return o(o({},I()),{},{content:m.any,title:m.any})},M=O({compatConfig:{MODE:3},name:"APopover",props:_(L(),o(o({},h()),{},{trigger:"hover",transitionName:"zoom-big",placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup:function(a,p){var y=p.expose,n=p.slots,v=R();y({getPopupDomNode:function(){var t,e;return(t=v.value)===null||t===void 0||(e=t.getPopupDomNode)===null||e===void 0?void 0:e.call(t)}});var u=A("popover",a),l=u.prefixCls,C=u.configProvider,N=z(function(){return C.getPrefixCls()}),$=function(){var t,e,c=a.title,r=c===void 0?g((t=n.title)===null||t===void 0?void 0:t.call(n)):c,f=a.content,s=f===void 0?g((e=n.content)===null||e===void 0?void 0:e.call(n)):f,d=!!(Array.isArray(r)?r.length:r),x=!!(Array.isArray(s)?s.length:r);if(!(!d&&!x))return i(F,null,[d&&i("div",{class:"".concat(l.value,"-title")},[r]),i("div",{class:"".concat(l.value,"-inner-content")},[s])])};return function(){return i(E,o(o({},j(a,["title","content"])),{},{prefixCls:l.value,ref:v,transitionName:T(N.value,"zoom-big",a.transitionName)}),{title:$,default:n.default})}}});const S=D(M);export{S as P};
+import{l as N,j as _,b as o,bK as h,u as A,bL as T,o as j,a3 as E,P as m,bM as I,a$ as g}from"./index-a04e20c2.js";import{d as O,k as R,e as z,f as i,F}from"./vue-18ee037d.js";var L=function(){return o(o({},I()),{},{content:m.any,title:m.any})},M=O({compatConfig:{MODE:3},name:"APopover",props:_(L(),o(o({},h()),{},{trigger:"hover",transitionName:"zoom-big",placement:"top",mouseEnterDelay:.1,mouseLeaveDelay:.1})),setup:function(a,p){var y=p.expose,n=p.slots,v=R();y({getPopupDomNode:function(){var t,e;return(t=v.value)===null||t===void 0||(e=t.getPopupDomNode)===null||e===void 0?void 0:e.call(t)}});var u=A("popover",a),l=u.prefixCls,C=u.configProvider,$=z(function(){return C.getPrefixCls()}),b=function(){var t,e,c=a.title,r=c===void 0?g((t=n.title)===null||t===void 0?void 0:t.call(n)):c,f=a.content,s=f===void 0?g((e=n.content)===null||e===void 0?void 0:e.call(n)):f,d=!!(Array.isArray(r)?r.length:r),D=!!(Array.isArray(s)?s.length:r);if(!(!d&&!D))return i(F,null,[d&&i("div",{class:"".concat(l.value,"-title")},[r]),i("div",{class:"".concat(l.value,"-inner-content")},[s])])};return function(){return i(E,o(o({},j(a,["title","content"])),{},{prefixCls:l.value,ref:v,transitionName:T($.value,"zoom-big",a.transitionName)}),{title:b,default:n.default})}}});const K=N(M);export{K as P};

+ 1 - 1
public/plugin/media/assets/index.vue_vue_type_script_setup_true_lang-d273a2b7.js → public/plugin/media/assets/index.vue_vue_type_script_setup_true_lang-99603737.js

@@ -1 +1 @@
-import{d as b,k as g,w as _,U as v,V as M,a4 as Y}from"./vue-18ee037d.js";import{d as O}from"./dayjs-4778c158.js";import{bO as E,bP as N,aj as S,bQ as h,bR as y}from"./index-5b047fbb.js";var j="[object Number]";function w(s){return typeof s=="number"||E(s)&&N(s)==j}const A="YYYY-MM-DD HH:mm:ss",H="YYYY-MM-DD",i=O,R=(s,r=A)=>i(s).format(r),k=(s,r=H)=>i(s).format(r),x=b({__name:"index",props:{value:{type:[Number,String]},step:{type:Number,default:60},mode:{type:String,default:"relative",validator:s=>["date","datetime","relative"].includes(s)}},setup(s){const r=s,l=1e3,f=l*60,m=f*60,d=m*24,c=g("");S(T,r.step*l),_(()=>r.value,()=>{T()},{immediate:!0});function p(){const{value:e}=r;let a=0;if(w(e)){const o=e.toString().length>10?e:e*1e3;a=new Date(o).getTime()}else h(e)?a=new Date(e).getTime():y(e)&&(a=e.getTime());return a}function T(){const{mode:e,value:a}=r,o=p();e==="relative"?c.value=D(o):e==="datetime"?c.value=R(a):e==="date"&&(c.value=k(a))}function D(e){const a=new Date().getTime(),o=i(e).isBefore(a);let t=a-e;o||(t=-t);let n="",u=o?"前":"后";return t<l?n="刚刚":t<f?n=parseInt(`${t/l}`)+"秒"+u:t>=f&&t<m?n=Math.floor(t/f)+"分钟"+u:t>=m&&t<d?n=Math.floor(t/m)+"小时"+u:t>=d&&t<262386e4?n=Math.floor(t/d)+"天"+u:t>=262386e4&&t<=3156786e4&&o?n=i(e).format("MM-DD-HH-mm"):n=i(e).format("YYYY"),n}return(e,a)=>(v(),M("span",null,Y(c.value),1))}});export{x as _};
+import{d as b,k as g,w as _,U as v,V as M,a4 as Y}from"./vue-18ee037d.js";import{d as N}from"./dayjs-4778c158.js";import{bN as O,bO as E,aj as S,bP as h,bQ as y}from"./index-a04e20c2.js";var j="[object Number]";function w(s){return typeof s=="number"||O(s)&&E(s)==j}const A="YYYY-MM-DD HH:mm:ss",H="YYYY-MM-DD",i=N,k=(s,r=A)=>i(s).format(r),B=(s,r=H)=>i(s).format(r),x=b({__name:"index",props:{value:{type:[Number,String]},step:{type:Number,default:60},mode:{type:String,default:"relative",validator:s=>["date","datetime","relative"].includes(s)}},setup(s){const r=s,l=1e3,f=l*60,m=f*60,d=m*24,c=g("");S(T,r.step*l),_(()=>r.value,()=>{T()},{immediate:!0});function p(){const{value:e}=r;let a=0;if(w(e)){const o=e.toString().length>10?e:e*1e3;a=new Date(o).getTime()}else h(e)?a=new Date(e).getTime():y(e)&&(a=e.getTime());return a}function T(){const{mode:e,value:a}=r,o=p();e==="relative"?c.value=D(o):e==="datetime"?c.value=k(a):e==="date"&&(c.value=B(a))}function D(e){const a=new Date().getTime(),o=i(e).isBefore(a);let t=a-e;o||(t=-t);let n="",u=o?"前":"后";return t<l?n="刚刚":t<f?n=parseInt(`${t/l}`)+"秒"+u:t>=f&&t<m?n=Math.floor(t/f)+"分钟"+u:t>=m&&t<d?n=Math.floor(t/m)+"小时"+u:t>=d&&t<262386e4?n=Math.floor(t/d)+"天"+u:t>=262386e4&&t<=3156786e4&&o?n=i(e).format("MM-DD-HH-mm"):n=i(e).format("YYYY"),n}return(e,a)=>(v(),M("span",null,Y(c.value),1))}});export{x as _};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/index.vue_vue_type_script_setup_true_lang-c37e8361.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/jb4-1ec71f75.js


+ 1 - 0
public/plugin/media/assets/jb4-3f26c69d.js

@@ -0,0 +1 @@
+import{d,k as r,o as f,w as p,x as _,U as i,V as m,a8 as c,$ as v,u as h,a3 as y,af as g}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{af as b,av as k,N as B}from"./index-a04e20c2.js";const P={class:"video-container"},w={class:"container-shell"},x=d({__name:"jb4",props:{videoShadow:null,streamPath:null,format:null},setup(u){const a=u,t=r(!0),o=r(null);let e=null;const l=()=>{o.value&&(e=new window.Jessibuca({container:o.value,videoBuffer:.2,isResize:!1,text:"",loadingText:"加载中...",debug:!1,hotKey:!1,autoWasm:!0,heartTimeout:5,timeout:10,supportDblclickFullscreen:!1}),e.on("load",()=>{t.value=!1}),e.on("error",()=>{t.value=!1}),e.play(`${k("hdl","")}/${a.streamPath}.flv`))};f(()=>{a.streamPath,a.streamPath&&l()}),p(()=>a.streamPath,s=>{s&&(n(),l())}),_(n);function n(){e&&(e.destroy(),e=null)}return(s,V)=>(i(),m("div",P,[c("div",w,[c("div",{ref_key:"playerContainer",ref:o,class:"player-container"},null,512),t.value?(i(),v(h(b),{key:0,class:"loading",size:"large"})):y("",!0),g(s.$slots,"default",{},void 0,!0)])]))}});const S=B(x,[["__scopeId","data-v-5ebd9086"]]);export{S as V};

+ 1 - 0
public/plugin/media/assets/jb4-ae804964.css

@@ -0,0 +1 @@
+.video-container[data-v-5ebd9086]{width:100%;height:100%;position:relative;display:flex;justify-content:center;align-items:center}.video-container .container-shell[data-v-5ebd9086]{width:100%;height:100%;position:relative;background:rgba(13,14,27,.7);border-radius:6px;overflow:hidden}.video-container .player-container[data-v-5ebd9086]{height:100%!important;min-height:56.25%!important}.video-container .player-container[data-v-5ebd9086]{width:100%;padding-bottom:56.25%}.video-container .loading[data-v-5ebd9086]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:99}.dark .container-shell[data-v-5ebd9086]{box-shadow:4px 4px 8px 4px #2f2f2f}

+ 0 - 1
public/plugin/media/assets/jb4-edaf754e.css

@@ -1 +0,0 @@
-.box[data-v-f7af0892],.video-container[data-v-f7af0892]{border-radius:6px;width:100%;height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.video-container .video[data-v-f7af0892]{width:100%;-o-object-fit:contain;object-fit:contain;border-radius:6px}.video-container .video.videoShadow[data-v-f7af0892]{box-shadow:4px 4px 8px 4px #dedede}.video-container .loading[data-v-f7af0892]{position:absolute;bottom:calc(50% - 16px);left:calc(50% - 11px);z-index:99}.dark .video.videoShadow[data-v-f7af0892]{box-shadow:4px 4px 8px 4px #2f2f2f}

+ 1 - 1
public/plugin/media/assets/scroll-tip.vue_vue_type_script_setup_true_lang-b1e0f17f.js → public/plugin/media/assets/scroll-tip.vue_vue_type_script_setup_true_lang-66fcefe4.js

@@ -1 +1 @@
-import{d as s,u as n,U as a,V as i,f as c,E as r,a3 as d}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{bI as p,J as m}from"./index-5b047fbb.js";const f={key:0},b=s({__name:"scroll-tip",props:{windowWidth:{type:Number,default:1/0}},setup(e){const t=e,{width:o}=p();return(u,_)=>n(o)<t.windowWidth?(a(),i("p",f,[c(m,{icon:"ic:baseline-tips-and-updates",class:"v-text-bottom"}),r(" 当列表出现横向滚动条时,windows可通过【按住shift键+鼠标滚轮】mac通过【在鼠标上左右滑动】来快速查看 ")])):d("",!0)}});export{b as _};
+import{d as s,u as n,U as a,V as i,f as c,E as r,a3 as d}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{bH as p,J as m}from"./index-a04e20c2.js";const f={key:0},b=s({__name:"scroll-tip",props:{windowWidth:{type:Number,default:1/0}},setup(e){const t=e,{width:o}=p();return(u,_)=>n(o)<t.windowWidth?(a(),i("p",f,[c(m,{icon:"ic:baseline-tips-and-updates",class:"v-text-bottom"}),r(" 当列表出现横向滚动条时,windows可通过【按住shift键+鼠标滚轮】mac通过【在鼠标上左右滑动】来快速查看 ")])):d("",!0)}});export{b as _};

+ 1 - 1
public/plugin/media/assets/scrollTo-e7b1cc04.js → public/plugin/media/assets/scrollTo-b1ea1992.js

@@ -1 +1 @@
-import{an as s}from"./index-5b047fbb.js";function c(n){return n!=null&&n===n.window}function T(n,e){if(typeof window>"u")return 0;var i=e?"scrollTop":"scrollLeft",o=0;if(c(n)?o=n[e?"pageYOffset":"pageXOffset"]:n instanceof Document?o=n.documentElement[i]:n&&(o=n[i]),n&&!c(n)&&typeof o!="number"){var r;o=(r=(n.ownerDocument||n).documentElement)===null||r===void 0?void 0:r[i]}return o}function D(n,e,i,o){var r=i-e;return n/=o/2,n<1?r/2*n*n*n+e:r/2*((n-=2)*n*n+2)+e}function O(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=e.getContainer,o=i===void 0?function(){return window}:i,r=e.callback,l=e.duration,u=l===void 0?450:l,a=o(),d=T(a,!0),m=Date.now(),p=function v(){var w=Date.now(),f=w-m,t=D(f>u?u:f,d,n,u);c(a)?a.scrollTo(window.pageXOffset,t):a instanceof HTMLDocument||a.constructor.name==="HTMLDocument"?a.documentElement.scrollTop=t:a.scrollTop=t,f<u?s(v):typeof r=="function"&&r()};s(p)}export{T as g,O as s};
+import{an as s}from"./index-a04e20c2.js";function c(n){return n!=null&&n===n.window}function T(n,e){if(typeof window>"u")return 0;var i=e?"scrollTop":"scrollLeft",o=0;if(c(n)?o=n[e?"pageYOffset":"pageXOffset"]:n instanceof Document?o=n.documentElement[i]:n&&(o=n[i]),n&&!c(n)&&typeof o!="number"){var r;o=(r=(n.ownerDocument||n).documentElement)===null||r===void 0?void 0:r[i]}return o}function D(n,e,i,o){var r=i-e;return n/=o/2,n<1?r/2*n*n*n+e:r/2*((n-=2)*n*n+2)+e}function O(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=e.getContainer,o=i===void 0?function(){return window}:i,r=e.callback,l=e.duration,u=l===void 0?450:l,a=o(),d=T(a,!0),m=Date.now(),p=function v(){var w=Date.now(),f=w-m,t=D(f>u?u:f,d,n,u);c(a)?a.scrollTo(window.pageXOffset,t):a instanceof HTMLDocument||a.constructor.name==="HTMLDocument"?a.documentElement.scrollTop=t:a.scrollTop=t,f<u?s(v):typeof r=="function"&&r()};s(p)}export{T as g,O as s};

+ 1 - 1
public/plugin/media/assets/state-2d0bd683.js → public/plugin/media/assets/state-f330b388.js

@@ -1 +1 @@
-import{f as o,E as t}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{J as l}from"./index-5b047fbb.js";const a={0:o("span",null,[o(l,{icon:"streamline:interface-page-controller-loading-half-progress-loading-load-half-wait-waiting",class:"v-text-bottom mr-8px"},null),t("等待发布者")]),1:o("span",null,[o(l,{icon:"guidance:waiting-room",class:"v-text-bottom mr-8px"},null),t("等待激活")]),2:o("span",null,[o(l,{icon:"ic:round-published-with-changes",color:"green",class:"v-text-bottom mr-8px"},null),t("发布中")]),3:o("span",null,[o(l,{icon:"bx:lock-open",class:"v-text-bottom mr-8px"},null),t("等待关闭")]),4:o("span",null,[o(l,{icon:"ic:baseline-lock",color:"red",class:"v-text-bottom mr-8px"},null),t("已关闭")])},c={0:"发布",1:"音视频轨道激活",2:"发布流长时间没有数据/长时间没有发布者发布流/等待关闭时间到",3:"发布者关闭",4:"主动关闭流",5:"最后一个订阅者离开",6:"第一个订阅者进入",7:"没有音视频轨道"},r=({state:n})=>a[n];export{c as H,r as S,a as s};
+import{f as o,E as t}from"./vue-18ee037d.js";import"./dayjs-4778c158.js";import{J as l}from"./index-a04e20c2.js";const a={0:o("span",null,[o(l,{icon:"streamline:interface-page-controller-loading-half-progress-loading-load-half-wait-waiting",class:"v-text-bottom mr-8px"},null),t("等待发布者")]),1:o("span",null,[o(l,{icon:"guidance:waiting-room",class:"v-text-bottom mr-8px"},null),t("等待激活")]),2:o("span",null,[o(l,{icon:"ic:round-published-with-changes",color:"green",class:"v-text-bottom mr-8px"},null),t("发布中")]),3:o("span",null,[o(l,{icon:"bx:lock-open",class:"v-text-bottom mr-8px"},null),t("等待关闭")]),4:o("span",null,[o(l,{icon:"ic:baseline-lock",color:"red",class:"v-text-bottom mr-8px"},null),t("已关闭")])},c={0:"发布",1:"音视频轨道激活",2:"发布流长时间没有数据/长时间没有发布者发布流/等待关闭时间到",3:"发布者关闭",4:"主动关闭流",5:"最后一个订阅者离开",6:"第一个订阅者进入",7:"没有音视频轨道"},r=({state:n})=>a[n];export{c as H,r as S,a as s};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/useFlexGapSupport-4be2e6ee.js


+ 1 - 1
public/plugin/media/assets/useModal-47f350af.js → public/plugin/media/assets/useModal-efb23566.js

@@ -1 +1 @@
-import{f as u,m as f}from"./vue-18ee037d.js";import{B as O,bJ as k,bK as v}from"./index-5b047fbb.js";import"./dayjs-4778c158.js";function L({content:l,props:x={},modalConfig:e}){const a=document.createDocumentFragment(),p=u(l,x),n=Object.create({okText:"确定",cancelText:"取消",visible:!0,...e});n.onCancel=async function(t){var r;await((r=e.onCancel)==null?void 0:r.call(e,t)),c()},n.onOk=async function(t){if(!(e.onOk instanceof Function)){c();return}const r=e.onOk(t);if(!(r instanceof Promise)){c();return}return o({confirmLoading:!0}),r.then(()=>{o({confirmLoading:!1}),c()}).catch(()=>{o({confirmLoading:!1})})};const{getDarkMode:b}=O(),s=u(k,n,()=>p),i=u(v,{prefixCls:b},()=>s);e.appContext&&(i.appContext=e.appContext);function o(t){Object.assign(s.component.props,t),s.component.update()}function c(){var t;n.visible=!1,o(n),(t=n==null?void 0:n.onClose)==null||t.call(n)}function m(){i&&f(null,a)}return f(i,a),{...p,close:c,destroy:m,update:o}}export{L as u};
+import{f as u,m as f}from"./vue-18ee037d.js";import{B as O,bI as k,bJ as v}from"./index-a04e20c2.js";import"./dayjs-4778c158.js";function L({content:l,props:x={},modalConfig:e}){const a=document.createDocumentFragment(),p=u(l,x),n=Object.create({okText:"确定",cancelText:"取消",visible:!0,...e});n.onCancel=async function(t){var r;await((r=e.onCancel)==null?void 0:r.call(e,t)),c()},n.onOk=async function(t){if(!(e.onOk instanceof Function)){c();return}const r=e.onOk(t);if(!(r instanceof Promise)){c();return}return o({confirmLoading:!0}),r.then(()=>{o({confirmLoading:!1}),c()}).catch(()=>{o({confirmLoading:!1})})};const{getDarkMode:b}=O(),s=u(k,n,()=>p),i=u(v,{prefixCls:b},()=>s);e.appContext&&(i.appContext=e.appContext);function o(t){Object.assign(s.component.props,t),s.component.update()}function c(){var t;n.visible=!1,o(n),(t=n==null?void 0:n.onClose)==null||t.call(n)}function m(){i&&f(null,a)}return f(i,a),{...p,close:c,destroy:m,update:o}}export{L as u};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/usePlay-06c84877.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/usePlay-b5cfb573.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/usePlay-d4a21c71.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/usePlay-fd37a6ea.js


+ 1 - 1
public/plugin/media/assets/utils-6e95c164.js → public/plugin/media/assets/utils-25f43beb.js

@@ -1 +1 @@
-import{ak as a}from"./index-5b047fbb.js";import"./vue-18ee037d.js";const u=()=>a.toDateString(new Date,"HH:ss:mm");function o(t,r){return t.length>=20&&t.shift(),t.push(r),t}const f=t=>Math.round(t/1024*100)/100,h=t=>t<1024?`${t} B`:(t=t/1024,t<1024?`${Math.round(t*100)/100} KB`:(t=t/1024,t<1024?`${Math.round(t*100)/100} MB`:`${Math.round(t*100)/100} GB`));export{u as a,o as b,h as c,f as g};
+import{ak as a}from"./index-a04e20c2.js";import"./vue-18ee037d.js";const u=()=>a.toDateString(new Date,"HH:ss:mm");function o(t,r){return t.length>=20&&t.shift(),t.push(r),t}const f=t=>Math.round(t/1024*100)/100,h=t=>t<1024?`${t} B`:(t=t/1024,t<1024?`${Math.round(t*100)/100} KB`:(t=t/1024,t<1024?`${Math.round(t*100)/100} MB`:`${Math.round(t*100)/100} GB`));export{u as a,o as b,h as c,f as g};

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/assets/zh_CN-b8180be4.js


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/decoder.js


BIN
public/plugin/media/decoder.wasm


File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/index.html


+ 637 - 0
public/plugin/media/jessibuca.d.ts

@@ -0,0 +1,637 @@
+declare namespace Jessibuca {
+
+    /** 超时信息 */
+    enum TIMEOUT {
+        /** 当play()的时候,如果没有数据返回 */
+        loadingTimeout = 'loadingTimeout',
+        /** 当播放过程中,如果超过timeout之后没有数据渲染 */
+        delayTimeout = 'delayTimeout',
+    }
+
+    /** 错误信息 */
+    enum ERROR {
+        /** 播放错误,url 为空的时候,调用 play 方法 */
+        playError = 'playError',
+        /** http 请求失败 */
+        fetchError = 'fetchError',
+        /** websocket 请求失败 */
+        websocketError = 'websocketError',
+        /** webcodecs 解码 h265 失败 */
+        webcodecsH265NotSupport = 'webcodecsH265NotSupport',
+        /** mediaSource 解码 h265 失败 */
+        mediaSourceH265NotSupport = 'mediaSourceH265NotSupport',
+        /** wasm 解码失败 */
+        wasmDecodeError = 'wasmDecodeError',
+    }
+
+    interface Config {
+        /**
+         * 播放器容器
+         * *  若为 string ,则底层调用的是 document.getElementById('id')
+         * */
+        container: HTMLElement | string;
+        /**
+         * 设置最大缓冲时长,单位秒,播放器会自动消除延迟
+         */
+        videoBuffer?: number;
+        /**
+         * worker地址
+         * *  默认引用的是根目录下面的decoder.js文件 ,decoder.js 与 decoder.wasm文件必须是放在同一个目录下面。 */
+        decoder?: string;
+        /**
+         * 是否不使用离屏模式(提升渲染能力)
+         */
+        forceNoOffscreen?: boolean;
+        /**
+         * 是否开启当页面的'visibilityState'变为'hidden'的时候,自动暂停播放。
+         */
+        hiddenAutoPause?: boolean;
+        /**
+         * 是否有音频,如果设置`false`,则不对音频数据解码,提升性能。
+         */
+        hasAudio?: boolean;
+        /**
+         * 设置旋转角度,只支持,0(默认),180,270 三个值
+         */
+        rotate?: boolean;
+        /**
+         * 1. 当为`true`的时候:视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边。 等同于 `setScaleMode(1)`
+         * 2. 当为`false`的时候:视频画面完全填充canvas区域,画面会被拉伸。等同于 `setScaleMode(0)`
+         */
+        isResize?: boolean;
+        /**
+         * 1. 当为`true`的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。等同于 `setScaleMode(2)`
+         */
+        isFullResize?: boolean;
+        /**
+         * 1. 当为`true`的时候:ws协议不检验是否以.flv为依据,进行协议解析。
+         */
+        isFlv?: boolean;
+        /**
+         * 是否开启控制台调试打
+         */
+        debug?: boolean;
+        /**
+         * 1. 设置超时时长, 单位秒
+         * 2. 在连接成功之前(loading)和播放中途(heart),如果超过设定时长无数据返回,则回调timeout事件
+         */
+        timeout?: number;
+        /**
+         * 1. 设置超时时长, 单位秒
+         * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件
+         */
+        heartTimeout?: number;
+        /**
+         * 1. 设置超时时长, 单位秒
+         * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件
+         */
+        loadingTimeout?: number;
+        /**
+         * 是否支持屏幕的双击事件,触发全屏,取消全屏事件
+         */
+        supportDblclickFullscreen?: boolean;
+        /**
+         * 是否显示网
+         */
+        showBandwidth?: boolean;
+        /**
+         * 配置操作按钮
+         */
+        operateBtns?: {
+            /** 是否显示全屏按钮 */
+            fullscreen?: boolean;
+            /** 是否显示截图按钮 */
+            screenshot?: boolean;
+            /** 是否显示播放暂停按钮 */
+            play?: boolean;
+            /** 是否显示声音按钮 */
+            audio?: boolean;
+            /** 是否显示录制按 */
+            record?: boolean;
+        };
+        /**
+         * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮
+         */
+        keepScreenOn?: boolean;
+        /**
+         * 是否开启声音,默认是关闭声音播放的
+         */
+        isNotMute?: boolean;
+        /**
+         * 加载过程中文案
+         */
+        loadingText?: string;
+        /**
+         * 背景图片
+         */
+        background?: string;
+        /**
+         * 是否开启MediaSource硬解码
+         * * 视频编码只支持H.264视频(Safari on iOS不支持)
+         * * 不支持 forceNoOffscreen 为 false (开启离屏渲染)
+         */
+        useMSE?: boolean;
+        /**
+         * 是否开启Webcodecs硬解码
+         * *  视频编码只支持H.264视频 (需在chrome 94版本以上,需要https或者localhost环境)
+         * *  支持 forceNoOffscreen 为 false (开启离屏渲染)
+         * */
+        useWCS?: boolean;
+        /**
+         * 是否开启键盘快捷键
+         * 目前支持的键盘快捷键有:esc -> 退出全屏;arrowUp -> 声音增加;arrowDown -> 声音减少;
+         */
+        hotKey?: boolean;
+        /**
+         *  在使用MSE或者Webcodecs 播放H265的时候,是否自动降级到wasm模式。
+         *  设置为false 则直接关闭播放,抛出Error 异常,设置为true 则会自动切换成wasm模式播放。
+         */
+        autoWasm?: boolean;
+        /**
+         * heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。
+         */
+        heartTimeoutReplay?: boolean,
+        /**
+         * heartTimeoutReplay 从试次数,超过之后,不再自动播放
+         */
+        heartTimeoutReplayTimes?: number,
+        /**
+         * loadingTimeout loading之后自动再播放,不再抛出异常,而直接重新播放视频地址。
+         */
+        loadingTimeoutReplay?: boolean,
+        /**
+         * heartTimeoutReplay 从试次数,超过之后,不再自动播放
+         */
+        loadingTimeoutReplayTimes?: number
+        /**
+         * wasm解码报错之后,不再抛出异常,而是直接重新播放视频地址。
+         */
+        wasmDecodeErrorReplay?: boolean,
+        /**
+         * https://github.com/langhuihui/jessibuca/issues/152 解决方案
+         * 例如:WebGL图像预处理默认每次取4字节的数据,但是540x960分辨率下的U、V分量宽度是540/2=270不能被4整除,导致绿屏。
+         */
+        openWebglAlignment?: boolean
+    }
+}
+
+
+declare class Jessibuca {
+
+    constructor(config?: Jessibuca.Config);
+
+    /**
+     * 是否开启控制台调试打印
+     @example
+     // 开启
+     jessibuca.setDebug(true)
+     // 关闭
+     jessibuca.setDebug(false)
+     */
+    setDebug(flag: boolean): void;
+
+    /**
+     * 静音
+     @example
+     jessibuca.mute()
+     */
+    mute(): void;
+
+    /**
+     * 取消静音
+     @example
+     jessibuca.cancelMute()
+     */
+    cancelMute(): void;
+
+    /**
+     * 留给上层用户操作来触发音频恢复的方法。
+     *
+     * iPhone,chrome等要求自动播放时,音频必须静音,需要由一个真实的用户交互操作来恢复,不能使用代码。
+     *
+     * https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
+     */
+    audioResume(): void;
+
+    /**
+     *
+     * 设置超时时长, 单位秒
+     * 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件
+
+     @example
+     jessibuca.setTimeout(10)
+
+     jessibuca.on('timeout',function(){
+        //
+    });
+     */
+    setTimeout(): void;
+
+    /**
+     * @param mode
+     *      0 视频画面完全填充canvas区域,画面会被拉伸  等同于参数 `isResize` 为false
+     *
+     *      1 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边 等同于参数 `isResize` 为true
+     *
+     *      2 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 等同于参数 `isFullResize` 为true
+     @example
+     jessibuca.setScaleMode(0)
+
+     jessibuca.setScaleMode(1)
+
+     jessibuca.setScaleMode(2)
+     */
+    setScaleMode(mode: number): void;
+
+    /**
+     * 暂停播放
+     *
+     * 可以在pause 之后,再调用 `play()`方法就继续播放之前的流。
+     @example
+     jessibuca.pause().then(()=>{
+        console.log('pause success')
+
+        jessibuca.play().then(()=>{
+
+        }).catch((e)=>{
+
+        })
+
+    }).catch((e)=>{
+        console.log('pause error',e);
+    })
+     */
+    pause(): Promise<void>;
+
+    /**
+     * 关闭视频,不释放底层资源
+     @example
+     jessibuca.close();
+     */
+    close(): void;
+
+    /**
+     * 关闭视频,释放底层资源
+     @example
+     jessibuca.destroy()
+     */
+    destroy(): void;
+
+    /**
+     * 清理画布为黑色背景
+     @example
+     jessibuca.clearView()
+     */
+    clearView(): void;
+
+    /**
+     * 播放视频
+     @example
+
+     jessibuca.play('url').then(()=>{
+        console.log('play success')
+    }).catch((e)=>{
+        console.log('play error',e)
+    })
+     //
+     jessibuca.play()
+     */
+    play(url?: string): Promise<void>;
+
+    /**
+     * 重新调整视图大小
+     */
+    resize(): void;
+
+    /**
+     * 设置最大缓冲时长,单位秒,播放器会自动消除延迟。
+     *
+     * 等同于 `videoBuffer` 参数。
+     *
+     @example
+     // 设置 200ms 缓冲
+     jessibuca.setBufferTime(0.2)
+     */
+    setBufferTime(time: number): void;
+
+    /**
+     * 设置旋转角度,只支持,0(默认) ,180,270 三个值。
+     *
+     * > 可用于实现监控画面小窗和全屏效果,由于iOS没有全屏API,此方法可以模拟页面内全屏效果而且多端效果一致。   *
+     @example
+     jessibuca.setRotate(0)
+
+     jessibuca.setRotate(90)
+
+     jessibuca.setRotate(270)
+     */
+    setRotate(deg: number): void;
+
+    /**
+     *
+     * 设置音量大小,取值0 — 1
+     *
+     * > 区别于 mute 和 cancelMute 方法,虽然设置setVolume(0) 也能达到 mute方法,但是mute 方法是不调用底层播放音频的,能提高性能。而setVolume(0)只是把声音设置为0 ,以达到效果。
+     * @param volume 当为0时,完全无声;当为1时,最大音量,默认值
+     @example
+     jessibuca.setVolume(0.2)
+
+     jessibuca.setVolume(0)
+
+     jessibuca.setVolume(1)
+     */
+    setVolume(volume: number): void;
+
+    /**
+     * 返回是否加载完毕
+     @example
+     var result = jessibuca.hasLoaded()
+     console.log(result) // true
+     */
+    hasLoaded(): boolean;
+
+    /**
+     * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。
+     * H5目前在chrome\edge 84, android chrome 84及以上有原生亮屏API, 需要是https页面
+     * 其余平台为模拟实现,此时为兼容实现,并不保证所有浏览器都支持
+     @example
+     jessibuca.setKeepScreenOn()
+     */
+    setKeepScreenOn(): boolean;
+
+    /**
+     * 全屏(取消全屏)播放视频
+     @example
+     jessibuca.setFullscreen(true)
+     //
+     jessibuca.setFullscreen(false)
+     */
+    setFullscreen(flag: boolean): void;
+
+    /**
+     *
+     * 截图,调用后弹出下载框保存截图
+     * @param filename 可选参数, 保存的文件名, 默认 `时间戳`
+     * @param format   可选参数, 截图的格式,可选png或jpeg或者webp ,默认 `png`
+     * @param quality  可选参数, 当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 `0.92`
+     * @param type 可选参数, 可选download或者base64或者blob,默认`download`
+
+     @example
+
+     jessibuca.screenshot("test","png",0.5)
+
+     const base64 = jessibuca.screenshot("test","png",0.5,'base64')
+
+     const fileBlob = jessibuca.screenshot("test",'blob')
+     */
+    screenshot(filename?: string, format?: string, quality?: number, type?: string): void;
+
+    /**
+     * 开始录制。
+     * @param fileName 可选,默认时间戳
+     * @param fileType 可选,默认webm,支持webm 和mp4 格式
+
+     @example
+     jessibuca.startRecord('xxx','webm')
+     */
+    startRecord(fileName: string, fileType: string): void;
+
+    /**
+     * 暂停录制并下载。
+     @example
+     jessibuca.stopRecordAndSave()
+     */
+    stopRecordAndSave(): void;
+
+    /**
+     * 返回是否正在播放中状态。
+     @example
+     var result = jessibuca.isPlaying()
+     console.log(result) // true
+     */
+    isPlaying(): boolean;
+
+    /**
+     *   返回是否静音。
+     @example
+     var result = jessibuca.isMute()
+     console.log(result) // true
+     */
+    isMute(): boolean;
+
+    /**
+     * 返回是否正在录制。
+     @example
+     var result = jessibuca.isRecording()
+     console.log(result) // true
+     */
+    isRecording(): boolean;
+
+
+    /**
+     * 监听 jessibuca 初始化事件
+     * @example
+     * jessibuca.on("load",function(){console.log('load')})
+     */
+    on(event: 'load', callback: () => void): void;
+
+    /**
+     * 视频播放持续时间,单位ms
+     * @example
+     * jessibuca.on('timeUpdate',function (ts) {console.log('timeUpdate',ts);})
+     */
+    on(event: 'timeUpdate', callback: () => void): void;
+
+    /**
+     * 当解析出视频信息时回调,2个回调参数
+     * @example
+     * jessibuca.on("videoInfo",function(data){console.log('width:',data.width,'height:',data.width)})
+     */
+    on(event: 'videoInfo', callback: (data: {
+        /** 视频宽 */
+        width: number;
+        /** 视频高 */
+        height: number;
+    }) => void): void;
+
+    /**
+     * 当解析出音频信息时回调,2个回调参数
+     * @example
+     * jessibuca.on("audioInfo",function(data){console.log('numOfChannels:',data.numOfChannels,'sampleRate',data.sampleRate)})
+     */
+    on(event: 'audioInfo', callback: (data: {
+        /** 声频通道 */
+        numOfChannels: number;
+        /** 采样率 */
+        sampleRate: number;
+    }) => void): void;
+
+    /**
+     * 信息,包含错误信息
+     * @example
+     * jessibuca.on("log",function(data){console.log('data:',data)})
+     */
+    on(event: 'log', callback: () => void): void;
+
+    /**
+     * 错误信息
+     * @example
+     * jessibuca.on("error",function(error){
+        if(error === Jessibuca.ERROR.fetchError){
+            //
+        }
+        else if(error === Jessibuca.ERROR.webcodecsH265NotSupport){
+            //
+        }
+        console.log('error:',error)
+    })
+     */
+    on(event: 'error', callback: (err: Jessibuca.ERROR) => void): void;
+
+    /**
+     * 当前网速, 单位KB 每秒1次,
+     * @example
+     * jessibuca.on("kBps",function(data){console.log('kBps:',data)})
+     */
+    on(event: 'kBps', callback: (value: number) => void): void;
+
+    /**
+     * 渲染开始
+     * @example
+     * jessibuca.on("start",function(){console.log('start render')})
+     */
+    on(event: 'start', callback: () => void): void;
+
+    /**
+     * 当设定的超时时间内无数据返回,则回调
+     * @example
+     * jessibuca.on("timeout",function(error){console.log('timeout:',error)})
+     */
+    on(event: 'timeout', callback: (error: Jessibuca.TIMEOUT) => void): void;
+
+    /**
+     * 当play()的时候,如果没有数据返回,则回调
+     * @example
+     * jessibuca.on("loadingTimeout",function(){console.log('timeout')})
+     */
+    on(event: 'loadingTimeout', callback: () => void): void;
+
+    /**
+     * 当播放过程中,如果超过timeout之后没有数据渲染,则抛出异常。
+     * @example
+     * jessibuca.on("delayTimeout",function(){console.log('timeout')})
+     */
+    on(event: 'delayTimeout', callback: () => void): void;
+
+    /**
+     * 当前是否全屏
+     * @example
+     * jessibuca.on("fullscreen",function(flag){console.log('is fullscreen',flag)})
+     */
+    on(event: 'fullscreen', callback: () => void): void;
+
+    /**
+     * 触发播放事件
+     * @example
+     * jessibuca.on("play",function(flag){console.log('play')})
+     */
+    on(event: 'play', callback: () => void): void;
+
+    /**
+     * 触发暂停事件
+     * @example
+     * jessibuca.on("pause",function(flag){console.log('pause')})
+     */
+    on(event: 'pause', callback: () => void): void;
+
+    /**
+     * 触发声音事件,返回boolean值
+     * @example
+     * jessibuca.on("mute",function(flag){console.log('is mute',flag)})
+     */
+    on(event: 'mute', callback: () => void): void;
+
+    /**
+     * 流状态统计,流开始播放后回调,每秒1次。
+     * @example
+     * jessibuca.on("stats",function(s){console.log("stats is",s)})
+     */
+    on(event: 'stats', callback: (stats: {
+        /** 当前缓冲区时长,单位毫秒 */
+        buf: number;
+        /** 当前视频帧率 */
+        fps: number;
+        /** 当前音频码率,单位byte */
+        abps: number;
+        /** 当前视频码率,单位byte */
+        vbps: number;
+        /** 当前视频帧pts,单位毫秒 */
+        ts: number;
+    }) => void): void;
+
+    /**
+     * 渲染性能统计,流开始播放后回调,每秒1次。
+     * @param performance 0: 表示卡顿,1: 表示流畅,2: 表示非常流程
+     * @example
+     * jessibuca.on("performance",function(performance){console.log("performance is",performance)})
+     */
+    on(event: 'performance', callback: (performance: 0 | 1 | 2) => void): void;
+
+    /**
+     * 录制开始的事件
+
+     * @example
+     * jessibuca.on("recordStart",function(){console.log("record start")})
+     */
+    on(event: 'recordStart', callback: () => void): void;
+
+    /**
+     * 录制结束的事件
+
+     * @example
+     * jessibuca.on("recordEnd",function(){console.log("record end")})
+     */
+    on(event: 'recordEnd', callback: () => void): void;
+
+    /**
+     * 录制的时候,返回的录制时长,1s一次
+
+     * @example
+     * jessibuca.on("recordingTimestamp",function(timestamp){console.log("recordingTimestamp is",timestamp)})
+     */
+    on(event: 'recordingTimestamp', callback: (timestamp: number) => void): void;
+
+    /**
+     * 监听调用play方法 经过 初始化-> 网络请求-> 解封装 -> 解码 -> 渲染 一系列过程的时间消耗
+     * @param event
+     * @param callback
+     */
+    on(event: 'playToRenderTimes', callback: (times: {
+        playInitStart: number, // 1 初始化
+        playStart: number, // 2 初始化
+        streamStart: number, // 3 网络请求
+        streamResponse: number, // 4 网络请求
+        demuxStart: number, // 5 解封装
+        decodeStart: number, // 6 解码
+        videoStart: number, // 7 渲染
+        playTimestamp: number,// playStart- playInitStart
+        streamTimestamp: number,// streamStart - playStart
+        streamResponseTimestamp: number,// streamResponse - streamStart
+        demuxTimestamp: number, // demuxStart - streamResponse
+        decodeTimestamp: number, // decodeStart - demuxStart
+        videoTimestamp: number,// videoStart - decodeStart
+        allTimestamp: number // videoStart - playInitStart
+    }) => void): void
+
+    /**
+     * 监听方法
+     *
+     @example
+
+     jessibuca.on("load",function(){console.log('load')})
+     */
+    on(event: string, callback: Function): void;
+
+}
+
+export default Jessibuca;

File diff suppressed because it is too large
+ 0 - 0
public/plugin/media/jessibuca.js


Some files were not shown because too many files changed in this diff