trtc-sdk-v5 5.15.0 → 5.15.1-beta.1
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/assets/debug-dialog.js +2 -2
- package/index.d.ts +1 -105
- package/package.json +1 -1
- package/plugins/cdn-streaming/cdn-streaming.esm.js +1 -1
- package/plugins/cdn-streaming/cdn-streaming.umd.js +1 -3
- package/plugins/cdn-streaming/package.json +1 -1
- package/plugins/chorus/chorus.esm.d.ts +0 -2
- package/plugins/chorus/chorus.esm.js +1 -1
- package/plugins/chorus/chorus.umd.js +1 -3
- package/plugins/chorus/package.json +1 -1
- package/plugins/cross-room/cross-room.esm.d.ts +0 -2
- package/plugins/cross-room/cross-room.esm.js +1 -1
- package/plugins/cross-room/cross-room.umd.js +1 -3
- package/plugins/cross-room/package.json +1 -1
- package/plugins/custom-encryption/custom-encryption.esm.js +1 -1
- package/plugins/custom-encryption/custom-encryption.umd.js +1 -3
- package/plugins/custom-encryption/package.json +1 -1
- package/plugins/device-detector/device-detector.esm.js +56 -44
- package/plugins/device-detector/device-detector.umd.js +14 -4
- package/plugins/device-detector/package.json +1 -1
- package/plugins/fast-webrtc/fast-webrtc.esm.d.ts +27 -0
- package/plugins/fast-webrtc/fast-webrtc.esm.js +1 -0
- package/plugins/fast-webrtc/fast-webrtc.umd.js +1 -0
- package/plugins/{video-effect/face-detection → fast-webrtc}/package.json +8 -8
- package/plugins/lebplayer/lebplayer.esm.d.ts +0 -7
- package/plugins/lebplayer/lebplayer.esm.js +1 -1
- package/plugins/lebplayer/lebplayer.umd.js +1 -3
- package/plugins/lebplayer/package.json +1 -1
- package/plugins/small-stream-auto-switcher/package.json +1 -1
- package/plugins/small-stream-auto-switcher/small-stream-auto-switcher.esm.js +1 -1
- package/plugins/small-stream-auto-switcher/small-stream-auto-switcher.umd.js +1 -1
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-decoder/video-decoder.esm.d.ts +1 -2
- package/plugins/video-decoder/video-decoder.esm.js +1 -1
- package/plugins/video-decoder/video-decoder.umd.js +1 -3
- package/plugins/video-effect/basic-beauty/basic-beauty.esm.js +1 -1
- package/plugins/video-effect/basic-beauty/basic-beauty.umd.js +1 -3
- package/plugins/video-effect/basic-beauty/package.json +1 -1
- package/plugins/video-effect/beauty/beauty.esm.js +1 -1
- package/plugins/video-effect/beauty/beauty.umd.js +1 -3
- package/plugins/video-effect/beauty/package.json +1 -1
- package/plugins/video-effect/video-mixer/package.json +1 -1
- package/plugins/video-effect/video-mixer/video-mixer.esm.d.ts +4 -0
- package/plugins/video-effect/video-mixer/video-mixer.esm.js +1 -1
- package/plugins/video-effect/video-mixer/video-mixer.umd.js +1 -3
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.esm.js +1 -1
- package/plugins/video-effect/virtual-background/virtual-background.umd.js +1 -3
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/video-effect/watermark/watermark.umd.js +1 -3
- package/plugins/voice-changer/package.json +1 -1
- package/plugins/voice-changer/voice-changer.esm.js +1 -1
- package/plugins/voice-changer/voice-changer.umd.js +1 -3
- package/trtc.esm.js +39 -35
- package/trtc.js +1 -1
- package/plugins/realtime-transcriber/package.json +0 -29
- package/plugins/realtime-transcriber/realtime-transcriber.esm.d.ts +0 -16
- package/plugins/realtime-transcriber/realtime-transcriber.esm.js +0 -1
- package/plugins/realtime-transcriber/realtime-transcriber.umd.js +0 -3
- package/plugins/video-effect/face-detection/face-detection.esm.d.ts +0 -22
- package/plugins/video-effect/face-detection/face-detection.esm.js +0 -1
- package/plugins/video-effect/face-detection/face-detection.umd.js +0 -3
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@rtc-plugin/realtime-transcriber",
|
|
3
|
-
"version": "5.15.0",
|
|
4
|
-
"description": "TRTC Web SDK 5.x Realtime Transcriber plugin",
|
|
5
|
-
"main": "./realtime-transcriber.esm.js",
|
|
6
|
-
"module": "./realtime-transcriber.esm.js",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git@github.com:LiteAVSDK/TRTC_Web.git"
|
|
10
|
-
},
|
|
11
|
-
"homepage": "https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/tutorial-30-advanced-realtime-transcriber-link.html",
|
|
12
|
-
"keywords": [
|
|
13
|
-
"webrtc",
|
|
14
|
-
"TRTC",
|
|
15
|
-
"rtc",
|
|
16
|
-
"call",
|
|
17
|
-
"video call",
|
|
18
|
-
"audio call",
|
|
19
|
-
"javascript",
|
|
20
|
-
"video",
|
|
21
|
-
"audio",
|
|
22
|
-
"camera",
|
|
23
|
-
"microphone",
|
|
24
|
-
"live streaming",
|
|
25
|
-
"real-time communication",
|
|
26
|
-
"realtime-transcriber"
|
|
27
|
-
],
|
|
28
|
-
"types": "./realtime-transcriber.esm.d.ts"
|
|
29
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface StartRealtimeTranscriberOption {
|
|
2
|
-
roomId?: number,
|
|
3
|
-
strRoomId?: string,
|
|
4
|
-
userId?: string
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export interface StopRealtimeTranscriberOption {
|
|
8
|
-
roomId?: number,
|
|
9
|
-
strRoomId?: string,
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export declare class RealtimeTranscriber {
|
|
14
|
-
start(option: StartRealtimeTranscriberOption): Promise<void>;
|
|
15
|
-
stop(option?: StopRealtimeTranscriberOption): Promise<void>;
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var __defProp=Object.defineProperty,__defNormalProp=(r,e,a)=>e in r?__defProp(r,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[e]=a,__publicField=(r,e,a)=>__defNormalProp(r,"symbol"!=typeof e?e+"":e,a),StartValidateRule={name:"option",required:!0,properties:{sourceLanguage:{type:"string",required:!0},translationLanguages:{type:["string","array"],required:!1},userIdsToTranscribe:{type:["string","array"],required:!1},transcriberRobotId:{type:"string",required:!1}}},StopValidateRule={name:"option",required:!0,properties:{transcriberRobotId:{type:"string",required:!0}}},STOP_IGNORE_CODES=new Set([2002,4003]),_RealtimeTranscriber=class r{constructor(r){this.core=r,__publicField(this,"disableRandomCall",!0),__publicField(this,"activeTranscriberMap",new Map),__publicField(this,"_log"),this._log=this.core.log.createChild({id:`${this.getAlias()}`})}getName(){return r.Name}getAlias(){return"rt-trans"}getGroup(){return"*"}getValidateRule(r){switch(r){case"start":return StartValidateRule;case"update":return{};case"stop":return StopValidateRule}}async start(r){var e;const{RtcError:a,ErrorCode:t}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new a({code:t.ENV_NOT_SUPPORTED});const{sourceLanguage:o,translationLanguages:s,userIdsToTranscribe:i="all",transcriberRobotId:n}=r,d=n||`transcriber_${this.core.room.roomId}_robot_${this.core.room.userId}`,c={sdkappid:this.core.room.sdkAppId,roomid:String(this.core.room.roomId),roomType:this.core.room.useStringRoomId?1:0,agentParam:{cdnRobotUserid:d,lifecycleUserid:this.core.room.userId,maxIdletime:30},subscribeParams:{subUsers:[]},asrParams:{lang:o,vadSilenceTime:1e3},translationParams:{mode:1,targetLangs:[""]}};s&&s.length>0&&(c.translationParams.mode=1,c.translationParams.targetLangs=Array.isArray(s)?s:[s]),"all"===i?c.subscribeParams.subUsers=[]:Array.isArray(i)?c.subscribeParams.subUsers=i.map(r=>({userId:r,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)})):i&&(c.subscribeParams.subUsers=[{userId:i,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)}]);try{this._log.info(`start_cloud_transcription ${JSON.stringify(c)}`);const o=await this.core.room.sendSignalMessage({command:"start_cloud_transcription",responseCommand:String(8268),data:c,retries:0}),{code:s,data:i}=o.data;if(0!==s){const r=(null==(e=o.data)?void 0:e.message)||"";throw this._log.error("start_cloud_transcription failed",{extraCode:s,reason:r,data:i}),new a({code:t.SERVER_ERROR,extraCode:s,message:r})}const{taskId:n}=i;if(!n)throw this._log.error("taskId is required",{data:o.data}),new a({code:t.SERVER_ERROR,message:"taskId is required"});return this.activeTranscriberMap.set(n,r),this._log.info(`start_cloud_transcription success ${n}, activeSize: ${this.activeTranscriberMap.size}`),n}catch(r){throw this._log.error("start_cloud_transcription failed",{error:r}),r}}async update(){}async stop({transcriberRobotId:r}){var e;const{RtcError:a,ErrorCode:t}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new a({code:t.ENV_NOT_SUPPORTED});try{const o=await this.core.room.sendSignalMessage({command:"stop_cloud_transcription",responseCommand:String(8270),data:{taskId:r},retries:3});if(0!==o.data.code){const r=o.data.code,s=(null==(e=o.data)?void 0:e.message)||"";if(!STOP_IGNORE_CODES.has(r))throw this._log.error("stop_cloud_transcription failed",{extraCode:r,reason:s,data:o.data.data}),new a({code:t.SERVER_ERROR,extraCode:r,message:s});this._log.warn("stop_cloud_transcription ignored error",{extraCode:r,reason:s,data:o.data.data})}this.activeTranscriberMap.delete(r)}catch(r){throw this._log.error("stop_cloud_transcription failed",{error:r}),r}}destroy(){this.activeTranscriberMap.clear()}};__publicField(_RealtimeTranscriber,"Name","RealtimeTranscriber");var RealtimeTranscriber=_RealtimeTranscriber,index_default=RealtimeTranscriber;export{index_default as default};export{RealtimeTranscriber};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).RealtimeTranscriber=e()}(this,function(){"use strict";function r(r,e,t,o,n,a,i){try{var s=r[a](i),c=s.value}catch(r){return void t(r)}s.done?e(c):Promise.resolve(c).then(o,n)}function e(e){return function(){var t=this,o=arguments;return new Promise(function(n,a){var i=e.apply(t,o);function s(e){r(i,n,a,s,c,"next",e)}function c(e){r(i,n,a,s,c,"throw",e)}s(void 0)})}}function t(r,e,t){return e&&function(r,e){for(var t=0;t<e.length;t++){var o=e[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(r,a(o.key),o)}}(r.prototype,e),Object.defineProperty(r,"prototype",{writable:!1}),r}function o(){
|
|
2
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
3
|
-
var r,e,t="function"==typeof Symbol?Symbol:{},a=t.iterator||"@@iterator",i=t.toStringTag||"@@toStringTag";function s(t,o,a,i){var s=o&&o.prototype instanceof u?o:u,d=Object.create(s.prototype);return n(d,"_invoke",function(t,o,n){var a,i,s,u=0,d=n||[],l=!1,f={p:0,n:0,v:r,a:p,f:p.bind(r,4),d:function(e,t){return a=e,i=0,s=r,f.n=t,c}};function p(t,o){for(i=t,s=o,e=0;!l&&u&&!n&&e<d.length;e++){var n,a=d[e],p=f.p,m=a[2];t>3?(n=m===o)&&(s=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=r):a[0]<=p&&((n=t<2&&p<a[1])?(i=0,f.v=o,f.n=a[1]):p<m&&(n=t<3||a[0]>o||o>m)&&(a[4]=t,a[5]=o,f.n=m,i=0))}if(n||t>1)return c;throw l=!0,o}return function(n,d,m){if(u>1)throw TypeError("Generator is already running");for(l&&1===d&&p(d,m),i=d,s=m;(e=i<2?r:s)||!l;){a||(i?i<3?(i>1&&(f.n=-1),p(i,s)):f.n=s:f.v=s);try{if(u=2,a){if(i||(n="next"),e=a[n]){if(!(e=e.call(a,s)))throw TypeError("iterator result is not an object");if(!e.done)return e;s=e.value,i<2&&(i=0)}else 1===i&&(e=a.return)&&e.call(a),i<2&&(s=TypeError("The iterator does not provide a '"+n+"' method"),i=1);a=r}else if((e=(l=f.n<0)?s:t.call(o,f))!==c)break}catch(e){a=r,i=1,s=e}finally{u=1}}return{value:e,done:l}}}(t,a,i),!0),d}var c={};function u(){}function d(){}function l(){}e=Object.getPrototypeOf;var f=[][a]?e(e([][a]())):(n(e={},a,function(){return this}),e),p=l.prototype=u.prototype=Object.create(f);function m(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,l):(r.__proto__=l,n(r,i,"GeneratorFunction")),r.prototype=Object.create(p),r}return d.prototype=l,n(p,"constructor",l),n(l,"constructor",d),d.displayName="GeneratorFunction",n(l,i,"GeneratorFunction"),n(p),n(p,i,"Generator"),n(p,a,function(){return this}),n(p,"toString",function(){return"[object Generator]"}),(o=function(){return{w:s,m:m}})()}function n(r,e,t,o){var a=Object.defineProperty;try{a({},"",{})}catch(r){a=0}n=function(r,e,t,o){function i(e,t){n(r,e,function(r){return this._invoke(e,t,r)})}e?a?a(r,e,{value:t,enumerable:!o,configurable:!o,writable:!o}):r[e]=t:(i("next",0),i("throw",1),i("return",2))},n(r,e,t,o)}function a(r){var e=function(r,e){if("object"!=typeof r||!r)return r;var t=r[Symbol.toPrimitive];if(void 0!==t){var o=t.call(r,e);if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(r)}(r,"string");return"symbol"==typeof e?e:e+""}function i(r){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},i(r)}var s=Object.defineProperty,c=function(r,e,t){return function(r,e,t){return e in r?s(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t}(r,"symbol"!==i(e)?e+"":e,t)},u={name:"option",required:!0,properties:{sourceLanguage:{type:"string",required:!0},translationLanguages:{type:["string","array"],required:!1},userIdsToTranscribe:{type:["string","array"],required:!1},transcriberRobotId:{type:"string",required:!1}}},d={name:"option",required:!0,properties:{transcriberRobotId:{type:"string",required:!0}}},l=new Set([2002,4003]),f=function(){function r(e){!function(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),this.core=e,c(this,"disableRandomCall",!0),c(this,"activeTranscriberMap",new Map),c(this,"_log"),this._log=this.core.log.createChild({id:"".concat(this.getAlias())})}return t(r,[{key:"getName",value:function(){return r.Name}},{key:"getAlias",value:function(){return"rt-trans"}},{key:"getGroup",value:function(){return"*"}},{key:"getValidateRule",value:function(r){switch(r){case"start":return u;case"update":return{};case"stop":return d}}},{key:"start",value:(i=e(o().m(function r(e){var t,n,a,i,s,c,u,d,l,f,p,m,b,y,g,h,v,_,w=this;return o().w(function(r){for(;;)switch(r.p=r.n){case 0:if(n=this.core.errorModule,a=n.RtcError,i=n.ErrorCode,this.core.room.sendSignalMessage){r.n=1;break}throw new a({code:i.ENV_NOT_SUPPORTED});case 1:return s=e.sourceLanguage,c=e.translationLanguages,u=e.userIdsToTranscribe,d=void 0===u?"all":u,l=e.transcriberRobotId,f=l||"transcriber_".concat(this.core.room.roomId,"_robot_").concat(this.core.room.userId),p={sdkappid:this.core.room.sdkAppId,roomid:String(this.core.room.roomId),roomType:this.core.room.useStringRoomId?1:0,agentParam:{cdnRobotUserid:f,lifecycleUserid:this.core.room.userId,maxIdletime:30},subscribeParams:{subUsers:[]},asrParams:{lang:s,vadSilenceTime:1e3},translationParams:{mode:1,targetLangs:[""]}},c&&c.length>0&&(p.translationParams.mode=1,p.translationParams.targetLangs=Array.isArray(c)?c:[c]),"all"===d?p.subscribeParams.subUsers=[]:Array.isArray(d)?p.subscribeParams.subUsers=d.map(function(r){return{userId:r,roomType:w.core.room.useStringRoomId?1:0,roomid:String(w.core.room.roomId)}}):d&&(p.subscribeParams.subUsers=[{userId:d,roomType:this.core.room.useStringRoomId?1:0,roomid:String(this.core.room.roomId)}]),r.p=2,this._log.info("start_cloud_transcription ".concat(JSON.stringify(p))),r.n=3,this.core.room.sendSignalMessage({command:"start_cloud_transcription",responseCommand:String(8268),data:p,retries:0});case 3:if(m=r.v,b=m.data,y=b.code,g=b.data,0===y){r.n=4;break}throw h=(null==(t=m.data)?void 0:t.message)||"",this._log.error("start_cloud_transcription failed",{extraCode:y,reason:h,data:g}),new a({code:i.SERVER_ERROR,extraCode:y,message:h});case 4:if(v=g.taskId){r.n=5;break}throw this._log.error("taskId is required",{data:m.data}),new a({code:i.SERVER_ERROR,message:"taskId is required"});case 5:return this.activeTranscriberMap.set(v,e),this._log.info("start_cloud_transcription success ".concat(v,", activeSize: ").concat(this.activeTranscriberMap.size)),r.a(2,v);case 6:throw r.p=6,_=r.v,this._log.error("start_cloud_transcription failed",{error:_}),_;case 7:return r.a(2)}},r,this,[[2,6]])})),function(r){return i.apply(this,arguments)})},{key:"update",value:(a=e(o().m(function r(){return o().w(function(r){for(;;)if(0===r.n)return r.a(2)},r)})),function(){return a.apply(this,arguments)})},{key:"stop",value:(n=e(o().m(function r(e){var t,n,a,i,s,c,u,d,f;return o().w(function(r){for(;;)switch(r.p=r.n){case 0:if(t=e.transcriberRobotId,a=this.core.errorModule,i=a.RtcError,s=a.ErrorCode,this.core.room.sendSignalMessage){r.n=1;break}throw new i({code:s.ENV_NOT_SUPPORTED});case 1:return r.p=1,r.n=2,this.core.room.sendSignalMessage({command:"stop_cloud_transcription",responseCommand:String(8270),data:{taskId:t},retries:3});case 2:if(0===(c=r.v).data.code){r.n=4;break}if(u=c.data.code,d=(null==(n=c.data)?void 0:n.message)||"",!l.has(u)){r.n=3;break}this._log.warn("stop_cloud_transcription ignored error",{extraCode:u,reason:d,data:c.data.data}),r.n=4;break;case 3:throw this._log.error("stop_cloud_transcription failed",{extraCode:u,reason:d,data:c.data.data}),new i({code:s.SERVER_ERROR,extraCode:u,message:d});case 4:this.activeTranscriberMap.delete(t),r.n=6;break;case 5:throw r.p=5,f=r.v,this._log.error("stop_cloud_transcription failed",{error:f}),f;case 6:return r.a(2)}},r,this,[[1,5]])})),function(r){return n.apply(this,arguments)})},{key:"destroy",value:function(){this.activeTranscriberMap.clear()}}]);var n,a,i}();return c(f,"Name","RealtimeTranscriber"),f});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export interface FaceDetectionOptions {
|
|
2
|
-
onFaceDetectionStateChanged: (hasFace: boolean) => void;
|
|
3
|
-
detectionInterval?: number;
|
|
4
|
-
minConfidence?: number;
|
|
5
|
-
missingTimeout?: number;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export interface UpdateFaceDetectionOptions {
|
|
9
|
-
onFaceDetectionStateChanged?: (hasFace: boolean) => void;
|
|
10
|
-
detectionInterval?: number;
|
|
11
|
-
minConfidence?: number;
|
|
12
|
-
missingTimeout?: number;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export declare class FaceDetection {
|
|
16
|
-
static isSupported(): boolean;
|
|
17
|
-
start(options: FaceDetectionOptions): Promise<void>;
|
|
18
|
-
update(options: UpdateFaceDetectionOptions): Promise<void>;
|
|
19
|
-
stop(): Promise<void>;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export default FaceDetection;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var __defProp=Object.defineProperty,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,r)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,__spreadValues=(e,t)=>{for(var r in t||(t={}))__hasOwnProp.call(t,r)&&__defNormalProp(e,r,t[r]);if(__getOwnPropSymbols)for(var r of __getOwnPropSymbols(t))__propIsEnum.call(t,r)&&__defNormalProp(e,r,t[r]);return e},__publicField=(e,t,r)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,r),BASE_FACE_DETECTION_RULES={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},faceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!0}},BASE_FACE_DETECTION_RULES),updateFaceDetectionOptions=__spreadValues({onFaceDetectionStateChanged:{required:!1}},BASE_FACE_DETECTION_RULES);function startValidateRule(e){return{type:"object",required:!0,properties:faceDetectionOptions,validate(t,r,i,s){var o;const{RtcError:a,ErrorCode:n,ErrorCodeDictionary:_}=e.errorModule,{onFaceDetectionStateChanged:c}=t;if(c&&!e.utils.isFunction(c))throw new a({code:n.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onFaceDetectionStateChanged",value:typeof c,rule:{type:"Function"}}});if(!(null==(o=e.room.videoManager.cameraTrack)?void 0:o.mediaTrack))throw new a({code:n.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function updateValidateRule(e){return{type:"object",required:!0,properties:updateFaceDetectionOptions,validate(t,r,i,s){var o;const{RtcError:a,ErrorCode:n,ErrorCodeDictionary:_}=e.errorModule,{onFaceDetectionStateChanged:c}=t;if(c&&!e.utils.isFunction(c))throw new a({code:n.INVALID_PARAMETER,extraCode:_.INVALID_PARAMETER_TYPE,fnName:i,messageParams:{key:"onFaceDetectionStateChanged",value:typeof c,rule:{type:"Function"}}});if(!(null==(o=e.room.videoManager.cameraTrack)?void 0:o.mediaTrack))throw new a({code:n.INVALID_OPERATION,extraCode:_.INVALID_OPERATION_NEED_VIDEO,fnName:i})}}}function stopValidateRule(e){return{name:"StopFaceDetectionOptions",required:!1}}var USER_AGENT="undefined"==typeof navigator?"":navigator.userAgent,isUserAgentMatch=e=>new RegExp(e,"i").test(USER_AGENT),getBrowserVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/([\\d.]+)`),r=USER_AGENT.match(t);if(r&&r[1])return r[1]}return""},getBrowserMajorVersion=e=>{if(isUserAgentMatch(e)){const t=new RegExp(`${e}\\/(\\d+)`),r=USER_AGENT.match(t);if(r&&r[1])return parseFloat(r[1])}return NaN},webkitVersionMap=/AppleWebKit\/([\d.]+)/i.exec(USER_AGENT),appleWebkitVersion=webkitVersionMap?parseFloat(webkitVersionMap[1]):NaN,IS_IPAD=isUserAgentMatch("iPad"),IS_IPAD_PRO="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&isUserAgentMatch("Macintosh"),IS_IPHONE=isUserAgentMatch("iPhone")&&!IS_IPAD,IS_IPOD=isUserAgentMatch("iPod"),IS_IOS=IS_IPHONE||IS_IPAD||IS_IPOD||IS_IPAD_PRO,IS_ANDROID=isUserAgentMatch("Android"),ANDROID_VERSION=function(){if(IS_ANDROID){const e=USER_AGENT.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){const t=e[1]&&parseFloat(e[1]),r=e[2]&&parseFloat(e[2]);if(t&&r)return parseFloat(`${e[1]}.${e[2]}`);if(t)return t}}return NaN}(),IS_OLD_ANDROID=IS_ANDROID&&isUserAgentMatch("webkit")&&ANDROID_VERSION<2.3,IS_NATIVE_ANDROID=IS_ANDROID&&ANDROID_VERSION<5&&appleWebkitVersion<537,IS_FIREFOX=isUserAgentMatch("Firefox"),FIREFOX_VERSION=getBrowserVersion("Firefox"),FIREFOX_MAJOR_VERSION=getBrowserMajorVersion("Firefox"),IS_EDGE=isUserAgentMatch("Edge"),EDGE_VERSION=getBrowserVersion("Edge"),IS_EDG=isUserAgentMatch("Edg"),EDG_VERSION=getBrowserVersion("Edg"),EDG_MAJOR_VERSION=getBrowserMajorVersion("Edg"),IS_SOGOUM=isUserAgentMatch("SogouMobileBrowser"),SOGOUM_VERSION=getBrowserVersion("SogouMobileBrowser"),IS_SOGOU=isUserAgentMatch("MetaSr\\s"),SOGOU_VERSION=getBrowserVersion("MetaSr\\s"),IS_TBS=isUserAgentMatch("TBS"),TBS_VERSION=getBrowserVersion("TBS"),IS_XWEB=isUserAgentMatch("XWEB"),XWEB_VERSION=getBrowserVersion("XWEB"),IS_IE8=isUserAgentMatch("MSIE\\s8\\.0"),IS_IE=isUserAgentMatch("MSIE\\/\\d+"),IE_VERSION=function(){if(IS_IE){const e=/MSIE\s(\d+)\.\d/.exec(USER_AGENT);let t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(USER_AGENT)&&/rv:11.0/.test(USER_AGENT)&&(t=11),t}return NaN}(),IS_WECHAT=isUserAgentMatch("(micromessenger|webbrowser)"),WECHAT_VERSION=getBrowserVersion("MicroMessenger"),IS_X5MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&isUserAgentMatch("COVC"),IS_MQQB=!IS_TBS&&isUserAgentMatch("MQQBrowser")&&!isUserAgentMatch("COVC"),MQQB_VERSION=IS_MQQB||IS_X5MQQB?getBrowserVersion("MQQBrowser"):"",IS_WQQB=!IS_TBS&&isUserAgentMatch(" QQBrowser"),WQQB_VERSION=getBrowserVersion(" QQBrowser"),IS_MACQQB=!IS_TBS&&isUserAgentMatch("QQBrowserLite"),MACQQB_VERSION=getBrowserVersion("QQBrowserLite"),IS_IPADQQB=!IS_TBS&&isUserAgentMatch("MQBHD"),IPADQQB_VERSION=getBrowserVersion("MQBHD"),IS_WIN=isUserAgentMatch("Windows"),IS_MAC=!IS_IOS&&isUserAgentMatch("MAC OS X"),IS_LINUX=!IS_ANDROID&&isUserAgentMatch("Linux"),IS_CHROME_OS=isUserAgentMatch("CrOS"),IS_WX=isUserAgentMatch("MicroMessenger"),IS_UCBROWSER=isUserAgentMatch("UCBrowser"),IS_ELECTRON=isUserAgentMatch("Electron"),IS_MIBROWSER=isUserAgentMatch("MiuiBrowser"),MI_VERSION=getBrowserVersion("MiuiBrowser"),IS_HUAWEIBROWSER=isUserAgentMatch("HuaweiBrowser"),IS_HUAWEI=isUserAgentMatch("Huawei")||isUserAgentMatch("HUAWEI"),IS_HONOR=isUserAgentMatch("Honor")||isUserAgentMatch("HONOR"),HUAWEI_VERSION=getBrowserVersion("HuaweiBrowser"),IS_SAMSUNGBROWSER=isUserAgentMatch("SamsungBrowser"),SAMSUNG_VERSION=getBrowserVersion("SamsungBrowser"),IS_OPPOBROWSER=isUserAgentMatch("HeyTapBrowser"),OPPO_VERSION=getBrowserVersion("HeyTapBrowser"),IS_VIVOBROWSER=isUserAgentMatch("VivoBrowser"),VIVO_VERSION=getBrowserVersion("VivoBrowser"),IS_OPENHARMONY=isUserAgentMatch("OpenHarmony"),OPENHARMONY_VERSION=getBrowserVersion("OpenHarmony"),getChromeMajorVersion=()=>getBrowserMajorVersion("Chrome"),IS_IOS_CHROME=isUserAgentMatch("CriOS"),IS_CHROMIUM_BASE=isUserAgentMatch("Chrome"),IS_CHROME=!IS_EDGE&&!IS_SOGOU&&!IS_SOGOUM&&!IS_TBS&&!IS_XWEB&&!IS_EDG&&!IS_WQQB&&!IS_MIBROWSER&&!IS_HUAWEIBROWSER&&!IS_SAMSUNGBROWSER&&!IS_OPPOBROWSER&&!IS_VIVOBROWSER&&IS_CHROMIUM_BASE,IS_HEADLESS_CHROME=isUserAgentMatch("HeadlessChrome"),CHROME_MAJOR_VERSION=getChromeMajorVersion(),IS_CHROMIUM_128_TO_143=IS_CHROMIUM_BASE&&CHROME_MAJOR_VERSION>=128&&CHROME_MAJOR_VERSION<=143,CHROME_VERSION=getBrowserVersion("Chrome"),ELECTRON_MAJOR_VERSION=getBrowserMajorVersion("Electron"),IS_SAFARI=!IS_CHROMIUM_BASE&&!IS_MQQB&&!IS_X5MQQB&&!IS_MACQQB&&!IS_IPADQQB&&isUserAgentMatch("Safari"),SAFARI_VERSION=getBrowserVersion("Version"),IS_ANDROID_WEBVIEW=/Android.*(wv|.0.0.0)/.test(USER_AGENT),IOS_VERSION=(()=>{if(IS_IPAD_PRO)return SAFARI_VERSION;if(IS_IOS){const e=USER_AGENT.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+=`.${e[2]}`),t}}return""})(),IOS_MAIN_VERSION=Number(IOS_VERSION.split(".")[0]),IS_IOS_13_OR_14=(()=>{const e=Number(IOS_VERSION.split(".")[0]);return 14===e||13===e})(),IS_LOCAL="undefined"!=typeof location&&("file:"===location.protocol||"localhost"===location.hostname||"127.0.0.1"===location.hostname),browserInfo=getBrowserInfo();function getBrowserInfo(){const e=new Map([[IS_FIREFOX,["Firefox",FIREFOX_VERSION]],[IS_EDG,["Edg",EDG_VERSION]],[IS_CHROME,["Chrome",CHROME_VERSION]],[IS_IOS_CHROME,["ChiOS",getBrowserVersion("CriOS")]],[IS_SAFARI&&!IS_IOS_CHROME,["Safari",SAFARI_VERSION]],[IS_TBS,["TBS",TBS_VERSION]],[IS_XWEB,["XWEB",XWEB_VERSION]],[IS_WECHAT&&IS_IPHONE,["WeChat",WECHAT_VERSION]],[IS_WQQB,["QQ(Win)",WQQB_VERSION]],[IS_MQQB,["QQ(Mobile)",MQQB_VERSION]],[IS_X5MQQB,["QQ(Mobile X5)",MQQB_VERSION]],[IS_MACQQB,["QQ(Mac)",MACQQB_VERSION]],[IS_IPADQQB,["QQ(iPad)",IPADQQB_VERSION]],[IS_MIBROWSER,["MI",MI_VERSION]],[IS_HUAWEIBROWSER,["HW",HUAWEI_VERSION]],[IS_SAMSUNGBROWSER,["Samsung",SAMSUNG_VERSION]],[IS_OPPOBROWSER,["OPPO",OPPO_VERSION]],[IS_VIVOBROWSER,["VIVO",VIVO_VERSION]],[IS_EDGE,["EDGE",EDGE_VERSION]],[IS_SOGOUM,["SogouMobile",SOGOUM_VERSION]],[IS_SOGOU,["Sogou",SOGOU_VERSION]]]);let t="unknown",r="unknown";return e.has(!0)&&([t,r]=e.get(!0)),{name:t,version:r}}var faceDetectionSeq=0,_FaceDetection=class e{constructor(e){this.core=e,__publicField(this,"seq"),__publicField(this,"log"),__publicField(this,"preLoadPromise"),__publicField(this,"_faceDetectorHash"),__publicField(this,"_visionTaskRegistry"),__publicField(this,"_faceStatus",!1),__publicField(this,"_startMissing"),__publicField(this,"_minConfidence",.8),__publicField(this,"_missingTimeout",1e3),__publicField(this,"_detectionInterval",300),__publicField(this,"_lastDetectTime",0),__publicField(this,"_videoFrameCallBackId"),__publicField(this,"_video"),__publicField(this,"_onFaceDetectionStateChanged"),faceDetectionSeq+=1,this.seq=faceDetectionSeq,this.log=e.log.createChild({id:`${this.getAlias()}${faceDetectionSeq}`}),this.log.info("created"),e.assetsPath&&(this.preLoadPromise=this.preload(e.assetsPath))}static isSupported(){if(CHROME_MAJOR_VERSION<90)return!1;const e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}resetState(){this._faceStatus=!1,this._startMissing=null,this._lastDetectTime=0}async preload(e){try{await this.core.initVisionTaskRegistry(e,["FaceDetector"])}catch(e){const{RtcError:t,ErrorCode:r}=this.core.errorModule;throw new t({code:r.INVALID_OPERATION,message:`FaceDetection preload error, please redeploy the assets of the npm package. detail: ${e}`})}}getGroup(){return"fd"}getName(){return e.Name}getAlias(){return"fd"}getValidateRule(e){switch(e){case"start":return startValidateRule(this.core);case"update":return updateValidateRule(this.core);case"stop":return stopValidateRule(this.core)}}getCurrentStatus(){const e=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();let t=e.length>0;if(t){const r=[];for(const t of e){const e=t.categories;for(const t of e)r.push(t.score)}t&&(t=!!r.find(e=>e>=this._minConfidence))}return t}detectFace(){const e=this.getCurrentStatus();this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&e!==this._faceStatus?(this._onFaceDetectionStateChanged(e),this._faceStatus=e,this._startMissing=null):Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._faceStatus!==e&&(e||0===this._missingTimeout?(this._onFaceDetectionStateChanged(e),this._faceStatus=e):this._startMissing||(this._startMissing=Date.now())),this._lastDetectTime=Date.now()),this._video&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)))}async initFaceDetection(){this._visionTaskRegistry=await window.VisionTaskRegistry.getInstance();const e=await this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);e&&(this._faceDetectorHash=e,this._video&&this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video))}updateOptions(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}async start(e){const{RtcError:t,ErrorCode:r}=this.core.errorModule;if(this.updateOptions(e),!this.preLoadPromise){if(!this.core.assetsPath)throw new t({code:r.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});this.preLoadPromise=this.preload(this.core.assetsPath)}await this.preLoadPromise;const i=this.core.room.videoManager.cameraTrack;if(!i)throw new t({code:r.DEVICE_ERROR,message:"please enable camera display to start detection"});const s=new(0,this.core.VideoPlayer)({id:"fd",track:i.mediaTrack,muted:!1,container:null,log:this.core.log});s.play(),this._video=s.element,await this.initFaceDetection().catch(e=>{throw new t({code:r.UNKNOWN_ERROR,message:e.message})}),this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)),i.on(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575700,value:1})}autoHandleMute(){var e;const t=this.core.room.videoManager.cameraTrack;this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId),null==t||t.once(this.core.enums.TrackEvent.UNMUTE,()=>{this._video&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)))})}async update(e){this.updateOptions(e),this.core.kvStatManager.addEnum({key:575701,value:1})}async stop(){var e,t;this.resetState(),null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId),null==(t=this.core.room.videoManager.cameraTrack)||t.off(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575702,value:1})}destroy(){this.stop()}};__publicField(_FaceDetection,"Name","FaceDetection");var FaceDetection=_FaceDetection,index_default=FaceDetection;export{index_default as default};export{FaceDetection};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).FaceDetection=t()}(this,function(){"use strict";function e(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t(e,t,r,n,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}function r(e){return function(){var r=this,n=arguments;return new Promise(function(o,i){var a=e.apply(r,n);function s(e){t(a,o,i,s,c,"next",e)}function c(e){t(a,o,i,s,c,"throw",e)}s(void 0)})}}function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=l(e))||t){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}function i(){
|
|
2
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
3
|
-
var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function s(r,n,o,i){var s=n&&n.prototype instanceof u?n:u,l=Object.create(s.prototype);return a(l,"_invoke",function(r,n,o){var i,a,s,u=0,l=o||[],f=!1,d={p:0,n:0,v:e,a:h,f:h.bind(e,4),d:function(t,r){return i=t,a=0,s=e,d.n=r,c}};function h(r,n){for(a=r,s=n,t=0;!f&&u&&!o&&t<l.length;t++){var o,i=l[t],h=d.p,v=i[2];r>3?(o=v===n)&&(s=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=h&&((o=r<2&&h<i[1])?(a=0,d.v=n,d.n=i[1]):h<v&&(o=r<3||i[0]>n||n>v)&&(i[4]=r,i[5]=n,d.n=v,a=0))}if(o||r>1)return c;throw f=!0,n}return function(o,l,v){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&h(l,v),a=l,s=v;(t=a<2?e:s)||!f;){i||(a?a<3?(a>1&&(d.n=-1),h(a,s)):d.n=s:d.v=s);try{if(u=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(f=d.n<0)?s:r.call(n,d))!==c)break}catch(t){i=e,a=1,s=t}finally{u=1}}return{value:t,done:f}}}(r,o,i),!0),l}var c={};function u(){}function l(){}function f(){}t=Object.getPrototypeOf;var d=[][n]?t(t([][n]())):(a(t={},n,function(){return this}),t),h=f.prototype=u.prototype=Object.create(d);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,a(e,o,"GeneratorFunction")),e.prototype=Object.create(h),e}return l.prototype=f,a(h,"constructor",f),a(f,"constructor",l),l.displayName="GeneratorFunction",a(f,o,"GeneratorFunction"),a(h),a(h,o,"Generator"),a(h,n,function(){return this}),a(h,"toString",function(){return"[object Generator]"}),(i=function(){return{w:s,m:v}})()}function a(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}a=function(e,t,r,n){function i(t,r){a(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},a(e,t,r,n)}function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t);else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return s}}(e,t)||l(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function l(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}var f=Object.defineProperty,d=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,v=Object.prototype.propertyIsEnumerable,m=function(e,t,r){return t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r},p=function(e,t){for(var r in t||(t={}))h.call(t,r)&&m(e,r,t[r]);if(d){var n,i=o(d(t));try{for(i.s();!(n=i.n()).done;){r=n.value;v.call(t,r)&&m(e,r,t[r])}}catch(e){i.e(e)}finally{i.f()}}return e},y=function(e,t,r){return m(e,"symbol"!==u(t)?t+"":t,r)},g={detectionInterval:{type:"number",required:!1,min:100,max:5e3},minConfidence:{type:"number",required:!1,min:0,max:1},missingTimeout:{type:"number",required:!1,min:0,max:5e3}},b=p({onFaceDetectionStateChanged:{required:!0}},g),w=p({onFaceDetectionStateChanged:{required:!1}},g);var _="undefined"==typeof navigator?"":navigator.userAgent,E=function(e){return new RegExp(e,"i").test(_)},S=function(e){if(E(e)){var t=new RegExp("".concat(e,"\\/([\\d.]+)")),r=_.match(t);if(r&&r[1])return r[1]}return""},k=function(e){if(E(e)){var t=new RegExp("".concat(e,"\\/(\\d+)")),r=_.match(t);if(r&&r[1])return parseFloat(r[1])}return NaN},T=/AppleWebKit\/([\d.]+)/i.exec(_);T&&parseFloat(T[1]);var C=E("iPad"),M="undefined"!=typeof navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&E("Macintosh"),O=E("iPhone")&&!C,D=E("iPod"),F=O||C||D||M,I=E("Android");!function(){if(I){var e=_.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(e){var t=e[1]&&parseFloat(e[1]),r=e[2]&&parseFloat(e[2]);if(t&&r)return parseFloat("".concat(e[1],".").concat(e[2]));if(t)return t}}}();I&&E("webkit");var P=E("Firefox"),R=S("Firefox");k("Firefox");var A=E("Edge"),B=S("Edge"),N=E("Edg"),V=S("Edg");k("Edg");var x=E("SogouMobileBrowser"),Q=S("SogouMobileBrowser"),j=E("MetaSr\\s"),H=S("MetaSr\\s"),L=E("TBS"),q=S("TBS"),W=E("XWEB"),G=S("XWEB");E("MSIE\\s8\\.0");var U=E("MSIE\\/\\d+");!function(){if(U){var e=/MSIE\s(\d+)\.\d/.exec(_),t=e&&parseFloat(e[1]);return!t&&/Trident\/7.0/i.test(_)&&/rv:11.0/.test(_)&&(t=11),t}}();var X=E("(micromessenger|webbrowser)"),K=S("MicroMessenger"),Y=!L&&E("MQQBrowser")&&E("COVC"),$=!L&&E("MQQBrowser")&&!E("COVC"),z=$||Y?S("MQQBrowser"):"",J=!L&&E(" QQBrowser"),Z=S(" QQBrowser"),ee=!L&&E("QQBrowserLite"),te=S("QQBrowserLite"),re=!L&&E("MQBHD"),ne=S("MQBHD");E("Windows"),!F&&E("MAC OS X"),!I&&E("Linux"),E("CrOS"),E("MicroMessenger"),E("UCBrowser"),E("Electron");var oe=E("MiuiBrowser"),ie=S("MiuiBrowser"),ae=E("HuaweiBrowser");E("Huawei")||E("HUAWEI"),E("Honor")||E("HONOR");var se=S("HuaweiBrowser"),ce=E("SamsungBrowser"),ue=S("SamsungBrowser"),le=E("HeyTapBrowser"),fe=S("HeyTapBrowser"),de=E("VivoBrowser"),he=S("VivoBrowser");E("OpenHarmony"),S("OpenHarmony");var ve=E("CriOS"),me=E("Chrome"),pe=!A&&!j&&!x&&!L&&!W&&!N&&!J&&!oe&&!ae&&!ce&&!le&&!de&&me;E("HeadlessChrome");var ye=k("Chrome"),ge=S("Chrome");k("Electron");var be=!me&&!$&&!Y&&!ee&&!re&&E("Safari"),we=S("Version"),_e=function(){if(M)return we;if(F){var e=_.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){var t=e[1];return e[2]&&(t+=".".concat(e[2])),t}}return""}();Number(_e.split(".")[0]),Number(_e.split(".")[0]),function(){var e=new Map([[P,["Firefox",R]],[N,["Edg",V]],[pe,["Chrome",ge]],[ve,["ChiOS",S("CriOS")]],[be&&!ve,["Safari",we]],[L,["TBS",q]],[W,["XWEB",G]],[X&&O,["WeChat",K]],[J,["QQ(Win)",Z]],[$,["QQ(Mobile)",z]],[Y,["QQ(Mobile X5)",z]],[ee,["QQ(Mac)",te]],[re,["QQ(iPad)",ne]],[oe,["MI",ie]],[ae,["HW",se]],[ce,["Samsung",ue]],[le,["OPPO",fe]],[de,["VIVO",he]],[A,["EDGE",B]],[x,["SogouMobile",Q]],[j,["Sogou",H]]]),t="unknown",r="unknown";if(e.has(!0)){var n=s(e.get(!0),2);t=n[0],r=n[1]}}();var Ee=0,Se=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.core=t,y(this,"seq"),y(this,"log"),y(this,"preLoadPromise"),y(this,"_faceDetectorHash"),y(this,"_visionTaskRegistry"),y(this,"_faceStatus",!1),y(this,"_startMissing"),y(this,"_minConfidence",.8),y(this,"_missingTimeout",1e3),y(this,"_detectionInterval",300),y(this,"_lastDetectTime",0),y(this,"_videoFrameCallBackId"),y(this,"_video"),y(this,"_onFaceDetectionStateChanged"),Ee+=1,this.seq=Ee,this.log=t.log.createChild({id:"".concat(this.getAlias()).concat(Ee)}),this.log.info("created"),t.assetsPath&&(this.preLoadPromise=this.preload(t.assetsPath))}return t=e,a=[{key:"resetState",value:function(){this._faceStatus=!1,this._startMissing=null,this._lastDetectTime=0}},{key:"preload",value:(h=r(i().m(function e(t){var r,n,o,a;return i().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,this.core.initVisionTaskRegistry(t,["FaceDetector"]);case 1:e.n=3;break;case 2:throw e.p=2,a=e.v,r=this.core.errorModule,n=r.RtcError,o=r.ErrorCode,new n({code:o.INVALID_OPERATION,message:"FaceDetection preload error, please redeploy the assets of the npm package. detail: ".concat(a)});case 3:return e.a(2)}},e,this,[[0,2]])})),function(e){return h.apply(this,arguments)})},{key:"getGroup",value:function(){return"fd"}},{key:"getName",value:function(){return e.Name}},{key:"getAlias",value:function(){return"fd"}},{key:"getValidateRule",value:function(e){switch(e){case"start":return t=this.core,{type:"object",required:!0,properties:b,validate:function(e,r,n,o){var i,a=t.errorModule,s=a.RtcError,c=a.ErrorCode,l=a.ErrorCodeDictionary,f=e.onFaceDetectionStateChanged;if(f&&!t.utils.isFunction(f))throw new s({code:c.INVALID_PARAMETER,extraCode:l.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onFaceDetectionStateChanged",value:u(f),rule:{type:"Function"}}});if(!(null==(i=t.room.videoManager.cameraTrack)?void 0:i.mediaTrack))throw new s({code:c.INVALID_OPERATION,extraCode:l.INVALID_OPERATION_NEED_VIDEO,fnName:n})}};case"update":return function(e){return{type:"object",required:!0,properties:w,validate:function(t,r,n,o){var i,a=e.errorModule,s=a.RtcError,c=a.ErrorCode,l=a.ErrorCodeDictionary,f=t.onFaceDetectionStateChanged;if(f&&!e.utils.isFunction(f))throw new s({code:c.INVALID_PARAMETER,extraCode:l.INVALID_PARAMETER_TYPE,fnName:n,messageParams:{key:"onFaceDetectionStateChanged",value:u(f),rule:{type:"Function"}}});if(!(null==(i=e.room.videoManager.cameraTrack)?void 0:i.mediaTrack))throw new s({code:c.INVALID_OPERATION,extraCode:l.INVALID_OPERATION_NEED_VIDEO,fnName:n})}}}(this.core);case"stop":return this.core,{name:"StopFaceDetectionOptions",required:!1}}var t}},{key:"getCurrentStatus",value:function(){var e=this,t=this._visionTaskRegistry.getResult(this._faceDetectorHash).detections;this._visionTaskRegistry.resetHashResults();var r=t.length>0;if(r){var n,i=[],a=o(t);try{for(a.s();!(n=a.n()).done;){var s,c=o(n.value.categories);try{for(c.s();!(s=c.n()).done;){var u=s.value;i.push(u.score)}}catch(e){c.e(e)}finally{c.f()}}}catch(e){a.e(e)}finally{a.f()}r&&(r=!!i.find(function(t){return t>=e._minConfidence}))}return r}},{key:"detectFace",value:function(){var e=this.getCurrentStatus();this._startMissing&&Date.now()-this._startMissing>=this._missingTimeout&&e!==this._faceStatus?(this._onFaceDetectionStateChanged(e),this._faceStatus=e,this._startMissing=null):Date.now()-this._lastDetectTime>=this._detectionInterval&&(this._faceStatus!==e&&(e||0===this._missingTimeout?(this._onFaceDetectionStateChanged(e),this._faceStatus=e):this._startMissing||(this._startMissing=Date.now())),this._lastDetectTime=Date.now()),this._video&&(this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)))}},{key:"initFaceDetection",value:(d=r(i().m(function e(){var t;return i().w(function(e){for(;;)switch(e.n){case 0:return e.n=1,window.VisionTaskRegistry.getInstance();case 1:return this._visionTaskRegistry=e.v,e.n=2,this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);case 2:if(t=e.v){e.n=3;break}return e.a(2);case 3:this._faceDetectorHash=t,this._video&&this._visionTaskRegistry.setVideo(this._faceDetectorHash,this._video);case 4:return e.a(2)}},e,this)})),function(){return d.apply(this,arguments)})},{key:"updateOptions",value:function(e){e.onFaceDetectionStateChanged&&(this._onFaceDetectionStateChanged=e.onFaceDetectionStateChanged),e.detectionInterval&&(this._detectionInterval=e.detectionInterval),e.minConfidence&&(this._minConfidence=e.minConfidence),(0===e.missingTimeout||e.missingTimeout)&&(this._missingTimeout=e.missingTimeout)}},{key:"start",value:(f=r(i().m(function e(t){var r,n,o,a,s,c;return i().w(function(e){for(;;)switch(e.n){case 0:if(r=this.core.errorModule,n=r.RtcError,o=r.ErrorCode,this.updateOptions(t),this.preLoadPromise){e.n=2;break}if(this.core.assetsPath){e.n=1;break}throw new n({code:o.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});case 1:this.preLoadPromise=this.preload(this.core.assetsPath);case 2:return e.n=3,this.preLoadPromise;case 3:if(a=this.core.room.videoManager.cameraTrack){e.n=4;break}throw new n({code:o.DEVICE_ERROR,message:"please enable camera display to start detection"});case 4:return s=this.core.VideoPlayer,(c=new s({id:"fd",track:a.mediaTrack,muted:!1,container:null,log:this.core.log})).play(),this._video=c.element,e.n=5,this.initFaceDetection().catch(function(e){throw new n({code:o.UNKNOWN_ERROR,message:e.message})});case 5:this._videoFrameCallBackId=this._video.requestVideoFrameCallback(this.detectFace.bind(this)),a.on(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575700,value:1});case 6:return e.a(2)}},e,this)})),function(e){return f.apply(this,arguments)})},{key:"autoHandleMute",value:function(){var e,t=this,r=this.core.room.videoManager.cameraTrack;this._faceStatus&&(this._faceStatus=!1,this._onFaceDetectionStateChanged(!1)),null==(e=this._video)||e.cancelVideoFrameCallback(this._videoFrameCallBackId),null==r||r.once(this.core.enums.TrackEvent.UNMUTE,function(){t._video&&(t._videoFrameCallBackId=t._video.requestVideoFrameCallback(t.detectFace.bind(t)))})}},{key:"update",value:(l=r(i().m(function e(t){return i().w(function(e){for(;;)switch(e.n){case 0:this.updateOptions(t),this.core.kvStatManager.addEnum({key:575701,value:1});case 1:return e.a(2)}},e,this)})),function(e){return l.apply(this,arguments)})},{key:"stop",value:(c=r(i().m(function e(){var t,r;return i().w(function(e){for(;;)switch(e.n){case 0:this.resetState(),null==(t=this._video)||t.cancelVideoFrameCallback(this._videoFrameCallBackId),null==(r=this.core.room.videoManager.cameraTrack)||r.off(this.core.enums.TrackEvent.MUTE,this.autoHandleMute,this),this.core.kvStatManager.addEnum({key:575702,value:1});case 1:return e.a(2)}},e,this)})),function(){return c.apply(this,arguments)})},{key:"destroy",value:function(){this.stop()}}],s=[{key:"isSupported",value:function(){if(ye<90)return!1;var e=document.createElement("canvas").getContext("webgl2");return!!(e&&e instanceof WebGL2RenderingContext)}}],a&&n(t.prototype,a),s&&n(t,s),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,a,s,c,l,f,d,h}();return y(Se,"Name","FaceDetection"),Se});
|