@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,461 @@
|
|
|
1
|
+
This document guides you on how to use Atomicx components and the `useDeviceState` Hook to manage the state of audio/video devices (camera, microphone, speaker) in a meeting, as well as how to obtain local network quality information.
|
|
2
|
+
|
|
3
|
+
## Feature Overview
|
|
4
|
+
- **Device enumeration and switching:** Supports retrieving the list of available system devices in real time and switching between them seamlessly.
|
|
5
|
+
|
|
6
|
+
- **Fine-grained state control:** Provides the ability to turn devices on/off, mute capture, adjust volume, and monitor volume in real time.
|
|
7
|
+
|
|
8
|
+
- **Error diagnostics:** Provides real-time feedback on abnormal states such as hardware conflicts and missing system permissions.
|
|
9
|
+
|
|
10
|
+
- **Network quality monitoring:** Provides multi-dimensional network information including latency and packet loss rate.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
- The user has completed login authentication via [useLoginState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-LoginState). For details, refer to the Integration Overview.
|
|
14
|
+
|
|
15
|
+
- If integrating within an `iframe`, you need to declare the permissions in the tag.
|
|
16
|
+
|
|
17
|
+
``` typescript
|
|
18
|
+
<iframe allow="microphone; camera;"></iframe>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Implementing Camera Management
|
|
22
|
+
|
|
23
|
+
You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to control turning the local camera on/off, switching devices, and to listen for capture status and errors.
|
|
24
|
+
|
|
25
|
+
### Step 1: Turn the camera on/off
|
|
26
|
+
|
|
27
|
+
Control turning the camera on/off by calling the [openLocalCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#openLocalCamera) and [closeLocalCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#closeLocalCamera) methods.
|
|
28
|
+
``` typescript
|
|
29
|
+
import { useDeviceState, DeviceStatus } from 'tuikit-atomicx-vue3/room';
|
|
30
|
+
const { cameraStatus, openLocalCamera, closeLocalCamera } = useDeviceState();
|
|
31
|
+
const toggleCamera = async () => {
|
|
32
|
+
if (cameraStatus.value === DeviceStatus.On) {
|
|
33
|
+
await closeLocalCamera();
|
|
34
|
+
} else {
|
|
35
|
+
await openLocalCamera();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 2: Get/switch the camera device
|
|
41
|
+
|
|
42
|
+
#### Example of getting and switching the camera on desktop
|
|
43
|
+
|
|
44
|
+
You can use [cameraList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraList) to get all available camera devices, and use the [setCurrentCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentCamera) method to switch the currently used camera.
|
|
45
|
+
``` typescript
|
|
46
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
47
|
+
const { cameraList, currentCamera, getCameraList, setCurrentCamera } = useDeviceState();
|
|
48
|
+
|
|
49
|
+
// Get the camera list
|
|
50
|
+
await getCameraList();
|
|
51
|
+
|
|
52
|
+
// Iterate and display available cameras
|
|
53
|
+
cameraList.value.forEach((camera) => {
|
|
54
|
+
console.log(`Camera: ${camera.deviceName} (${camera.deviceId})`);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// Switch to the specified camera
|
|
58
|
+
const switchCamera = async (deviceId: string) => {
|
|
59
|
+
try {
|
|
60
|
+
// Switch the device (if the camera is already on, capture will automatically restart with the new device)
|
|
61
|
+
await setCurrentCamera({ deviceId });
|
|
62
|
+
console.log('Camera switched successfully');
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.error('Failed to switch camera:', error);
|
|
65
|
+
// The original device will continue to be used if switching fails
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Listen for changes to the current camera
|
|
70
|
+
watch(currentCamera, (camera) => {
|
|
71
|
+
if (camera) {
|
|
72
|
+
console.log('Currently used camera:', camera.deviceName);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
> **Note:**
|
|
78
|
+
>
|
|
79
|
+
|
|
80
|
+
> When you call [setCurrentCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentCamera) to switch the device, if the camera is already on, Atomicx will automatically stop capturing from the current device and restart capturing with the new device, so the video stream switches seamlessly. If switching fails, the original device will continue to be used.
|
|
81
|
+
>
|
|
82
|
+
|
|
83
|
+
#### Example of switching the camera on mobile
|
|
84
|
+
|
|
85
|
+
On mobile, use [switchCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#switchCamera) to switch between the front and rear cameras.
|
|
86
|
+
``` typescript
|
|
87
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
88
|
+
const { isFrontCamera, switchCamera } = useDeviceState();
|
|
89
|
+
|
|
90
|
+
// Determine whether the device is mobile
|
|
91
|
+
const isMobile = /Android|webOS|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
92
|
+
|
|
93
|
+
// Switch between front and rear cameras (mobile only)
|
|
94
|
+
const toggleCamera = async () => {
|
|
95
|
+
if (!isMobile) {
|
|
96
|
+
console.warn('Switching between front and rear cameras is only supported on mobile');
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Switch to the opposite camera
|
|
101
|
+
await switchCamera({ isFrontCamera: !isFrontCamera.value });
|
|
102
|
+
console.log(`Switched to the ${isFrontCamera.value ? 'front' : 'rear'} camera`);
|
|
103
|
+
};
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Step 3: Handle camera capture errors
|
|
107
|
+
|
|
108
|
+
When an error occurs during camera capture, you can obtain the error information via the [cameraLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraLastError) property.
|
|
109
|
+
|
|
110
|
+
> Note:
|
|
111
|
+
>
|
|
112
|
+
|
|
113
|
+
> Common camera errors include `NoSystemPermission` (no system permission) and `OccupiedError` (device is occupied). You should display a clear error message to the user based on this property.
|
|
114
|
+
>
|
|
115
|
+
|
|
116
|
+
``` typescript
|
|
117
|
+
import { useDeviceState, DeviceError } from 'tuikit-atomicx-vue3/room';
|
|
118
|
+
const { cameraLastError } = useDeviceState();
|
|
119
|
+
|
|
120
|
+
// Listen for camera errors
|
|
121
|
+
watch(cameraLastError, (error) => {
|
|
122
|
+
switch (error) {
|
|
123
|
+
case DeviceError.NoSystemPermission:
|
|
124
|
+
console.error('Camera permission denied. Please enable camera permission in system settings');
|
|
125
|
+
break;
|
|
126
|
+
case DeviceError.NoDeviceDetected:
|
|
127
|
+
console.error('No camera device detected');
|
|
128
|
+
break;
|
|
129
|
+
case DeviceError.OccupiedError:
|
|
130
|
+
console.error('The camera is occupied by another application');
|
|
131
|
+
break;
|
|
132
|
+
case DeviceError.NotSupportCapture:
|
|
133
|
+
console.error('The current browser does not support camera capture');
|
|
134
|
+
break;
|
|
135
|
+
default:
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Implementing Microphone Management
|
|
142
|
+
|
|
143
|
+
You can use [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState) to control turning the local microphone on/off, muting, adjusting volume, and displaying real-time volume, and to listen for capture status and errors.
|
|
144
|
+
|
|
145
|
+
### Step 1: Turn the microphone on/off
|
|
146
|
+
``` typescript
|
|
147
|
+
import { useDeviceState, DeviceStatus } from 'tuikit-atomicx-vue3/room';
|
|
148
|
+
const { microphoneStatus, openLocalMicrophone, closeLocalMicrophone } = useDeviceState();
|
|
149
|
+
const toggleMicrophone = async () => {
|
|
150
|
+
if (microphoneStatus.value === DeviceStatus.On) {
|
|
151
|
+
await closeLocalMicrophone();
|
|
152
|
+
} else {
|
|
153
|
+
await openLocalMicrophone();
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Step 2: Get/switch the microphone device
|
|
159
|
+
|
|
160
|
+
#### Example of getting/switching the microphone in a desktop browser
|
|
161
|
+
|
|
162
|
+
You can use [microphoneList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#microphoneList) to get all available microphone devices, and use the [setCurrentMicrophone](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentMicrophone) method to switch the currently used microphone.
|
|
163
|
+
``` typescript
|
|
164
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
165
|
+
|
|
166
|
+
const {
|
|
167
|
+
microphoneList,
|
|
168
|
+
currentMicrophone,
|
|
169
|
+
getMicrophoneList,
|
|
170
|
+
setCurrentMicrophone
|
|
171
|
+
} = useDeviceState();
|
|
172
|
+
|
|
173
|
+
// Get the microphone list
|
|
174
|
+
await getMicrophoneList();
|
|
175
|
+
|
|
176
|
+
// Iterate and display available microphones
|
|
177
|
+
microphoneList.value.forEach((mic) => {
|
|
178
|
+
console.log(`Microphone: ${mic.deviceName} (${mic.deviceId})`);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Switch to the specified microphone
|
|
182
|
+
const switchMicrophone = async (deviceId: string) => {
|
|
183
|
+
await setCurrentMicrophone({ deviceId });
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
// Listen for changes to the current microphone
|
|
187
|
+
watch(currentMicrophone, (mic) => {
|
|
188
|
+
if (mic) {
|
|
189
|
+
console.log('Currently used microphone:', mic.deviceName);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Step 3: Set the capture volume
|
|
195
|
+
|
|
196
|
+
You can use the [setCaptureVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCaptureVolume) method to adjust the capture volume of the local microphone.
|
|
197
|
+
``` typescript
|
|
198
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
199
|
+
const { captureVolume, setCaptureVolume } = useDeviceState();
|
|
200
|
+
|
|
201
|
+
// Set the capture volume to 50%
|
|
202
|
+
await setCaptureVolume(50);
|
|
203
|
+
|
|
204
|
+
// Listen for changes to the capture volume
|
|
205
|
+
watch(captureVolume, (volume) => {
|
|
206
|
+
console.log('Current capture volume:', volume);
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Step 4: Display real-time volume
|
|
211
|
+
|
|
212
|
+
The [currentMicVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#currentMicVolume) property updates the local microphone's capture volume in real time, and can be used for the dynamic display of a volume bar.
|
|
213
|
+
``` typescript
|
|
214
|
+
<template>
|
|
215
|
+
<div class="mic-volume">
|
|
216
|
+
<label>Microphone volume</label>
|
|
217
|
+
<div class="volume-bar-container">
|
|
218
|
+
<div
|
|
219
|
+
class="volume-bar"
|
|
220
|
+
:style="{ width: `${currentMicVolume}%` }"
|
|
221
|
+
/>
|
|
222
|
+
</div>
|
|
223
|
+
<span>{{ currentMicVolume }}</span>
|
|
224
|
+
</div>
|
|
225
|
+
</template>
|
|
226
|
+
|
|
227
|
+
<script setup lang="ts">
|
|
228
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
229
|
+
const { currentMicVolume } = useDeviceState();
|
|
230
|
+
</script>
|
|
231
|
+
|
|
232
|
+
<style scoped>
|
|
233
|
+
.volume-bar-container {
|
|
234
|
+
width: 200px;
|
|
235
|
+
height: 8px;
|
|
236
|
+
background-color: #e0e0e0;
|
|
237
|
+
border-radius: 4px;
|
|
238
|
+
overflow: hidden;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.volume-bar {
|
|
242
|
+
height: 100%;
|
|
243
|
+
background-color: #4caf50;
|
|
244
|
+
transition: width 0.1s ease;
|
|
245
|
+
}
|
|
246
|
+
</style>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Step 5: Handle microphone capture errors
|
|
250
|
+
|
|
251
|
+
When an error occurs during microphone capture, you can obtain the error information via the [microphoneLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#microphoneLastError) data.
|
|
252
|
+
``` typescript
|
|
253
|
+
import { useDeviceState, DeviceError } from 'tuikit-atomicx-vue3/room';
|
|
254
|
+
const { microphoneLastError } = useDeviceState();
|
|
255
|
+
|
|
256
|
+
// Listen for microphone errors
|
|
257
|
+
watch(microphoneLastError, (error) => {
|
|
258
|
+
switch (error) {
|
|
259
|
+
case DeviceError.NoSystemPermission:
|
|
260
|
+
console.error('Microphone permission denied. Please enable microphone permission in system settings');
|
|
261
|
+
break;
|
|
262
|
+
case DeviceError.NoDeviceDetected:
|
|
263
|
+
console.error('No microphone device detected');
|
|
264
|
+
break;
|
|
265
|
+
case DeviceError.OccupiedError:
|
|
266
|
+
console.error('The microphone is occupied by another application');
|
|
267
|
+
break;
|
|
268
|
+
case DeviceError.NotSupportCapture:
|
|
269
|
+
console.error('The current browser does not support microphone capture');
|
|
270
|
+
break;
|
|
271
|
+
default:
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Implementing Speaker Management
|
|
278
|
+
|
|
279
|
+
The speaker (playback device) mainly involves switching devices and setting the playback volume.
|
|
280
|
+
|
|
281
|
+
### Step 1: Get/switch the speaker device
|
|
282
|
+
|
|
283
|
+
You can use [speakerList](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#speakerList) to get all available speaker devices, and use the [setCurrentSpeaker](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setCurrentSpeaker) method to switch the currently used speaker.
|
|
284
|
+
``` typescript
|
|
285
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
286
|
+
const {
|
|
287
|
+
speakerList,
|
|
288
|
+
currentSpeaker,
|
|
289
|
+
getSpeakerList,
|
|
290
|
+
setCurrentSpeaker
|
|
291
|
+
} = useDeviceState();
|
|
292
|
+
|
|
293
|
+
// Get the speaker list
|
|
294
|
+
await getSpeakerList();
|
|
295
|
+
|
|
296
|
+
// Iterate and display available speakers
|
|
297
|
+
speakerList.value.forEach((speaker) => {
|
|
298
|
+
console.log(`Speaker: ${speaker.deviceName} (${speaker.deviceId})`);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
// Switch to the specified speaker
|
|
302
|
+
const switchSpeaker = async (deviceId: string) => {
|
|
303
|
+
await setCurrentSpeaker({ deviceId });
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// Listen for changes to the current speaker
|
|
307
|
+
watch(currentSpeaker, (speaker) => {
|
|
308
|
+
if (speaker) {
|
|
309
|
+
console.log('Currently used speaker:', speaker.deviceName);
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Step 2: Set the playback volume
|
|
315
|
+
|
|
316
|
+
You can use the [setOutputVolume](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setOutputVolume) method to adjust the playback volume of the speaker.
|
|
317
|
+
``` typescript
|
|
318
|
+
import { useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
319
|
+
const { outputVolume, setOutputVolume } = useDeviceState();
|
|
320
|
+
|
|
321
|
+
// Set the playback volume to 60%
|
|
322
|
+
await setOutputVolume(60);
|
|
323
|
+
|
|
324
|
+
// Listen for changes to the playback volume
|
|
325
|
+
watch(outputVolume, (volume) => {
|
|
326
|
+
console.log('Current playback volume:', volume);
|
|
327
|
+
});
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Implementing Network Quality Monitoring
|
|
331
|
+
|
|
332
|
+
Using the [networkInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#networkInfo) data from [useDeviceState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState), you can monitor the local user's network quality in real time.
|
|
333
|
+
|
|
334
|
+
> **Note:**
|
|
335
|
+
>
|
|
336
|
+
|
|
337
|
+
> Valid data can only be obtained from [networkInfo](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#networkInfo) when the local user has joined a room via [joinRoom](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#joinRoom) and turned on the microphone or camera.
|
|
338
|
+
>
|
|
339
|
+
|
|
340
|
+
``` typescript
|
|
341
|
+
<template>
|
|
342
|
+
<div class="network-indicator" @click="showDetails = !showDetails">
|
|
343
|
+
<TUIIcon v-if="networkIcon" :icon="networkIcon" />
|
|
344
|
+
<span class="network-text">{{ networkText }}</span>
|
|
345
|
+
<div v-if="showDetails" class="network-details">
|
|
346
|
+
<div>Latency: {{ networkInfo?.delay }}ms</div>
|
|
347
|
+
<div>Upstream loss: {{ networkInfo?.upLoss }}%</div>
|
|
348
|
+
<div>Downstream loss: {{ networkInfo?.downLoss }}%</div>
|
|
349
|
+
</div>
|
|
350
|
+
</div>
|
|
351
|
+
</template>
|
|
352
|
+
|
|
353
|
+
<script setup lang="ts">
|
|
354
|
+
import { computed, ref } from 'vue';
|
|
355
|
+
import {
|
|
356
|
+
IconNetworkStability,
|
|
357
|
+
IconNetworkFluctuation,
|
|
358
|
+
IconNetworkLag,
|
|
359
|
+
IconNetworkDisconnected,
|
|
360
|
+
IconArrowStrokeUp,
|
|
361
|
+
} from '@tencentcloud/uikit-base-component-vue3';
|
|
362
|
+
import { useDeviceState, NetworkQuality } from 'tuikit-atomicx-vue3/room';
|
|
363
|
+
|
|
364
|
+
const { networkInfo } = useDeviceState();
|
|
365
|
+
const showDetails = ref(false);
|
|
366
|
+
|
|
367
|
+
// Network quality icon
|
|
368
|
+
const networkIcon = computed(() => {
|
|
369
|
+
if (!networkInfo.value) return '';
|
|
370
|
+
switch (networkInfo.value.quality) {
|
|
371
|
+
case NetworkQuality.Excellent:
|
|
372
|
+
case NetworkQuality.Good:
|
|
373
|
+
return IconNetworkStability;
|
|
374
|
+
case NetworkQuality.Poor:
|
|
375
|
+
return IconNetworkFluctuation;
|
|
376
|
+
case NetworkQuality.Bad:
|
|
377
|
+
case NetworkQuality.VeryBad:
|
|
378
|
+
return IconNetworkLag;
|
|
379
|
+
case NetworkQuality.Down:
|
|
380
|
+
return IconNetworkDisconnected;
|
|
381
|
+
default:
|
|
382
|
+
return '';
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
// Network quality text
|
|
387
|
+
const networkText = computed(() => {
|
|
388
|
+
if (!networkInfo.value) return 'Unknown';
|
|
389
|
+
switch (networkInfo.value.quality) {
|
|
390
|
+
case NetworkQuality.Excellent:
|
|
391
|
+
return 'Excellent';
|
|
392
|
+
case NetworkQuality.Good:
|
|
393
|
+
return 'Good';
|
|
394
|
+
case NetworkQuality.Poor:
|
|
395
|
+
return 'Fair';
|
|
396
|
+
case NetworkQuality.Bad:
|
|
397
|
+
return 'Poor';
|
|
398
|
+
case NetworkQuality.VeryBad:
|
|
399
|
+
return 'Very poor';
|
|
400
|
+
case NetworkQuality.Down:
|
|
401
|
+
return 'Disconnected';
|
|
402
|
+
default:
|
|
403
|
+
return 'Unknown';
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
</script>
|
|
407
|
+
|
|
408
|
+
<style scoped>
|
|
409
|
+
|
|
410
|
+
.network-indicator {
|
|
411
|
+
position: relative;
|
|
412
|
+
display: flex;
|
|
413
|
+
align-items: center;
|
|
414
|
+
gap: 8px;
|
|
415
|
+
padding: 8px 12px;
|
|
416
|
+
border-radius: 4px;
|
|
417
|
+
cursor: pointer;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.network-details {
|
|
421
|
+
position: absolute;
|
|
422
|
+
top: 100%;
|
|
423
|
+
left: 0;
|
|
424
|
+
margin-top: 4px;
|
|
425
|
+
padding: 8px;
|
|
426
|
+
background: white;
|
|
427
|
+
border-radius: 4px;
|
|
428
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
|
|
429
|
+
font-size: 12px;
|
|
430
|
+
white-space: nowrap;
|
|
431
|
+
z-index: 2;
|
|
432
|
+
}
|
|
433
|
+
</style>
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
## API Documentation
|
|
437
|
+
|
|
438
|
+
|**State/Component**|**Description**|**API Documentation**|
|
|
439
|
+
|---------|---------|---------|
|
|
440
|
+
|**useDeviceState**|Contains the audio/video device state, the audio/video device lists, and operation interfaces.|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-DeviceState)|
|
|
441
|
+
|
|
442
|
+
## FAQ
|
|
443
|
+
|
|
444
|
+
### If a user's computer has no microphone or speaker device, can they still enter an audio/video room?
|
|
445
|
+
|
|
446
|
+
Yes, they can enter the room. Even without a microphone, speaker, or camera, a user can still successfully call the `joinRoom` interface to enter an audio/video room. However, in this state, the user will encounter the following interaction issues.
|
|
447
|
+
|
|
448
|
+
**Feature limitations:**
|
|
449
|
+
- **Unable to start media capture:** Because the system's underlying layer cannot drive the relevant hardware, calling the [openLocalMicrophone](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#openLocalMicrophone) or [openLocalCamera](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#openLocalCamera) interface will trigger an asynchronous error. In this case, the [microphoneLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#microphoneLastError) or [cameraLastError](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#cameraLastError) property will return `DeviceError.NoDeviceDetected` (no device detected).
|
|
450
|
+
|
|
451
|
+
- **Capture side limited:** The local device cannot capture and transmit audio (requires a microphone) or video (requires a camera).
|
|
452
|
+
|
|
453
|
+
- **Playback side limited:** Because the speaker device is missing, the user will not be able to hear the audio of other participants in the room.
|
|
454
|
+
|
|
455
|
+
**Features that can still be used:**
|
|
456
|
+
|
|
457
|
+
View-only mode: The user can still watch video streams or screen sharing shared by remote participants.
|
|
458
|
+
|
|
459
|
+
### How do I implement device hot-plug detection?
|
|
460
|
+
|
|
461
|
+
Atomicx has a built-in device hot-plug detection feature. When a media device is plugged in or unplugged, the device list and current device data are updated automatically.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
The basic beauty feature allows users to apply smoothing, whitening, and rosy effects to their portrait during video calls or live streaming.
|
|
2
|
+
|
|
3
|
+
## Use Cases
|
|
4
|
+
- **Video conferencing:** Reduces skin blemishes and brightens the complexion, making participants look more professional and energetic.
|
|
5
|
+
|
|
6
|
+
- **Live streaming:** Streamers use the beauty feature to improve the visual quality of the image and attract more viewers.
|
|
7
|
+
|
|
8
|
+
- **Online education:** Teachers and students maintain a clean and natural appearance, creating a pleasant classroom atmosphere.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
- **User status:** The user has completed login authentication via useLoginState, is in the **logged-in** state. See the Integration Overview.
|
|
12
|
+
|
|
13
|
+
- **Environment dependency:** The project has already imported `tuikit-atomicx-vue3`.
|
|
14
|
+
|
|
15
|
+
- **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.
|
|
16
|
+
|
|
17
|
+
## Implementing the Basic Beauty Feature
|
|
18
|
+
|
|
19
|
+
This feature provides two integration options. You can choose the one that best fits your business needs:
|
|
20
|
+
- **Option 1 (Recommended):** Quick integration using UI components. Directly import the beauty panel component provided by `tuikit-atomicx-vue3` ([FreeBeautyPanel](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/FreeBeautyPanel)) and embed it into your application's dialog. This has the lowest development cost.
|
|
21
|
+
|
|
22
|
+
- **Option 2 (Advanced):** Custom integration using low-level APIs. Implement the UI and interaction logic yourself based on the atomicx-core SDK API [useFreeBeautyState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-FreeBeautyState) state hook. This offers the highest flexibility.
|
|
23
|
+
|
|
24
|
+
## Option 1: Quick Integration Using UI Components
|
|
25
|
+
|
|
26
|
+
`tuikit-atomicx-vue3` provides the core beauty settings panel component:
|
|
27
|
+
- [**FreeBeautyPanel**](https://github.com/Tencent-RTC/TUIKit_Vue3/tree/main/packages/tuikit-atomicx-vue3/src/components/FreeBeautyPanel)**:** The basic beauty configuration panel, including parameter adjustment for smoothing, whitening, and rosy effects.
|
|
28
|
+
|
|
29
|
+
### Step 1: Import the Component
|
|
30
|
+
``` typescript
|
|
31
|
+
import { FreeBeautyPanel } from 'tuikit-atomicx-vue3/room';
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Step 2: Use the Component
|
|
35
|
+
|
|
36
|
+
It is generally recommended to place `FreeBeautyPanel` inside a Dialog or Modal, and trigger its display via a button click.
|
|
37
|
+
|
|
38
|
+
**The following example shows how to implement a complete interaction where clicking a button opens the beauty settings:**
|
|
39
|
+
|
|
40
|
+
> **Note:**
|
|
41
|
+
>
|
|
42
|
+
|
|
43
|
+
> All TUIKit components must be wrapped inside UIKitProvider; otherwise, they will not be able to obtain their context dependencies, resulting in abnormal styling.
|
|
44
|
+
>
|
|
45
|
+
|
|
46
|
+
``` typescript
|
|
47
|
+
<template>
|
|
48
|
+
<UIKitProvider theme="light" language="en-US">
|
|
49
|
+
<div class="toolbar-container">
|
|
50
|
+
<!-- 1. Trigger button -->
|
|
51
|
+
<button @click="openBeautySettings">Set Beauty</button>
|
|
52
|
+
|
|
53
|
+
<!-- 2. Settings dialog -->
|
|
54
|
+
<div v-if="showSettings" class="modal-mask">
|
|
55
|
+
<div class="modal-content">
|
|
56
|
+
<div class="modal-header">
|
|
57
|
+
<span>Basic Beauty</span>
|
|
58
|
+
<button @click="showSettings = false">Close</button>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="modal-body">
|
|
62
|
+
<!-- 3. Import the panel component -->
|
|
63
|
+
<!-- @close event: triggered when the user clicks the close button inside the panel (if any) -->
|
|
64
|
+
<FreeBeautyPanel @close="showSettings = false" />
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</UIKitProvider>
|
|
70
|
+
</template>
|
|
71
|
+
|
|
72
|
+
<script setup lang="ts">
|
|
73
|
+
import { ref } from 'vue';
|
|
74
|
+
import { UIKitProvider } from '@tencentcloud/uikit-base-component-vue3';
|
|
75
|
+
import { FreeBeautyPanel, useDeviceState } from 'tuikit-atomicx-vue3/room';
|
|
76
|
+
|
|
77
|
+
const showSettings = ref(false);
|
|
78
|
+
const { cameraList } = useDeviceState();
|
|
79
|
+
|
|
80
|
+
const openBeautySettings = () => {
|
|
81
|
+
// 1. Check whether there is an available camera
|
|
82
|
+
if (cameraList.value.length === 0) {
|
|
83
|
+
alert('No camera detected; cannot set beauty');
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// 2. Open the settings panel
|
|
88
|
+
showSettings.value = true;
|
|
89
|
+
};
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<style scoped>
|
|
93
|
+
.modal-mask {
|
|
94
|
+
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
|
|
95
|
+
background: rgba(0,0,0,0.5); display: flex; justify-content: center; align-items: center; z-index: 1000;
|
|
96
|
+
}
|
|
97
|
+
.modal-content { background: white; width: 600px; border-radius: 8px; overflow: hidden; }
|
|
98
|
+
.modal-header { padding: 16px; display: flex; justify-content: space-between; border-bottom: 1px solid #eee; }
|
|
99
|
+
.modal-body { padding: 16px; }
|
|
100
|
+
</style>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The internal logic of this component is as follows:
|
|
104
|
+
- **Show the panel:** After the user clicks the button, a dialog containing `FreeBeautyPanel` pops up.
|
|
105
|
+
|
|
106
|
+
- **Adjust parameters:** The user drags the sliders in the panel to adjust the smoothing, whitening, and rosy parameters.
|
|
107
|
+
|
|
108
|
+
- **Real-time preview:** During adjustment, the preview interface is called in real time to preview the beauty effect.
|
|
109
|
+
|
|
110
|
+
- **Save and apply:** When the panel is closed (triggering the `@close` event), the current settings are automatically saved so that they take effect for remote users.
|
|
111
|
+
|
|
112
|
+
## Option 2: Custom Integration Using Low-Level APIs
|
|
113
|
+
|
|
114
|
+
This section mainly describes how to implement basic beauty via the atomicx-core SDK API [useFreeBeautyState](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-FreeBeautyState) interface.
|
|
115
|
+
|
|
116
|
+
### Step 1: Set Up the Preview
|
|
117
|
+
|
|
118
|
+
When the user adjusts the beauty parameters (for example, by dragging a slider), use [setFreeBeauty](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#setFreeBeauty) for real-time preview. At this point, the effect is only visible locally and will not be transmitted to remote users.
|
|
119
|
+
|
|
120
|
+
> **Note:**
|
|
121
|
+
>
|
|
122
|
+
|
|
123
|
+
> The value range of the parameters is 0-100.
|
|
124
|
+
>
|
|
125
|
+
|
|
126
|
+
``` typescript
|
|
127
|
+
import { useFreeBeautyState } from 'tuikit-atomicx-vue3/room';
|
|
128
|
+
|
|
129
|
+
const { setFreeBeauty, beautyConfig } = useFreeBeautyState();
|
|
130
|
+
|
|
131
|
+
// Example: adjust the beauty parameters
|
|
132
|
+
const updatePreview = async (beauty: number, white: number, ruddy: number) => {
|
|
133
|
+
// The values in beautyConfig update automatically; this demonstrates how to set the preview manually
|
|
134
|
+
await setFreeBeauty({
|
|
135
|
+
beautyLevel: beauty, // Smoothing (0-100)
|
|
136
|
+
whitenessLevel: white, // Whitening (0-100)
|
|
137
|
+
ruddinessLevel: ruddy // Rosy (0-100)
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Step 2: Save and Apply
|
|
143
|
+
|
|
144
|
+
After the user confirms that they are satisfied with the preview, call [saveBeautySetting](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#saveBeautySetting) to apply the current configuration to the video stream. At this point, remote users can see the beauty effect.
|
|
145
|
+
|
|
146
|
+
> **Note:**
|
|
147
|
+
>
|
|
148
|
+
|
|
149
|
+
> The beauty 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.
|
|
150
|
+
>
|
|
151
|
+
> - [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.
|
|
152
|
+
|
|
153
|
+
``` typescript
|
|
154
|
+
import { useFreeBeautyState } from 'tuikit-atomicx-vue3/room';
|
|
155
|
+
|
|
156
|
+
const { saveBeautySetting } = useFreeBeautyState();
|
|
157
|
+
|
|
158
|
+
const applyBeauty = async () => {
|
|
159
|
+
// Save the currently previewed settings so that they take effect for remote users
|
|
160
|
+
await saveBeautySetting();
|
|
161
|
+
console.log('Beauty has taken effect');
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Step 3: Disable the Beauty Effect
|
|
166
|
+
|
|
167
|
+
To disable beauty, simply set all parameters to 0 and save.
|
|
168
|
+
``` typescript
|
|
169
|
+
const closeBeauty = async () => {
|
|
170
|
+
// 1. Set all parameters to 0 and preview
|
|
171
|
+
await setFreeBeauty({
|
|
172
|
+
beautyLevel: 0,
|
|
173
|
+
whitenessLevel: 0,
|
|
174
|
+
ruddinessLevel: 0
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// 2. Save to apply
|
|
178
|
+
await saveBeautySetting();
|
|
179
|
+
};
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Development Notes
|
|
183
|
+
- **Parameter range:** The parameters received by `setFreeBeauty` (`beautyLevel`, `whitenessLevel`, `ruddinessLevel`) all have a range of 0-100.
|
|
184
|
+
|
|
185
|
+
- **Preview and apply:** To provide a better user experience, beauty adjustment is divided into two phases: **"preview"** and **"apply"**. `setFreeBeauty` is only used for local preview; you must call `saveBeautySetting` for `trtcCloud.setBeautyStyle` to be officially invoked and applied to the published stream.
|
|
186
|
+
|
|
187
|
+
- **Device dependency:** The beauty feature depends on the video stream, so the effect can only be seen when the camera is enabled. If no camera is detected, it is recommended to disable the beauty entry.
|
|
188
|
+
|
|
189
|
+
- **Performance consumption:** Enabling beauty adds a certain amount of CPU and GPU load. It is recommended to guide users on low-end devices to use it moderately.
|
|
190
|
+
|
|
191
|
+
## FAQ
|
|
192
|
+
|
|
193
|
+
### **Why can't remote users see the effect after I adjust the beauty settings?**
|
|
194
|
+
|
|
195
|
+
Please confirm whether `saveBeautySetting()` was called. `setFreeBeauty()` is only used for local preview; only after saving will it be applied to the published video stream.
|
|
196
|
+
|
|
197
|
+
### **Can I set beauty without a camera?**
|
|
198
|
+
|
|
199
|
+
No. The beauty feature processes the video stream, so if no video image is captured, beauty cannot take effect. It is recommended to hide or disable the beauty entry when there is no camera.
|
|
200
|
+
|
|
201
|
+
### **After leaving the room or turning off the camera, do I need to reset beauty manually?**
|
|
202
|
+
|
|
203
|
+
No. `useFreeBeautyState` already implements automatic state management internally:
|
|
204
|
+
- Camera switching: Beauty is paused when the camera is turned off, and the last saved settings are automatically restored when it is turned back on.
|
|
205
|
+
|
|
206
|
+
- Entering/leaving rooms: All beauty parameters are automatically reset when leaving the room, with no manual cleanup required by the developer.
|
|
207
|
+
|
|
208
|
+
## **Example Project**
|
|
209
|
+
|
|
210
|
+
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.
|
|
211
|
+
|
|
212
|
+
## API Documentation
|
|
213
|
+
|
|
214
|
+
|**State/Component**|**Description**|**API Documentation**|
|
|
215
|
+
|---------|---------|---------|
|
|
216
|
+
|**useFreeBeautyState**|Free beauty feature management|[API Documentation](https://web.sdk.qcloud.com/trtc/live/web/doc/en/index.html#module-FreeBeautyState)|
|