Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Jim1874/live-cat-library

Repository files navigation

live-cat-library

This is a component library for 3DCAT

live-cat Launcher

npm bundle size

Features:

  • LauncherUI
  • LauncherPrivateUI
  • Loading Component
  • ImeSwitchComponent
  • VirtualKeyboardComponent
  • FakeImeInputComponent
  • KeepActiveHelper

Technologies

  • live-cat v1.1.8
  • Svelte v3.57.0
  • Rollup v2.78.0
  • Typescript v4.9.5

quick start

instantiation parameter

interface BaseOptionsType {
 address: string; // address
 appId?: string; // appId
 appKey?: string; // appKey
 appSecret?: string; // appSecret
 startType?: StartType;
 castScreenMaxQty?: number;
 castScreenNickname?: string;
 castScreenPwd?: string;
 isCastScreenMaster?: boolean;
 serverIp?: string; //for coturn server
 joinType?: ScreenJoinType; //only screen
 optionalParam?: string; // command line parameters
 exeParameter?: string; // command line parameters for privatization
 enableVirtualCamera?: boolean; // setup camera enable
}

Options detail to see live-cat

type UIOptions = Options & loadingOptions & ExtendUIOptions;
interface loadingOptions {
 loadingImage: string | HTMLImageElement;
 loadingBgImage: { portrait: string; landscape: string };
 loadingBarImage: string | HTMLImageElement;
 showDefaultLoading: boolean;
 showFakePercent: boolean;
 phaseChanged: boolean;
 percentChanged: boolean;
}
interface ExtendUIOptions {
 onChange: (cb: OnChange) => void;
 onQueue: (rank: number) => void;
 onLoadingError: (err: LoadingError) => void;
 onTaskId: (taskId: number) => void;
 onShowUserList: (showCastScreenUsers: boolean) => void;
 onRunningOptions: (opt: OnRunningOptions) => void;
}
interface OnChange {
 phase: Phase;
 fakePercent: number;
 deltaTime: number;
}
type Phase =
 | "initial"
 | "signaling-connected"
 | "node-ready"
 | "end-candidate"
 | "peer-connection-connected"
 | "data-channel-open"
 | "streaming-ready"
 | "loaded-metadata"
 | "streaming-playing";
interface LoadingError {
 code: number | string;
 type: "app" | "task" | "connection" | "reConnection";
 reason: string | ErrorState;
}
type ErrorState = "disconnect" | "afk" | "kick" | "hangup";
interface OnRunningOptions {
 token: string;
 coturns: RTCIceServer[];
 signaling: string;
}
enum StartType {
 NormalMode = 1,
 ScreenMode = 3,
}
enum ScreenJoinType {
 Secret = 1,
 Link,
}
//when terminal is ios and wechat
onPhaseChange: (phase: Phase, deltaTime: number) => {
 if (phase === "data-channel-open") {
 /* NOTE: Autoplay video need user activation gesture
 * @see https://html.spec.whatwg.org/multipage/interaction.html#user-activation-processing-model
 */
 someTriggerElement.addEventListener("click", () =>
 launcher?.launcherBase?.resumeVideoStream()
 );
 }
};
//Microphone
//Start capture audio to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
 if (phase === "data-channel-open") {
 launcher?.launcherBase?.openMicrophone();
 }
};
//Stop
launcher?.launcherBase?.closeMicrophone();
//Camera
const baseOptionsType = {
 address: "xxxx",
 appKey: "xxxx",
 startType: 1,
 enableVirtualCamera: true,
};
let launcher = new LauncherUI(baseOptionsType, container);
//Start capture video to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
 if (phase === "data-channel-open") {
 launcher?.launcherBase?.openCamera();
 }
};
//Stop
launcher?.launcherBase?.closeCamera();
// Public Cloud
import { LauncherUI } from "live-cat-library";
const container = document.querySelector("body");
document.querySelector("body").style.width = "100%";
document.querySelector("body").style.height = "100%";
const baseOptionsType = {
 address: "https://app.3dcat.live",
 appKey: "xxxx",
 startType: 1,
};
const uiOptions = {
 loadingImage: "",
};
let launcher = new LauncherUI(baseOptionsType, container, uiOptions);
window.addEventListener("DOMContentLoaded", () => {
 if (
 navigator.userAgent.includes("miniProgram") ||
 navigator.userAgent.includes("MicroMessenger")
 ) {
 //wechat
 document.addEventListener("WeixinJSBridgeReady", bootstrap, false);
 } else {
 bootstrap();
 }
});
// Private Cloud
import { LauncherPrivateUI } from "live-cat-library";
const container = document.querySelector("body");
document.querySelector("body").style.width = "100%";
document.querySelector("body").style.height = "100%";
const baseOptionsType = {
 address: "xxxxx",
 appKey: "xxxx",
 startType: 1,
};
const uiOptions = {
 loadingImage: "",
};
let launcher = new LauncherPrivateUI(baseOptionsType, container, uiOptions);
window.addEventListener("DOMContentLoaded", () => {
 if (
 navigator.userAgent.includes("miniProgram") ||
 navigator.userAgent.includes("MicroMessenger")
 ) {
 //wechat
 document.addEventListener("WeixinJSBridgeReady", bootstrap, false);
 } else {
 bootstrap();
 }
});

License

MIT

About

multiple business components for 3dcat.live

Resources

License

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /