1.1.7 • Published 9 months ago
live-cat-library v1.1.7
live-cat-library
This is a component library for 3DCAT
live-cat Launcher
Features:
- LauncherUI
- LauncherPrivateUI
- Loading Component
- ImeSwitchComponent
- 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', () => launcherUI?.launcher?.resumeVideoStream())
}
}
//Microphone
//Start capture audio to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
if (phase === 'data-channel-open') {
launcherUI?.launcher?.openMicrophone()
}
}
//Stop
launcherUI?.launcher?.closeMicrophone()
//Camera
const baseOptionsType = {
address: 'xxxx',
appKey: 'xxxx',
startType: 1,
enableVirtualCamera: true,
}
let launcherUI = new LauncherUI(baseOptionsType, container)
//Start capture video to node
onPhaseChange: (phase: Phase, deltaTime: number) => {
if (phase === 'data-channel-open') {
launcherUI?.launcher?.openCamera()
}
}
//Stop
launcherUI?.launcher?.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 launcherUI = 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 launcherUI = 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
1.1.7
9 months ago
1.1.6
9 months ago
1.1.5
10 months ago
1.1.4
10 months ago
1.1.3
10 months ago
1.1.2
10 months ago
1.1.1
11 months ago
1.1.0
11 months ago
1.0.0
12 months ago
0.6.7
1 year ago
0.6.6
1 year ago
0.6.9
1 year ago
0.6.8
1 year ago
0.6.10
1 year ago
0.6.12
1 year ago
0.6.11
1 year ago
0.6.5
1 year ago
0.6.4
1 year ago
0.6.3
1 year ago
0.6.2
1 year ago
0.6.1
1 year ago
0.6.0
1 year ago
0.5.5
1 year ago
0.5.4
2 years ago
0.5.3
2 years ago
0.5.2
2 years ago
0.5.1
2 years ago
0.5.0
2 years ago
0.4.0
2 years ago
0.3.0
2 years ago
0.3.2
2 years ago
0.3.1
2 years ago
0.2.9
2 years ago
0.2.8
2 years ago
0.2.7
2 years ago
0.2.6
2 years ago
0.2.5
2 years ago
0.2.4
2 years ago
0.2.3
2 years ago
0.2.2
2 years ago
0.2.1
2 years ago
0.2.0
2 years ago
0.1.3
2 years ago
0.1.2
2 years ago
0.1.1
2 years ago
0.1.0
2 years ago