@tencent-rtc/mcp 1.4.6 → 1.6.0-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/cursor-setting.png +0 -0
- package/knowledge/bm25-cache.js +74 -0
- package/knowledge/bm25-cache.js.map +1 -0
- package/knowledge/bm25.js +148 -0
- package/knowledge/bm25.js.map +1 -0
- package/knowledge/build-index.js +70 -0
- package/knowledge/build-index.js.map +1 -0
- package/knowledge/chunker.js +168 -0
- package/knowledge/chunker.js.map +1 -0
- package/knowledge/content-loader.js +40 -0
- package/knowledge/content-loader.js.map +1 -0
- package/knowledge/doc-url-resolver.js +143 -0
- package/knowledge/doc-url-resolver.js.map +1 -0
- package/knowledge/extractors.js +26 -0
- package/knowledge/extractors.js.map +1 -0
- package/knowledge/path-meta.js +185 -0
- package/knowledge/path-meta.js.map +1 -0
- package/knowledge/search/exact-lookup.js +498 -0
- package/knowledge/search/exact-lookup.js.map +1 -0
- package/knowledge/search/filter-pool.js +105 -0
- package/knowledge/search/filter-pool.js.map +1 -0
- package/knowledge/search/product-scope-intent.js +41 -0
- package/knowledge/search/product-scope-intent.js.map +1 -0
- package/knowledge/search/requires-framework.js +82 -0
- package/knowledge/search/requires-framework.js.map +1 -0
- package/knowledge/search/search-knowledge.js +230 -0
- package/knowledge/search/search-knowledge.js.map +1 -0
- package/mcp-server-prompt.png +0 -0
- package/package.json +1 -1
- package/resource/_schema/feature-aliases.yaml +10 -0
- package/resource/_schema/goal-tags.yaml +72 -0
- package/resource/_schema/products.yaml +19 -0
- package/resource/_schema/trtc-intents.yaml +27 -0
- package/resource/_schema/types.yaml +43 -0
- package/resource/index/component-slugs.json +1 -0
- package/resource/index/doc-source-urls.json +1 -0
- package/resource/index/manifest.json +1 -0
- package/resource/{doc → integration}/callkit/preset/android/integration.md +34 -28
- package/resource/integration/callkit/preset/flutter/integration.md +346 -0
- package/resource/integration/callkit/preset/ios/integration.md +408 -0
- package/resource/integration/callkit/preset/react/integration.md +362 -0
- package/resource/integration/callkit/preset/vue/integration.md +356 -0
- package/resource/integration/chat/preset/android/integration.md +500 -0
- package/resource/integration/chat/preset/flutter/integration.md +370 -0
- package/resource/integration/chat/preset/ios/integration.md +566 -0
- package/resource/integration/chat/preset/react/integration.md +490 -0
- package/resource/integration/chat/preset/vue/integration.md +504 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-list-integration.md +26 -22
- package/resource/{doc → integration}/livekit/preset/live/vue/live-player-desk-integration.md +22 -18
- package/resource/integration/livekit/preset/live/vue/live-player-h5-integration.md +309 -0
- package/resource/{doc → integration}/livekit/preset/live/vue/live-pusher-integration.md +47 -39
- package/resource/integration/roomkit/preset/vue/integration.md +562 -0
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +828 -0
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +897 -0
- package/resource/knowledge/callkit/core-sdk/android/offline-push.md +363 -0
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +1111 -0
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +1132 -0
- package/resource/{doc → knowledge}/callkit/core-sdk/flutter/offline-push.md +174 -151
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +1084 -0
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +1252 -0
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +534 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +953 -0
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +1061 -0
- package/resource/knowledge/callkit/faq/android.md +92 -0
- package/resource/{doc/callkit/faq/android-faq.md → knowledge/callkit/faq/common.md} +11 -12
- package/resource/knowledge/callkit/faq/error-code.md +67 -0
- package/resource/knowledge/callkit/faq/flutter.md +52 -0
- package/resource/knowledge/callkit/faq/ios.md +104 -0
- package/resource/knowledge/callkit/faq/web.md +74 -0
- package/resource/knowledge/callkit/preset/android/api.md +412 -0
- package/resource/knowledge/callkit/preset/flutter/api.md +22 -0
- package/resource/knowledge/callkit/preset/ios/api.md +234 -0
- package/resource/knowledge/callkit/preset/web/api.md +83 -0
- package/resource/knowledge/chat/preset/android/features/chat-setting.md +74 -0
- package/resource/knowledge/chat/preset/android/features/contact-list.md +43 -0
- package/resource/knowledge/chat/preset/android/features/conversation-list.md +117 -0
- package/resource/knowledge/chat/preset/android/features/language.md +136 -0
- package/resource/knowledge/chat/preset/android/features/message-input.md +57 -0
- package/resource/knowledge/chat/preset/android/features/message-list.md +142 -0
- package/resource/knowledge/chat/preset/android/features/search.md +64 -0
- package/resource/knowledge/chat/preset/android/features/theme.md +222 -0
- package/resource/knowledge/chat/preset/android-view/integration.md +300 -0
- package/resource/knowledge/chat/preset/flutter/features/chat-setting.md +64 -0
- package/resource/knowledge/chat/preset/flutter/features/contact-list.md +40 -0
- package/resource/knowledge/chat/preset/flutter/features/conversation-list.md +129 -0
- package/resource/knowledge/chat/preset/flutter/features/language.md +104 -0
- package/resource/knowledge/chat/preset/flutter/features/message-input.md +54 -0
- package/resource/knowledge/chat/preset/flutter/features/message-list.md +158 -0
- package/resource/knowledge/chat/preset/flutter/features/search.md +59 -0
- package/resource/knowledge/chat/preset/flutter/features/theme.md +261 -0
- package/resource/knowledge/chat/preset/ios/features/chat-setting.md +94 -0
- package/resource/knowledge/chat/preset/ios/features/contact-list.md +119 -0
- package/resource/knowledge/chat/preset/ios/features/conversation-list.md +134 -0
- package/resource/knowledge/chat/preset/ios/features/language.md +125 -0
- package/resource/knowledge/chat/preset/ios/features/message-input.md +69 -0
- package/resource/knowledge/chat/preset/ios/features/message-list.md +162 -0
- package/resource/knowledge/chat/preset/ios/features/search.md +93 -0
- package/resource/knowledge/chat/preset/ios/features/theme.md +270 -0
- package/resource/{doc/chatkit/ios → knowledge/chat/preset/ios-uikit}/integration.md +160 -158
- package/resource/knowledge/chat/preset/react/features/chat-setting.md +101 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/contact-list.md +43 -41
- package/resource/knowledge/chat/preset/react/features/conversation-actions.md +215 -0
- package/resource/knowledge/chat/preset/react/features/conversation-list.md +339 -0
- package/resource/knowledge/chat/preset/react/features/conversation-preview.md +101 -0
- package/resource/knowledge/chat/preset/react/features/conversation-search.md +61 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/message-input.md +117 -156
- package/resource/knowledge/chat/preset/react/features/message-list.md +297 -0
- package/resource/{doc/chatkit/react/components → knowledge/chat/preset/react/features}/search.md +65 -59
- package/resource/knowledge/chat/preset/react/features/theme.md +93 -0
- package/resource/knowledge/chat/preset/vue/features/chat-header.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/chat-setting.md +79 -0
- package/resource/knowledge/chat/preset/vue/features/contact-list.md +277 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-actions.md +234 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +331 -0
- package/resource/knowledge/chat/preset/vue/features/conversation-preview.md +216 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/conversation-search.md +13 -13
- package/resource/knowledge/chat/preset/vue/features/message-input.md +551 -0
- package/resource/knowledge/chat/preset/vue/features/message-list.md +350 -0
- package/resource/{doc/chatkit/vue/components → knowledge/chat/preset/vue/features}/search.md +79 -73
- package/resource/knowledge/chat/preset/vue/features/theme.md +136 -0
- package/resource/knowledge/chat/urls/error-code.md +17 -0
- package/resource/knowledge/chat/urls/product.md +43 -0
- package/resource/knowledge/chat/urls/restapi.md +204 -0
- package/resource/knowledge/chat/urls/sdk/android.md +80 -0
- package/resource/knowledge/chat/urls/sdk/flutter.md +71 -0
- package/resource/knowledge/chat/urls/sdk/ios.md +80 -0
- package/resource/knowledge/chat/urls/sdk/web.md +80 -0
- package/resource/knowledge/chat/urls/webhook.md +68 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/AudioEffectStore.md +286 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BarrageStore.md +174 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/BattleStore.md +329 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CameraView.md +55 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoGuestStore.md +434 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/CoHostStore.md +362 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/DeviceStore.md +466 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/GiftStore.md +173 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LikeStore.md +51 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveAudienceStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LiveSeatStore.md +488 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/android/LoginStore.md +219 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/AudioEffectStore.md +282 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BarrageStore.md +212 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BaseBeautyStore.md +153 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/BattleStore.md +312 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoGuestStore.md +404 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/CoHostStore.md +334 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/DeviceStore.md +426 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/GiftStore.md +166 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LikeStore.md +52 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveAudienceStore.md +281 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveCoreView.md +150 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LiveSeatStore.md +438 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/flutter/LoginStore.md +190 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/AudioEffectStore.md +291 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BarrageStore.md +192 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BaseBeautyStore.md +146 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/BattleStore.md +309 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoGuestStore.md +370 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/CoHostStore.md +339 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/DeviceStore.md +503 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/GiftStore.md +188 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LikeStore.md +51 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveAudienceStore.md +289 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveCoreView.md +78 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LiveSeatStore.md +487 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/ios/LoginStore.md +183 -0
- package/resource/knowledge/livekit/core-sdk/api-reference/web/index.md +736 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-base-beauty.md +17 -15
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-gift.md +102 -89
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-integration.md +45 -43
- package/resource/{doc → knowledge}/livekit/core-sdk/live/android/live-live-list.md +23 -20
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audience-list.md +41 -41
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-audio-effect.md +70 -69
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-barrage.md +68 -71
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-base-beauty.md +43 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-co-guest-interaction.md +59 -56
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-gift.md +103 -105
- package/resource/knowledge/livekit/core-sdk/live/flutter/live-host-interaction.md +869 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-integration.md +84 -87
- package/resource/{doc → knowledge}/livekit/core-sdk/live/flutter/live-live-list.md +43 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-base-beauty.md +15 -14
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-co-guest-interaction.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-host-interaction.md +41 -37
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-integration.md +40 -40
- package/resource/{doc → knowledge}/livekit/core-sdk/live/ios/live-live-list.md +19 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audience-list.md +53 -47
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-gift.md +94 -81
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-integration.md +45 -42
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/android/voice-room-list.md +23 -20
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audience-list.md +260 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-audio-effect.md +598 -0
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-barrage.md +490 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-co-guest-interaction.md +65 -59
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-gift.md +424 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/flutter/voice-integration.md +69 -76
- package/resource/knowledge/livekit/core-sdk/voice/flutter/voice-room-list.md +726 -0
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audience-list.md +11 -10
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-audio-effect.md +28 -24
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-barrage.md +22 -18
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-co-guest-interaction.md +41 -33
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-gift.md +54 -50
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-host-interaction.md +35 -30
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-integration.md +49 -46
- package/resource/{doc → knowledge}/livekit/core-sdk/voice/ios/voice-room-list.md +19 -18
- package/resource/knowledge/livekit/faq/error-code.md +193 -0
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/barrage.md +56 -53
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-audience-list.md +22 -21
- package/resource/{doc/livekit/preset/live/vue/components → knowledge/livekit/preset/live/vue/features}/live-view.md +34 -32
- package/resource/knowledge/push/config/android.md +92 -0
- package/resource/knowledge/push/config/harmonyos.md +83 -0
- package/resource/knowledge/push/config/ios.md +254 -0
- package/resource/knowledge/push/config/react-native.md +254 -0
- package/resource/knowledge/push/config/unity.md +209 -0
- package/resource/knowledge/push/config/unreal-engine.md +194 -0
- package/resource/knowledge/push/integration/android.md +404 -0
- package/resource/knowledge/push/integration/flutter.md +465 -0
- package/resource/knowledge/push/integration/harmonyos.md +63 -0
- package/resource/knowledge/push/integration/ios.md +246 -0
- package/resource/knowledge/push/integration/react-native.md +366 -0
- package/resource/knowledge/push/integration/uni-app.md +208 -0
- package/resource/knowledge/push/integration/unity.md +389 -0
- package/resource/knowledge/push/integration/unreal-engine.md +390 -0
- package/resource/knowledge/push/overview/prepare.md +60 -0
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +241 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +588 -0
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +364 -0
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +340 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +230 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +797 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +233 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +569 -0
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +325 -0
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +322 -0
- package/resource/knowledge/roomkit/core-sdk/vue/call-user-to-room.md +221 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/device-detection.md +49 -48
- package/resource/knowledge/roomkit/core-sdk/vue/device-state.md +461 -0
- package/resource/knowledge/roomkit/core-sdk/vue/free-beauty-panel.md +216 -0
- package/resource/knowledge/roomkit/core-sdk/vue/room-chat.md +370 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-participant-state.md +61 -60
- package/resource/knowledge/roomkit/core-sdk/vue/room-state.md +280 -0
- package/resource/{doc/roomkit/vue/features → knowledge/roomkit/core-sdk/vue}/room-view.md +57 -56
- package/resource/knowledge/roomkit/core-sdk/vue/schedule-room.md +319 -0
- package/resource/knowledge/roomkit/core-sdk/vue/screen-share.md +267 -0
- package/resource/knowledge/roomkit/core-sdk/vue/virtual-background.md +261 -0
- package/resource/knowledge/roomkit/preset/android/integration.md +396 -0
- package/resource/knowledge/roomkit/preset/flutter/integration.md +404 -0
- package/resource/knowledge/roomkit/preset/ios/integration.md +369 -0
- package/resource/knowledge/roomkit/preset/react/integration.md +576 -0
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +44 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/21-advanced-auto-play-policy.md +8 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/22-advanced-audio-mixer.md +19 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/23-advanced-support-detection.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/24-advanced-network-quality.md +8 -8
- package/resource/{doc → knowledge}/rtcengine/web/plugin/25-advanced-device-change.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/26-advanced-publish-cdn-stream.md +6 -6
- package/resource/{doc → knowledge}/rtcengine/web/plugin/27-advanced-small-stream.md +3 -3
- package/resource/{doc → knowledge}/rtcengine/web/plugin/29-advanced-water-mark.md +18 -0
- package/resource/{doc → knowledge}/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/{doc → knowledge}/rtcengine/web/plugin/34-advanced-proxy.md +2 -2
- package/resource/{doc → knowledge}/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/trtc/android/TRTCCloud.md +1915 -0
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +1029 -0
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +1095 -0
- package/resource/knowledge/trtc/android/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/android/TXBeautyManager.md +415 -0
- package/resource/knowledge/trtc/android/TXDeviceManager.md +169 -0
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +125 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +2069 -0
- package/resource/knowledge/trtc/c++/ITRTCStatistics.md +73 -0
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +502 -0
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +391 -0
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +1191 -0
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +931 -0
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +127 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +2118 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDef.md +975 -0
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +1131 -0
- package/resource/knowledge/trtc/ios/TRTCStatistics.md +68 -0
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +423 -0
- package/resource/knowledge/trtc/ios/TXBeautyManager.md +416 -0
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +387 -0
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +127 -0
- package/server.js +35 -10
- package/server.js.map +1 -1
- package/tools/call/get_native_call_uikit_integration.js +2 -3
- package/tools/call/get_native_call_uikit_integration.js.map +1 -1
- package/tools/call/get_native_callkit_core_integration.js +2 -5
- package/tools/call/get_native_callkit_core_integration.js.map +1 -1
- package/tools/call/get_web_call_uikit_integration.js +2 -3
- package/tools/call/get_web_call_uikit_integration.js.map +1 -1
- package/tools/chat/get_native_chat_uikit_integration.js +2 -3
- package/tools/chat/get_native_chat_uikit_integration.js.map +1 -1
- package/tools/chat/get_web_chat_uikit_integration.js +2 -3
- package/tools/chat/get_web_chat_uikit_integration.js.map +1 -1
- package/tools/common/present_framework_choice.js +19 -13
- package/tools/common/present_framework_choice.js.map +1 -1
- package/tools/common/record_answer.js +19 -25
- package/tools/common/record_answer.js.map +1 -1
- package/tools/common/record_feedback.js +17 -30
- package/tools/common/record_feedback.js.map +1 -1
- package/tools/common/search_trtc_knowledge.js +45 -0
- package/tools/common/search_trtc_knowledge.js.map +1 -0
- package/tools/definitions/get_native_call_uikit_integration_def.js +3 -1
- package/tools/definitions/get_native_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_callkit_core_integration_def.js +5 -3
- package/tools/definitions/get_native_callkit_core_integration_def.js.map +1 -1
- package/tools/definitions/get_native_chat_uikit_integration_def.js +5 -2
- package/tools/definitions/get_native_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_native_livekit_core_integration_def.js +6 -5
- package/tools/definitions/get_native_livekit_core_integration_def.js.map +1 -1
- package/tools/definitions/get_web_call_uikit_integration_def.js +4 -2
- package/tools/definitions/get_web_call_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_chat_uikit_integration_def.js +2 -0
- package/tools/definitions/get_web_chat_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_live_uikit_integration_def.js +5 -5
- package/tools/definitions/get_web_live_uikit_integration_def.js.map +1 -1
- package/tools/definitions/get_web_room_core_integration_def.js +50 -0
- package/tools/definitions/get_web_room_core_integration_def.js.map +1 -0
- package/tools/definitions/get_web_room_uikit_integration_def.js +5 -4
- package/tools/definitions/get_web_room_uikit_integration_def.js.map +1 -1
- package/tools/definitions/integration-boundary.js +6 -0
- package/tools/definitions/integration-boundary.js.map +1 -0
- package/tools/definitions/present_framework_choice_def.js +12 -10
- package/tools/definitions/present_framework_choice_def.js.map +1 -1
- package/tools/definitions/record_answer_def.js +19 -17
- package/tools/definitions/record_answer_def.js.map +1 -1
- package/tools/definitions/record_feedback_def.js +14 -13
- package/tools/definitions/record_feedback_def.js.map +1 -1
- package/tools/definitions/search_trtc_knowledge_def.js +40 -0
- package/tools/definitions/search_trtc_knowledge_def.js.map +1 -0
- package/tools/index.js +5 -36
- package/tools/index.js.map +1 -1
- package/tools/live/get_native_livekit_core_integration.js +1 -3
- package/tools/live/get_native_livekit_core_integration.js.map +1 -1
- package/tools/live/get_web_live_uikit_integration.js +2 -4
- package/tools/live/get_web_live_uikit_integration.js.map +1 -1
- package/tools/room/get_web_room_core_integration.js +48 -0
- package/tools/room/get_web_room_core_integration.js.map +1 -0
- package/tools/room/get_web_room_uikit_integration.js +2 -3
- package/tools/room/get_web_room_uikit_integration.js.map +1 -1
- package/utils/generate-structured-result.js +24 -30
- package/utils/generate-structured-result.js.map +1 -1
- package/utils/get-doc-content.js +14 -8
- package/utils/get-doc-content.js.map +1 -1
- package/utils/report-cls-client.js +18 -20
- package/utils/report-cls-client.js.map +1 -1
- package/utils/report-es-client.js +1 -1
- package/resource/doc/callkit/core-sdk/.gitkeep +0 -0
- package/resource/doc/callkit/core-sdk/android/answer-call.md +0 -852
- package/resource/doc/callkit/core-sdk/android/make-call.md +0 -954
- package/resource/doc/callkit/core-sdk/android/offline-push.md +0 -361
- package/resource/doc/callkit/core-sdk/flutter/answer-call.md +0 -1160
- package/resource/doc/callkit/core-sdk/flutter/make-call.md +0 -1205
- package/resource/doc/callkit/core-sdk/ios/answer-call.md +0 -1090
- package/resource/doc/callkit/core-sdk/ios/make-call.md +0 -1248
- package/resource/doc/callkit/core-sdk/ios/offline-push.md +0 -485
- package/resource/doc/callkit/core-sdk/uni-app/answer-call.md +0 -950
- package/resource/doc/callkit/core-sdk/uni-app/make-call.md +0 -1052
- package/resource/doc/callkit/faq/common/error-code.md +0 -47
- package/resource/doc/callkit/faq/flutter-faq.md +0 -115
- package/resource/doc/callkit/faq/ios-faq.md +0 -115
- package/resource/doc/callkit/faq/web-faq.md +0 -36
- package/resource/doc/callkit/preset/android/api.md +0 -296
- package/resource/doc/callkit/preset/flutter/api.md +0 -410
- package/resource/doc/callkit/preset/flutter/integration.md +0 -164
- package/resource/doc/callkit/preset/ios/api.md +0 -80
- package/resource/doc/callkit/preset/ios/integration.md +0 -187
- package/resource/doc/callkit/preset/react/api.md +0 -501
- package/resource/doc/callkit/preset/react/integration.md +0 -86
- package/resource/doc/callkit/preset/vue/api.md +0 -501
- package/resource/doc/callkit/preset/vue/integration.md +0 -83
- package/resource/doc/chatkit/android/faq.md +0 -111
- package/resource/doc/chatkit/android/features/theme.md +0 -219
- package/resource/doc/chatkit/android/integration.md +0 -490
- package/resource/doc/chatkit/faq/android_sdk/client-api.md +0 -281
- package/resource/doc/chatkit/faq/common/product.md +0 -7
- package/resource/doc/chatkit/faq/common/server.md +0 -44
- package/resource/doc/chatkit/faq/common/server_error_code.md +0 -74
- package/resource/doc/chatkit/faq/flutter_sdk/client-api.md +0 -199
- package/resource/doc/chatkit/faq/flutter_sdk/faq.md +0 -53
- package/resource/doc/chatkit/faq/ios_sdk/client-api.md +0 -235
- package/resource/doc/chatkit/faq/web_sdk/error_code.md +0 -47
- package/resource/doc/chatkit/faq/web_sdk/faq.md +0 -287
- package/resource/doc/chatkit/flutter/faq.md +0 -23
- package/resource/doc/chatkit/flutter/features/theme.md +0 -235
- package/resource/doc/chatkit/flutter/integration.md +0 -344
- package/resource/doc/chatkit/ios/faq.md +0 -111
- package/resource/doc/chatkit/ios/features/theme.md +0 -267
- package/resource/doc/chatkit/react/components/avatar.md +0 -104
- package/resource/doc/chatkit/react/components/chat-header.md +0 -148
- package/resource/doc/chatkit/react/components/chat-setting.md +0 -57
- package/resource/doc/chatkit/react/components/chat.md +0 -38
- package/resource/doc/chatkit/react/components/component-list.md +0 -37
- package/resource/doc/chatkit/react/components/conversation-actions.md +0 -174
- package/resource/doc/chatkit/react/components/conversation-list.md +0 -333
- package/resource/doc/chatkit/react/components/conversation-preview.md +0 -118
- package/resource/doc/chatkit/react/components/conversation-search.md +0 -60
- package/resource/doc/chatkit/react/components/message-list.md +0 -293
- package/resource/doc/chatkit/react/components/tuikit.md +0 -34
- package/resource/doc/chatkit/react/faq.md +0 -26
- package/resource/doc/chatkit/react/integration.md +0 -416
- package/resource/doc/chatkit/vue/components/avatar.md +0 -104
- package/resource/doc/chatkit/vue/components/chat-header.md +0 -148
- package/resource/doc/chatkit/vue/components/chat-setting.md +0 -62
- package/resource/doc/chatkit/vue/components/chat.md +0 -45
- package/resource/doc/chatkit/vue/components/component-list.md +0 -87
- package/resource/doc/chatkit/vue/components/contact-list.md +0 -271
- package/resource/doc/chatkit/vue/components/conversation-actions.md +0 -228
- package/resource/doc/chatkit/vue/components/conversation-list.md +0 -320
- package/resource/doc/chatkit/vue/components/conversation-preview.md +0 -213
- package/resource/doc/chatkit/vue/components/message-input.md +0 -1054
- package/resource/doc/chatkit/vue/components/message-list.md +0 -433
- package/resource/doc/chatkit/vue/components/tuikit.md +0 -31
- package/resource/doc/chatkit/vue/components/userpicker.md +0 -256
- package/resource/doc/chatkit/vue/faq.md +0 -36
- package/resource/doc/chatkit/vue/integration.md +0 -428
- package/resource/doc/livekit/core-sdk/live/flutter/live-host-interaction.md +0 -866
- package/resource/doc/livekit/faq/common/error-code.md +0 -88
- package/resource/doc/livekit/preset/live/vue/api-reference/index.md +0 -780
- package/resource/doc/livekit/preset/live/vue/components/co-guest-panel.md +0 -91
- package/resource/doc/livekit/preset/live/vue/components/live-scene-panel.md +0 -112
- package/resource/doc/livekit/preset/live/vue/components/stream-mixer.md +0 -215
- package/resource/doc/livekit/preset/live/vue/live-player-h5-integration.md +0 -300
- package/resource/doc/roomkit/faq/common/error-code.md +0 -67
- package/resource/doc/roomkit/vue/features/call-user-to-room.md +0 -220
- package/resource/doc/roomkit/vue/features/device-state.md +0 -460
- package/resource/doc/roomkit/vue/features/free-beauty-panel.md +0 -215
- package/resource/doc/roomkit/vue/features/room-chat.md +0 -369
- package/resource/doc/roomkit/vue/features/room-state.md +0 -282
- package/resource/doc/roomkit/vue/features/schedule-room.md +0 -318
- package/resource/doc/roomkit/vue/features/screen-share.md +0 -265
- package/resource/doc/roomkit/vue/features/virtual-background.md +0 -271
- package/resource/doc/roomkit/vue/integration.md +0 -315
- package/resource/doc/rtcengine/faq/common/error_code.md +0 -1
- package/resource/doc/rtcengine/faq/web_sdk/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/.gitkeep +0 -0
- package/resource/doc/rtcengine/web/how_to_run_web_sdk_demo.md +0 -59
- package/resource/doc/trtc/C++/ITRTCCloud.md +0 -1970
- package/resource/doc/trtc/C++/ITRTCStatistics.md +0 -70
- package/resource/doc/trtc/C++/ITXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/C++/ITXDeviceManager.md +0 -387
- package/resource/doc/trtc/C++/TRTCCloudCallback.md +0 -1082
- package/resource/doc/trtc/C++/TRTCTypeDef.md +0 -925
- package/resource/doc/trtc/C++/TXLiteAVCode.md +0 -129
- package/resource/doc/trtc/android/TRTCCloud.md +0 -1815
- package/resource/doc/trtc/android/TRTCCloudDef.md +0 -992
- package/resource/doc/trtc/android/TRTCCloudListener.md +0 -1004
- package/resource/doc/trtc/android/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/android/TXAudioEffectManager.md +0 -469
- package/resource/doc/trtc/android/TXBeautyManager.md +0 -402
- package/resource/doc/trtc/android/TXDeviceManager.md +0 -173
- package/resource/doc/trtc/android/TXLiteAVCode.md +0 -127
- package/resource/doc/trtc/iOS/TRTCCloud.md +0 -2028
- package/resource/doc/trtc/iOS/TRTCCloudDef.md +0 -958
- package/resource/doc/trtc/iOS/TRTCCloudDelegate.md +0 -1046
- package/resource/doc/trtc/iOS/TRTCStatistics.md +0 -65
- package/resource/doc/trtc/iOS/TXAudioEffectManager.md +0 -397
- package/resource/doc/trtc/iOS/TXBeautyManager.md +0 -403
- package/resource/doc/trtc/iOS/TXDeviceManager.md +0 -381
- package/resource/doc/trtc/iOS/TXLiteAVCode.md +0 -130
- package/tools/call/get_callkit_api.js +0 -33
- package/tools/call/get_callkit_api.js.map +0 -1
- package/tools/chat/get_native_chat_uikit_feature_detail.js +0 -35
- package/tools/chat/get_native_chat_uikit_feature_detail.js.map +0 -1
- package/tools/chat/get_web_chat_uikit_component_detail.js +0 -35
- package/tools/chat/get_web_chat_uikit_component_detail.js.map +0 -1
- package/tools/common/get_faq.js +0 -266
- package/tools/common/get_faq.js.map +0 -1
- package/tools/common/record_skill_session.js +0 -69
- package/tools/common/record_skill_session.js.map +0 -1
- package/tools/definitions/get_callkit_api_def.js +0 -29
- package/tools/definitions/get_callkit_api_def.js.map +0 -1
- package/tools/definitions/get_faq_def.js +0 -49
- package/tools/definitions/get_faq_def.js.map +0 -1
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js +0 -31
- package/tools/definitions/get_native_chat_uikit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_native_livekit_core_features_def.js +0 -34
- package/tools/definitions/get_native_livekit_core_features_def.js.map +0 -1
- package/tools/definitions/get_native_trtc_sdk_docs_def.js +0 -32
- package/tools/definitions/get_native_trtc_sdk_docs_def.js.map +0 -1
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js +0 -31
- package/tools/definitions/get_web_chat_uikit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_api_def.js +0 -30
- package/tools/definitions/get_web_livekit_api_def.js.map +0 -1
- package/tools/definitions/get_web_livekit_component_detail_def.js +0 -32
- package/tools/definitions/get_web_livekit_component_detail_def.js.map +0 -1
- package/tools/definitions/get_web_roomkit_feature_detail_def.js +0 -31
- package/tools/definitions/get_web_roomkit_feature_detail_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_api_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_api_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_integration_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_integration_def.js.map +0 -1
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js +0 -27
- package/tools/definitions/get_web_trtc_sdk_plugin_def.js.map +0 -1
- package/tools/definitions/record_skill_session_def.js +0 -31
- package/tools/definitions/record_skill_session_def.js.map +0 -1
- package/tools/live/get_native_livekit_core_features.js +0 -68
- package/tools/live/get_native_livekit_core_features.js.map +0 -1
- package/tools/live/get_web_livekit_api.js +0 -33
- package/tools/live/get_web_livekit_api.js.map +0 -1
- package/tools/live/get_web_livekit_component_detail.js +0 -35
- package/tools/live/get_web_livekit_component_detail.js.map +0 -1
- package/tools/room/get_web_roomkit_feature_detail.js +0 -69
- package/tools/room/get_web_roomkit_feature_detail.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_api.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_api.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_integration.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_integration.js.map +0 -1
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js +0 -32
- package/tools/rtcengine/get_web_trtc_sdk_plugin.js.map +0 -1
- package/tools/trtc/get_native_trtc_sdk_docs.js +0 -74
- package/tools/trtc/get_native_trtc_sdk_docs.js.map +0 -1
- package/utils/build-session-directives.js +0 -120
- package/utils/build-session-directives.js.map +0 -1
- package/utils/handle-framework.js +0 -9
- package/utils/handle-framework.js.map +0 -1
- package/utils/handle-state-name.js +0 -29
- package/utils/handle-state-name.js.map +0 -1
- package/utils/report-runtime-error-cls-client.js +0 -91
- package/utils/report-runtime-error-cls-client.js.map +0 -1
- /package/resource/{doc/livekit/preset/live/vue/faq.md → knowledge/push/config/donut.md} +0 -0
- /package/resource/{doc/roomkit/vue/faq.md → knowledge/push/integration/donut.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/api.md +0 -0
- /package/resource/{doc/rtcengine/faq/web/web.md → knowledge/rtcengine/web/faq.md} +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/how_to_integrated_web_sdk.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/20-advanced-customized-capture-rendering.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/28-advanced-beauty.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/30-advanced-cross-room-link.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/36-advanced-virtual-background.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/37-advanced-voice-changer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/39-advanced-video-decoder.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/40-advanced-video-mixer.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/41-advanced-small-stream-auto-switcher.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/42-advanced-realtime-transcriber.md +0 -0
- /package/resource/{doc → knowledge}/rtcengine/web/plugin/43-advanced-face-detection.md +0 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
This document guides you on how to use Atomicx to implement screen sharing capabilities and handle in-room interactions based on the screen sharing state.
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
- The user has completed login authentication via [useLoginState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-LoginState). Please refer to Integration Overview.
|
|
5
|
+
|
|
6
|
+
- The user has entered a room via [useRoomState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-RoomState). Please refer to Room Management.
|
|
7
|
+
|
|
8
|
+
- If integrating within an `iframe`, you need to declare the permissions in the tag.
|
|
9
|
+
|
|
10
|
+
``` typescript
|
|
11
|
+
<iframe allow="display-capture; fullscreen;"></iframe>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Implementing the Screen Sharing Feature
|
|
15
|
+
|
|
16
|
+
### Step 1: Start Screen Sharing
|
|
17
|
+
|
|
18
|
+
Use the [startScreenShare](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#startScreenShare) method to start screen sharing. In a Web environment, you will see the browser's screen picker, where you can choose to share the entire screen, an application window, or a browser tab.
|
|
19
|
+
|
|
20
|
+
``` typescript
|
|
21
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
22
|
+
const { startScreenShare } = useDeviceState();
|
|
23
|
+
|
|
24
|
+
// Attempt to start screen sharing, and attempt to share system audio
|
|
25
|
+
const handleStartShare = async () => {
|
|
26
|
+
try {
|
|
27
|
+
await startScreenShare({ screenAudio: true });
|
|
28
|
+
} catch (error) {
|
|
29
|
+
// Handle errors such as the user declining or the browser not supporting it
|
|
30
|
+
console.error('Failed to start screen sharing:', error);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Step 2: Share System Audio
|
|
36
|
+
|
|
37
|
+
By setting the `screenAudio: true` parameter, you can share system audio at the same time as sharing the screen. This is very useful when sharing content that includes audio, such as videos, presentations, and music.
|
|
38
|
+
|
|
39
|
+
``` typescript
|
|
40
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
41
|
+
const { startScreenShare } = useDeviceState();
|
|
42
|
+
|
|
43
|
+
// Start screen sharing and share system audio
|
|
44
|
+
const handleStartScreenShareWithAudio = async () => {
|
|
45
|
+
try {
|
|
46
|
+
await startScreenShare({ screenAudio: true });
|
|
47
|
+
console.log('Screen sharing (with audio) has started');
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error('Failed to start screen sharing:', error);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Browser Compatibility Notes:**
|
|
55
|
+
|
|
56
|
+
|Browser|System Audio Sharing Support|Remarks|
|
|
57
|
+
|---------|---------|---------|
|
|
58
|
+
|Chrome 74+|Supported|You need to check **Share audio** in the picker|
|
|
59
|
+
|Edge 79+|Supported|Based on Chromium; same experience as Chrome|
|
|
60
|
+
|Firefox|Not supported|System audio sharing is not yet supported|
|
|
61
|
+
|Safari|Not supported|System audio sharing is not yet supported|
|
|
62
|
+
|
|
63
|
+
> **Note:**
|
|
64
|
+
>
|
|
65
|
+
|
|
66
|
+
> System audio sharing requires browser support, and the user must check the **Share audio** option in the screen picker. If the browser does not support system audio sharing, the `screenAudio` parameter is ignored, but the screen sharing feature is not affected and works normally.
|
|
67
|
+
>
|
|
68
|
+
|
|
69
|
+
### Step 3: Stop Screen Sharing
|
|
70
|
+
|
|
71
|
+
Users can stop screen sharing in the following ways:
|
|
72
|
+
1. **Call the** [**stopScreenShare()**](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#stopScreenShare)** interface**
|
|
73
|
+
|
|
74
|
+
``` typescript
|
|
75
|
+
import { useDeviceState, DeviceStatus } from 'tuikit-atomicx-vue3/room';
|
|
76
|
+
const { screenStatus, stopScreenShare } = useDeviceState();
|
|
77
|
+
|
|
78
|
+
// Stop screen sharing
|
|
79
|
+
const handleStopScreenShare = async () => {
|
|
80
|
+
try {
|
|
81
|
+
await stopScreenShare();
|
|
82
|
+
console.log('Screen sharing has stopped');
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error('Failed to stop screen sharing:', error);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
```
|
|
88
|
+
2. **Click the browser's native "Stop sharing" button**
|
|
89
|
+
|
|
90
|
+
3. **Close the shared window or tab**
|
|
91
|
+
|
|
92
|
+
> **Note:**
|
|
93
|
+
>
|
|
94
|
+
|
|
95
|
+
> When a user stops screen sharing using any of these methods, Atomicx automatically updates the state of [screenStatus](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#screenStatus).
|
|
96
|
+
>
|
|
97
|
+
|
|
98
|
+
### Step 4: Permission Control and State Listening
|
|
99
|
+
|
|
100
|
+
#### **Setting Screen Sharing Permissions**
|
|
101
|
+
|
|
102
|
+
You can control the screen management permissions within the room through the member management interfaces provided by [useRoomParticipantState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-RoomParticipantState).
|
|
103
|
+
``` typescript
|
|
104
|
+
import { useRoomParticipantState, DeviceType } from 'tuikit-atomicx-vue3/room';
|
|
105
|
+
const { disableAllDevices } = useRoomParticipantState();
|
|
106
|
+
|
|
107
|
+
// Restrict screen sharing to the room owner/administrator only
|
|
108
|
+
async function handleDisableAllScreen() {
|
|
109
|
+
await disableAllDevices({
|
|
110
|
+
deviceType: DeviceType.Screen,
|
|
111
|
+
disable: true,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Allow all users in the room to start screen sharing
|
|
116
|
+
async function handleEnableAllScreen() {
|
|
117
|
+
await disableAllDevices({
|
|
118
|
+
deviceType: DeviceType.Screen,
|
|
119
|
+
disable: false,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### **Automatic Layout Switching**
|
|
125
|
+
|
|
126
|
+
When it is detected that a user in the room has started screen sharing, it is recommended to switch to the sidebar layout (`RoomLayoutTemplate.SidebarLayout`), enlarging the shared view and displaying other participants' views in the sidebar.
|
|
127
|
+
``` typescript
|
|
128
|
+
<template>
|
|
129
|
+
<div class="room-container">
|
|
130
|
+
<RoomView :layout-template="layoutTemplate">
|
|
131
|
+
<template #participantViewUI="{ participant, streamType }">
|
|
132
|
+
<ParticipantViewUI
|
|
133
|
+
:participant="participant"
|
|
134
|
+
:stream-type="streamType"
|
|
135
|
+
/>
|
|
136
|
+
</template>
|
|
137
|
+
</RoomView>
|
|
138
|
+
</div>
|
|
139
|
+
</template>
|
|
140
|
+
|
|
141
|
+
<script setup lang="ts">
|
|
142
|
+
import { ref, watch } from 'vue';
|
|
143
|
+
import {
|
|
144
|
+
RoomView,
|
|
145
|
+
RoomLayoutTemplate,
|
|
146
|
+
useRoomParticipantState
|
|
147
|
+
} from 'tuikit-atomicx-vue3/room';
|
|
148
|
+
|
|
149
|
+
const layoutTemplate = ref(RoomLayoutTemplate.GridLayout);
|
|
150
|
+
const { participantWithScreen } = useRoomParticipantState();
|
|
151
|
+
|
|
152
|
+
// Listen to the screen sharing state and switch the layout automatically
|
|
153
|
+
watch(participantWithScreen, (participant) => {
|
|
154
|
+
if (participant) {
|
|
155
|
+
// Someone is sharing their screen, switch to the sidebar layout
|
|
156
|
+
layoutTemplate.value = RoomLayoutTemplate.SidebarLayout;
|
|
157
|
+
} else {
|
|
158
|
+
// No one is sharing their screen, switch back to the grid layout
|
|
159
|
+
layoutTemplate.value = RoomLayoutTemplate.GridLayout;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
</script>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
#### **Restricting Screen Sharing to One Person**
|
|
166
|
+
|
|
167
|
+
Only one person should be allowed to share their screen in a room. When someone is sharing, disable the sharing button for others:
|
|
168
|
+
``` typescript
|
|
169
|
+
<script setup>
|
|
170
|
+
import { computed } from 'vue';
|
|
171
|
+
import { useRoomParticipantState } from 'tuikit-atomicx-vue3/room';
|
|
172
|
+
|
|
173
|
+
const { participantWithScreen, localParticipant } = useRoomParticipantState();
|
|
174
|
+
|
|
175
|
+
const isOtherSharing = computed(() => {
|
|
176
|
+
const sharer = participantWithScreen.value;
|
|
177
|
+
if (!sharer) return false;
|
|
178
|
+
return sharer.userId !== localParticipant.value?.userId;
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
const canStartScreenShare = computed(() => {
|
|
182
|
+
return !isOtherSharing.value;
|
|
183
|
+
});
|
|
184
|
+
</script>
|
|
185
|
+
|
|
186
|
+
// Use in the template
|
|
187
|
+
<template>
|
|
188
|
+
<button :disabled="!canStartScreenShare" @click="handleStartShare">
|
|
189
|
+
Start Screen Sharing
|
|
190
|
+
</button>
|
|
191
|
+
<template>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Step 5: Handling Screen Sharing Errors
|
|
195
|
+
|
|
196
|
+
When an error occurs during screen sharing, prompt the user to take the appropriate action based on the error information.
|
|
197
|
+
|
|
198
|
+
**Code example:**
|
|
199
|
+
``` typescript
|
|
200
|
+
import { useDeviceState, DeviceError } from 'tuikit-atomicx-vue3/room';
|
|
201
|
+
import { TUIToast } from '@tencentcloud/uikit-base-component-vue3';
|
|
202
|
+
|
|
203
|
+
const { startScreenShare } = useDeviceState();
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
await startScreenShare();
|
|
207
|
+
} catch (error: any) {
|
|
208
|
+
let message = '';
|
|
209
|
+
switch (error.name) {
|
|
210
|
+
case 'NotReadableError':
|
|
211
|
+
message = 'The system is blocking the current browser from accessing screen content. Please enable the screen sharing permission.';
|
|
212
|
+
break;
|
|
213
|
+
case 'NotAllowedError':
|
|
214
|
+
if (error.message.includes('Permission denied by system')) {
|
|
215
|
+
message = 'The system is blocking the current browser from accessing screen content. Please enable the screen sharing permission.';
|
|
216
|
+
} else {
|
|
217
|
+
message = 'The user canceled screen sharing';
|
|
218
|
+
}
|
|
219
|
+
break;
|
|
220
|
+
default:
|
|
221
|
+
message = 'An unknown error occurred during screen sharing. Please try again.';
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
TUIToast.warning({
|
|
225
|
+
message,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## API Documentation
|
|
231
|
+
|
|
232
|
+
|**State/Component**|**Description**|**API Documentation**|
|
|
233
|
+
|---------|---------|---------|
|
|
234
|
+
|**useDeviceState**|Contains audio/video device states, the audio/video device list, and operation interfaces.|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState)|
|
|
235
|
+
|**useRoomParticipantState**|Contains in-room user data and user management interfaces.|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-RoomParticipantState)|
|
|
236
|
+
|
|
237
|
+
## FAQ
|
|
238
|
+
|
|
239
|
+
### Why doesn't system audio sharing work?
|
|
240
|
+
- **Platform limitation:** Audio sharing is currently only supported on modern browsers such as Chrome and Edge.
|
|
241
|
+
|
|
242
|
+
- **Operation detail:** The user must manually select **Share audio** in the screen picker that pops up in the browser.
|
|
243
|
+
|
|
244
|
+
- **System limitation:** Some operating systems do not support sharing the audio of a specific **application window**. It is recommended to prioritize selecting the **entire screen** or a **browser tab**.
|
|
245
|
+
|
|
246
|
+
### How can I detect that a user has ended screen sharing by clicking the browser's "Stop sharing" button?
|
|
247
|
+
|
|
248
|
+
Atomicx automatically listens for the browser's stop-sharing event and updates the `screenStatus` state. You only need to watch for changes in `screenStatus`:
|
|
249
|
+
``` typescript
|
|
250
|
+
watch(screenStatus, (newStatus, oldStatus) => {
|
|
251
|
+
if (oldStatus === DeviceStatus.On && newStatus === DeviceStatus.Off) {
|
|
252
|
+
console.log('The user has stopped screen sharing.');
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Do mobile browsers support screen sharing?
|
|
258
|
+
|
|
259
|
+
Only desktop browsers support screen sharing; mobile browsers do not support screen sharing capabilities.
|
|
260
|
+
|
|
261
|
+
### Why, after a user enables screen sharing audio, do other participants see that user's microphone status displayed as "on"?
|
|
262
|
+
|
|
263
|
+
This is expected system behavior, for the following reasons:
|
|
264
|
+
|
|
265
|
+
**Technical principle:** `microphoneStatus` indicates whether the current device is transmitting an audio signal outward. When screen sharing is enabled and **capture system audio** is checked, the Atomicx SDK starts an audio transmission channel. Since the remote end receives a continuous stream of audio data, the system cannot distinguish whether the audio source is the physical microphone or system playback sound, so it uniformly marks the audio capture status as `DeviceStatus.On`.
|
|
266
|
+
|
|
267
|
+
**Privacy note:** Rest assured, this does not mean your microphone is already capturing your speech. Whether the microphone sound is being pushed depends only on the microphone control interfaces (`openLocalMicrophone` and `unmuteLocalMicrophone`) and is independent of screen sharing audio capture—they are two separate channels. Even if screen sharing audio is being transmitted, as long as the microphone-related interfaces are not called, your microphone sound will not be captured or pushed.
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
The virtual background feature allows users to replace their real background with a custom image or apply a blur effect during video calls or live streaming. With this feature, users can effectively protect their privacy, hide a cluttered background, or present a corporate image through a specific background.
|
|
2
|
+
|
|
3
|
+
## Use Cases
|
|
4
|
+
- **Remote work/meetings:** When attending a meeting from home or a public place, use background blur or a virtual background to hide the real environment and protect personal privacy.
|
|
5
|
+
|
|
6
|
+
- **Online education:** Teachers can use a unified teaching background to create a professional classroom atmosphere.
|
|
7
|
+
|
|
8
|
+
- **Brand promotion:** Employees can use a background image with the company logo in external meetings to enhance the brand image.
|
|
9
|
+
|
|
10
|
+
- **Fun interaction:** In social scenarios, users can switch to fun background images to make interactions more enjoyable.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
- **User status:** The user has completed login authentication via useLoginState, is in the **logged-in** state. See the Integration Overview.
|
|
14
|
+
|
|
15
|
+
- **Environment dependency:** The project has already imported `tuikit-atomicx-vue3`.
|
|
16
|
+
|
|
17
|
+
- **Device requirements:** An available camera device is required, and the user must have granted camera access permission. If the user denies the permission, the virtual background feature will not work.
|
|
18
|
+
|
|
19
|
+
- **Resource dependency:** The virtual background feature depends on AI model files. To ensure the browser can load and run these files properly, you need to complete the following steps.
|
|
20
|
+
|
|
21
|
+
- Publish the `node_modules/trtc-sdk-v5/assets` directory to a CDN or static resource server. For details, see the [SDK documentation](https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-36-advanced-virtual-background.html).
|
|
22
|
+
|
|
23
|
+
- If you choose Option 1: Quick integration using UI components, when using the [VirtualBackgroundPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/VirtualBackgroundPanel) component, you need to pass the `assetsPath` static resource address via props.
|
|
24
|
+
|
|
25
|
+
- If you choose Option 2: Custom integration using low-level APIs, when using the [initVirtualBackground](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#initVirtualBackground) interface, you need to pass the `assetsPath` static resource address.
|
|
26
|
+
|
|
27
|
+
## Implementing the Virtual Background Feature
|
|
28
|
+
|
|
29
|
+
This feature provides two integration options. You can choose the one that best fits your business needs:
|
|
30
|
+
- **Option 1 (Recommended):** Quick integration using UI components. Directly import the virtual background panel component provided by `tuikit-atomicx-vue3` ([VirtualBackgroundPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/VirtualBackgroundPanel)) and embed it into your application's dialog or sidebar. This has the lowest development cost.
|
|
31
|
+
|
|
32
|
+
- **Option 2 (Advanced):** Custom integration using low-level APIs. Implement the UI and interaction logic yourself based on the atomicx-core SDK API [useVirtualBackgroundState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-VirtualBackgroundState) state hook. This offers the highest flexibility.
|
|
33
|
+
|
|
34
|
+
Virtual Background
|
|
35
|
+
|
|
36
|
+
## Option 1: Quick Integration Using UI Components
|
|
37
|
+
|
|
38
|
+
`tuikit-atomicx-vue3` provides the core settings panel component:
|
|
39
|
+
- [**VirtualBackgroundPanel**](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/VirtualBackgroundPanel)**:** The configuration panel for the virtual background, including background blur, image selection, and preview features.
|
|
40
|
+
|
|
41
|
+
### Step 1: Import the Component
|
|
42
|
+
``` typescript
|
|
43
|
+
import { VirtualBackgroundPanel } from 'tuikit-atomicx-vue3/room';
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Step 2: Use the Component
|
|
47
|
+
|
|
48
|
+
It is generally recommended to place the [VirtualBackgroundPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/VirtualBackgroundPanel) inside a Dialog or Modal, and trigger its display via a button click.
|
|
49
|
+
|
|
50
|
+
**The following example shows how to implement a complete interaction where clicking a button opens the virtual background settings:**
|
|
51
|
+
|
|
52
|
+
> **Note:**
|
|
53
|
+
>
|
|
54
|
+
> - Publish the `node_modules/trtc-sdk-v5/assets` directory to a CDN or static resource server. For details, see the [SDK documentation](https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-36-advanced-virtual-background.html).
|
|
55
|
+
> - When using the [VirtualBackgroundPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/VirtualBackgroundPanel) component, pass the `assetsPath` static resource address via props.
|
|
56
|
+
> - All TUIKit components must be wrapped inside UIKitProvider; otherwise, they will not be able to obtain their context dependencies, resulting in abnormal styling.
|
|
57
|
+
|
|
58
|
+
``` typescript
|
|
59
|
+
<template>
|
|
60
|
+
<UIKitProvider theme="light" language="en-US">
|
|
61
|
+
<div class="toolbar-container">
|
|
62
|
+
<!-- 1. Trigger button -->
|
|
63
|
+
<button @click="openSettings">Set Virtual Background</button>
|
|
64
|
+
|
|
65
|
+
<!-- 2. Settings dialog -->
|
|
66
|
+
<div v-if="showSettings" class="modal-mask">
|
|
67
|
+
<div class="modal-content">
|
|
68
|
+
<div class="modal-header">
|
|
69
|
+
<span>Virtual Background</span>
|
|
70
|
+
<button @click="showSettings = false">Close</button>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div class="modal-body">
|
|
74
|
+
<!-- 3. Import the panel component -->
|
|
75
|
+
<!-- @close event: triggered when the user clicks the close button inside the panel (if any) -->
|
|
76
|
+
<VirtualBackgroundPanel assetsPath='https://xxxx/assets' @close="showSettings = false" />
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
</UIKitProvider>
|
|
82
|
+
</template>
|
|
83
|
+
|
|
84
|
+
<script setup lang="ts">
|
|
85
|
+
import { ref } from 'vue';
|
|
86
|
+
import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
87
|
+
import { VirtualBackgroundPanel, useVirtualBackgroundState, useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
88
|
+
|
|
89
|
+
const showSettings = ref(false);
|
|
90
|
+
const { isSupported } = useVirtualBackgroundState();
|
|
91
|
+
const { cameraList } = useDeviceState();
|
|
92
|
+
|
|
93
|
+
const openSettings = () => {
|
|
94
|
+
// 1. Check whether the browser supports virtual background
|
|
95
|
+
if (!isSupported()) {
|
|
96
|
+
alert('The current browser does not support virtual background');
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// 2. Check whether there is an available camera
|
|
101
|
+
if (cameraList.value.length === 0) {
|
|
102
|
+
alert('No camera detected; cannot set virtual background');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// 3. Open the settings panel
|
|
107
|
+
showSettings.value = true;
|
|
108
|
+
};
|
|
109
|
+
</script>
|
|
110
|
+
|
|
111
|
+
<style scoped>
|
|
112
|
+
.modal-mask{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.5);display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:white;width:600px;border-radius:8px;overflow:hidden}.modal-header{padding:16px;display:flex;justify-content:space-between;border-bottom:1px solid #eee}
|
|
113
|
+
</style>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Option 2: Custom Integration Using Low-Level APIs
|
|
117
|
+
|
|
118
|
+
This section mainly describes how to implement the virtual background via the atomicx-core SDK API [**useVirtualBackgroundState**](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-VirtualBackgroundState) interface.
|
|
119
|
+
|
|
120
|
+
### Step 1: Initialization and Detection
|
|
121
|
+
|
|
122
|
+
Before invoking the virtual background feature, you must first check whether the browser supports it and initialize the resource path.
|
|
123
|
+
|
|
124
|
+
> **Note:**
|
|
125
|
+
>
|
|
126
|
+
> - Publish the node_modules/trtc-sdk-v5/assets directory to a CDN or static resource server. For details, see the [SDK documentation](https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-36-advanced-virtual-background.html).
|
|
127
|
+
> - When using the [initVirtualBackground](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#initVirtualBackground) interface, pass the assetsPath static resource address.
|
|
128
|
+
> - The virtual background feature depends on a camera device. You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to check the device status.
|
|
129
|
+
> - [cameraList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraList): The list of currently available camera devices. If the list is empty, it means no camera was detected or camera permission is denied.
|
|
130
|
+
|
|
131
|
+
``` typescript
|
|
132
|
+
import { onMounted } from 'vue';
|
|
133
|
+
import { useVirtualBackgroundState } from 'tuikit-atomicx-vue3/room';
|
|
134
|
+
|
|
135
|
+
const { isSupported, initVirtualBackground } = useVirtualBackgroundState();
|
|
136
|
+
|
|
137
|
+
onMounted(async () => {
|
|
138
|
+
// 1. Check browser compatibility
|
|
139
|
+
if (!isSupported()) {
|
|
140
|
+
console.warn('The current browser does not support virtual background');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// 2. Initialize resources
|
|
145
|
+
try {
|
|
146
|
+
await initVirtualBackground({ assetsPath: './assets' });
|
|
147
|
+
console.log('Virtual background initialization completed');
|
|
148
|
+
} catch (error) {
|
|
149
|
+
console.error('Initialization failed', error);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Step 2: Set Up the Preview
|
|
155
|
+
|
|
156
|
+
Before the user confirms applying the background, you usually need to preview the effect first. Use the [setVirtualBackground](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setVirtualBackground) method to set the preview effect. At this point, it is not applied to the video stream visible to remote users.
|
|
157
|
+
|
|
158
|
+
> **Note:**
|
|
159
|
+
>
|
|
160
|
+
|
|
161
|
+
> Calling `setVirtualBackground` only takes effect in the local preview. Remote users will not see the virtual background effect; it is synchronized to the remote video stream only after `saveVirtualBackground` is called.
|
|
162
|
+
>
|
|
163
|
+
|
|
164
|
+
``` typescript
|
|
165
|
+
import { useVirtualBackgroundState } from 'tuikit-atomicx-vue3/room';
|
|
166
|
+
|
|
167
|
+
const { setVirtualBackground } = useVirtualBackgroundState();
|
|
168
|
+
|
|
169
|
+
// Enable background blur preview
|
|
170
|
+
const previewBlur = async () => {
|
|
171
|
+
await setVirtualBackground({
|
|
172
|
+
enable: true,
|
|
173
|
+
type: 'blur',
|
|
174
|
+
level: 0.5 // Blur level, optional
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// Enable background image preview
|
|
179
|
+
const previewImage = async (imageUrl: string) => {
|
|
180
|
+
await setVirtualBackground({
|
|
181
|
+
enable: true,
|
|
182
|
+
type: 'image',
|
|
183
|
+
source: imageUrl // Image URL, supports local or network paths
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Step 3: Save and Apply
|
|
189
|
+
|
|
190
|
+
After the user confirms that they are satisfied with the preview, call [saveVirtualBackground](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#saveVirtualBackground) to actually apply the configuration to the current video stream. At this point, remote users will see the effect.
|
|
191
|
+
``` typescript
|
|
192
|
+
import { useVirtualBackgroundState } from 'tuikit-atomicx-vue3/room';
|
|
193
|
+
|
|
194
|
+
const { saveVirtualBackground } = useVirtualBackgroundState();
|
|
195
|
+
|
|
196
|
+
const confirmSettings = async () => {
|
|
197
|
+
try {
|
|
198
|
+
await saveVirtualBackground();
|
|
199
|
+
console.log('Virtual background has taken effect');
|
|
200
|
+
} catch (error) {
|
|
201
|
+
console.error('Save failed', error);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Step 4: Disable the Virtual Background
|
|
207
|
+
|
|
208
|
+
If you need to disable the virtual background and restore the real background, you can set its `enable` property to `false` and save.
|
|
209
|
+
``` typescript
|
|
210
|
+
import { useVirtualBackgroundState } from 'tuikit-atomicx-vue3/room';
|
|
211
|
+
|
|
212
|
+
const { setVirtualBackground, saveVirtualBackground } = useVirtualBackgroundState();
|
|
213
|
+
|
|
214
|
+
const disableVirtualBackground = async () => {
|
|
215
|
+
// 1. Set to the disabled state
|
|
216
|
+
await setVirtualBackground({ enable: false });
|
|
217
|
+
// 2. Save to apply
|
|
218
|
+
await saveVirtualBackground();
|
|
219
|
+
};
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Development Notes
|
|
223
|
+
- **Resource file path:** The `assetsPath` in `initVirtualBackground` must correctly point to the directory of the AI model files. An incorrect path will prevent the virtual background from starting. Please refer to the [SDK documentation](https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/tutorial-36-advanced-virtual-background.html) to obtain the resource file package.
|
|
224
|
+
|
|
225
|
+
- **Performance consumption:** Enabling the virtual background consumes relatively high CPU and GPU resources. On low-end devices, it may cause video frame drops or overheating. It is recommended to prompt the user to disable it when insufficient device performance is detected.
|
|
226
|
+
|
|
227
|
+
- **Browser compatibility:** Not all browsers support the virtual background (it depends on features such as WebAssembly and SIMD). Be sure to call `isSupported()` to check before rendering the UI.
|
|
228
|
+
|
|
229
|
+
- **Image format:** For custom background images, it is recommended to use `jpg` or `png` format, and the resolution should not be too large (1920x1080 or smaller is recommended) to avoid affecting loading speed and memory usage.
|
|
230
|
+
|
|
231
|
+
## FAQ
|
|
232
|
+
|
|
233
|
+
### **When running the demo in Chrome, the image is upside down and laggy?**
|
|
234
|
+
|
|
235
|
+
The virtual background plugin uses the GPU for acceleration. You need to find and enable hardware acceleration mode in your browser settings. You can copy `chrome://settings/system` into the browser address bar and enable hardware acceleration mode.
|
|
236
|
+
|
|
237
|
+
### **Why does my computer overheat severely or the fan spin at high speed after enabling the virtual background?**
|
|
238
|
+
|
|
239
|
+
The virtual background feature needs to recognize the person's outline in real time and perform image processing, which requires a certain amount of CPU and GPU computing power. It is recommended to disable this feature when it is not needed, or avoid enabling it on low-end devices.
|
|
240
|
+
|
|
241
|
+
### **What should I do if initialization fails with the error "assets load failed"?**
|
|
242
|
+
|
|
243
|
+
Please check whether the `assetsPath` passed to `initVirtualBackground` is correct. Make sure the path contains the necessary AI model files and that they can be accessed directly through the browser. If the resources are cross-origin, you need to configure the CORS policy.
|
|
244
|
+
|
|
245
|
+
### **Does the virtual background support mobile browsers?**
|
|
246
|
+
|
|
247
|
+
Due to the performance limitations of mobile browsers and the large variation in WebAssembly support, the experience may not be as stable as on desktop. It is recommended to use it primarily in mainstream desktop browsers such as Chrome (94+ recommended) and Edge, and to properly perform the compatibility check with `isSupported()`.
|
|
248
|
+
|
|
249
|
+
### **Cannot use the virtual background during local development?**
|
|
250
|
+
|
|
251
|
+
WebRTC-related features generally require running in an HTTPS environment, or on `localhost` / `127.0.0.1`. Please ensure that your development environment meets the secure context requirements.
|
|
252
|
+
|
|
253
|
+
## **Example Project**
|
|
254
|
+
|
|
255
|
+
Tencent Cloud provides the example project [atomicx-vite-vue3-ts](https://github.com/Tencent-RTC/TUIRoomKit/tree/main/Web/example/atomicx-vite-vue3-ts) on GitHub, which you can refer to in order to implement the complete RoomKit functionality.
|
|
256
|
+
|
|
257
|
+
## API Documentation
|
|
258
|
+
|
|
259
|
+
|**State/Component**|**Description**|**API Documentation**|
|
|
260
|
+
|---------|---------|---------|
|
|
261
|
+
|**useVirtualBackgroundState**|Virtual background management|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-VirtualBackgroundState)|
|