@tencentcloud/sdk-mcp 1.7.7 → 1.7.9-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/CHANGELOG.md +13 -0
- package/README.md +7 -9
- package/index.js +8 -8
- package/knowledge/chunker.js +1 -0
- package/knowledge/doc-url-resolver.js +16 -9
- package/knowledge/embedding/build-vectors.js +92 -0
- package/knowledge/embedding/embed-model.js +41 -0
- package/knowledge/embedding/vector-augment.js +126 -0
- package/knowledge/embedding/vector-index.js +70 -0
- package/knowledge/frontmatter-meta.js +23 -0
- package/knowledge/path-meta.js +56 -0
- package/knowledge/search/exact-lookup.js +145 -16
- package/knowledge/search/filter-pool.js +77 -33
- package/knowledge/search/rank-profile.js +25 -0
- package/knowledge/search/requires-framework.js +4 -1
- package/knowledge/search/search-core.js +74 -13
- package/knowledge/search/search-knowledge.js +24 -34
- package/knowledge/search/search-pass.js +495 -169
- package/knowledge/search/url-row-scorer.js +24 -6
- package/package.json +3 -1
- package/resource/index/manifest.json +1 -1
- package/resource/index/vectors/index.json +4 -0
- package/resource/integration/callkit/preset/android/integration.md +0 -2
- package/resource/integration/callkit/preset/ios/integration.md +0 -2
- package/resource/integration/chat/preset/react/integration.md +9 -5
- package/resource/integration/chat/preset/uni-app/integration.md +4 -0
- package/resource/integration/chat/preset/vue/integration.md +10 -6
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +0 -4
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +0 -4
- package/resource/integration/roomkit/preset/vue/integration.md +154 -208
- package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +0 -2
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +0 -4
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +0 -2
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -4
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -2
- package/resource/knowledge/callkit/faq/ios.md +0 -2
- package/resource/knowledge/callkit/faq/uniapp-app.md +0 -2
- package/resource/knowledge/callkit/preset/miniprogram/integration.md +2 -3
- package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +0 -2
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -16
- package/resource/knowledge/chat/preset/react/h5/integration.md +16 -5
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +6 -3
- package/resource/knowledge/chat/preset/vue/h5/integration.md +7 -4
- package/resource/knowledge/iot/app/activate-service.md +95 -0
- package/resource/knowledge/iot/app/demo/android.md +93 -0
- package/resource/knowledge/iot/app/demo/ios.md +87 -0
- package/resource/knowledge/iot/app/demo/miniprogram.md +79 -0
- package/resource/knowledge/iot/app/device-binding.md +378 -0
- package/resource/knowledge/iot/app/device-sharing.md +414 -0
- package/resource/knowledge/iot/app/family-management.md +762 -0
- package/resource/knowledge/iot/app/integration/android.md +328 -0
- package/resource/knowledge/iot/app/integration/harmonyos.md +326 -0
- package/resource/knowledge/iot/app/integration/ios.md +351 -0
- package/resource/knowledge/iot/app/integration/miniprogram.md +268 -0
- package/resource/knowledge/iot/app/monitor-playback.md +557 -0
- package/resource/knowledge/iot/app/remote-control.md +139 -0
- package/resource/knowledge/iot/app/video-call.md +559 -0
- package/resource/knowledge/iot/app/wechat-call/device-call-miniprogram.md +204 -0
- package/resource/knowledge/iot/app/wechat-call/miniprogram-call-device.md +193 -0
- package/resource/knowledge/iot/client-api/app/android/txiotcallsession.md +189 -0
- package/resource/knowledge/iot/client-api/app/android/txiotcloudstorage.md +77 -0
- package/resource/knowledge/iot/client-api/app/android/txiotdevicemanager.md +175 -0
- package/resource/knowledge/iot/client-api/app/android/txiotengine.md +172 -0
- package/resource/knowledge/iot/client-api/app/android/txiotenginedef.md +163 -0
- package/resource/knowledge/iot/client-api/app/android/txiotfamilymanager.md +146 -0
- package/resource/knowledge/iot/client-api/app/android/txiotmonitorsession.md +246 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotcallsession.md +191 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotcloudstorage.md +77 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotdevicemanager.md +183 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotengine.md +186 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotenginedef.md +164 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotfamilymanager.md +150 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotmonitorsession.md +252 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotcallsession.md +199 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotcloudstorage.md +76 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotdevicemanager.md +173 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotengine.md +173 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotenginedef.md +171 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotfamilymanager.md +146 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotmonitorsession.md +250 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotcallsession.md +180 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotcloudstorage.md +76 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotdevicemanager.md +281 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotengine.md +183 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotenginedef.md +152 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotfamilymanager.md +179 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotmonitorsession.md +226 -0
- package/resource/knowledge/iot/client-api/device/android-smart-device.md +813 -0
- package/resource/knowledge/iot/client-api/device/linux-rtos-device.md +2027 -0
- package/resource/knowledge/iot/device/activate-service.md +167 -0
- package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/custom-agent.md +171 -0
- package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/smart-device-control.md +721 -0
- package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/android-smart-device.md +247 -0
- package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/linux-rtos-device.md +368 -0
- package/resource/knowledge/iot/device/ai-voice-chat/overview.md +84 -0
- package/resource/knowledge/iot/device/cloud-storage.md +696 -0
- package/resource/knowledge/iot/device/data-model.md +972 -0
- package/resource/knowledge/iot/device/demo/android-smart-device.md +97 -0
- package/resource/knowledge/iot/device/demo/linux-rtos-device.md +106 -0
- package/resource/knowledge/iot/device/device-ota-upgrade.md +237 -0
- package/resource/knowledge/iot/device/dynamic-registration/android-smart-device.md +275 -0
- package/resource/knowledge/iot/device/dynamic-registration/linux-rtos-device.md +297 -0
- package/resource/knowledge/iot/device/login-and-register/android-smart-device.md +131 -0
- package/resource/knowledge/iot/device/login-and-register/linux-rtos-device.md +291 -0
- package/resource/knowledge/iot/device/monitor-pushing/android-smart-device.md +237 -0
- package/resource/knowledge/iot/device/monitor-pushing/linux-rtos-device.md +493 -0
- package/resource/knowledge/iot/device/video-call/android-smart-device.md +299 -0
- package/resource/knowledge/iot/device/video-call/linux-rtos-device.md +465 -0
- package/resource/knowledge/iot/device/wechat-call/android-smart-device.md +534 -0
- package/resource/knowledge/iot/device/wechat-call/linux-rtos-device.md +681 -0
- package/resource/knowledge/iot/kids-watch/overview.md +28 -0
- package/resource/knowledge/iot/security-camera/activate-service.md +74 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/app-integration.md +302 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/android.md +237 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/linux-rtos.md +493 -0
- package/resource/knowledge/iot/security-camera/overview.md +31 -0
- package/resource/knowledge/iot/security-camera/ptz-control.md +153 -0
- package/resource/knowledge/iot/security-camera/recording-and-snapshot.md +182 -0
- package/resource/knowledge/iot/security-camera/voice-intercom.md +174 -0
- package/resource/knowledge/iot/smart-vision/serviceoverview.md +114 -0
- package/resource/knowledge/iot/voice-recorder/app-demo.md +99 -0
- package/resource/knowledge/iot/voice-recorder/device-demo.md +189 -0
- package/resource/knowledge/iot/voice-recorder/overview.md +64 -0
- package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/android/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/android/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +0 -2
- package/resource/knowledge/livekit/faq/error-code.md +0 -2
- package/resource/knowledge/push/config/android/honor.md +16 -1
- package/resource/knowledge/push/config/android/huawei.md +20 -4
- package/resource/knowledge/push/config/android/meizu.md +19 -5
- package/resource/knowledge/push/config/android/vivo.md +20 -1
- package/resource/knowledge/push/config/donut.md +0 -2
- package/resource/knowledge/push/config/harmonyos.md +21 -5
- package/resource/knowledge/push/integration/android.md +0 -5
- package/resource/knowledge/push/integration/donut.md +0 -3
- package/resource/knowledge/push/integration/flutter.md +1 -4
- package/resource/knowledge/push/integration/harmonyos.md +0 -3
- package/resource/knowledge/push/integration/ios.md +0 -3
- package/resource/knowledge/push/integration/react-native.md +0 -5
- package/resource/knowledge/push/integration/uni-app.md +0 -3
- package/resource/knowledge/push/integration/unity.md +0 -3
- package/resource/knowledge/push/integration/unreal-engine.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +18 -14
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +30 -0
- package/resource/knowledge/rtcengine/web/plugin/24-advanced-network-quality.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +4 -0
- package/resource/knowledge/trtc/android/TRTCCloud.md +94 -85
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +48 -46
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +48 -48
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +18 -18
- package/resource/knowledge/trtc/android/TXDeviceManager.md +4 -4
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +90 -90
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +18 -18
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +9 -9
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +47 -47
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +47 -45
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +93 -93
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +50 -50
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +8 -8
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +9 -9
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +48 -46
- package/server-config.js +8 -9
- package/server.js +1 -1
- package/tools/common/finalize_answer.js +1 -1
- package/tools/common/present_framework_choice.js +1 -1
- package/tools/common/search_trtc_knowledge.js +22 -3
- package/tools/definitions/search_trtc_knowledge_def.js +3 -2
- package/utils/preflight-route.js +19 -2
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
---
|
|
2
|
+
product: iot
|
|
3
|
+
framework:
|
|
4
|
+
- '*'
|
|
5
|
+
types:
|
|
6
|
+
- feature
|
|
7
|
+
retrievable_scope: always
|
|
8
|
+
feature_domain: voice-recorder
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本文将介绍如何将录音卡 SDK 集成到您的设备固件中,跑通**录音会话**功能。全文分为三个部分:
|
|
12
|
+
- **SDK 下载**:了解支持平台与获取对应平台的 SDK 交付包。
|
|
13
|
+
|
|
14
|
+
- **SDK 对接指引**:完成 SDK 集成与录音会话能力对接。
|
|
15
|
+
|
|
16
|
+
- **跑通 Demo**:以 ESP32S3 为例,介绍如何编译烧录,完成设备与 App 联调。
|
|
17
|
+
|
|
18
|
+
## SDK 下载
|
|
19
|
+
|
|
20
|
+
|芯片原厂|芯片型号|SDK 下载地址|
|
|
21
|
+
|---------|---------|---------|
|
|
22
|
+
|乐鑫|ESP32S3|[下载](https://github.com/Tencent-RTC/IoT_VoiceRecordingCard/tree/main/devices/ESP32S3/components/tc_iot_sdk)|
|
|
23
|
+
|
|
24
|
+
> **注意:**
|
|
25
|
+
> 如果您的项目使用其它芯片,请填写 [芯片适配需求表](https://cloud.tencent.com/apply/p/jmg2ftgxsu),我们将尽快适配。
|
|
26
|
+
>
|
|
27
|
+
> 芯片需要满足如下要求:
|
|
28
|
+
>
|
|
29
|
+
|
|
30
|
+
|前提项|要求|
|
|
31
|
+
|---------|---------|
|
|
32
|
+
|BLE|BLE4.2及以上。|
|
|
33
|
+
|Flash/RAM|100KB 以上 Flash,50KB 以上 RAM(SDK 用,不含 BLE 协议栈)。|
|
|
34
|
+
|存储介质|已挂载的文件系统(如 SD 卡 + FAT),提供录音文件落盘目录。|
|
|
35
|
+
|音频能力|麦克风采集 + Opus 编码(16kHz / 单声道 / 60ms 帧)。|
|
|
36
|
+
|操作系统|FreeRTOS 或其他 pthread 风格的 RTOS。|
|
|
37
|
+
|
|
38
|
+
## SDK 对接指引
|
|
39
|
+
|
|
40
|
+
这部分主要介绍录音卡 API 的对接,方便集成到自己项目中去。
|
|
41
|
+
|
|
42
|
+
集成方需完成:**调用5个 API、实现3个回调、按固定格式送帧**。
|
|
43
|
+
|
|
44
|
+
### 步骤1: 引入录音卡头文件
|
|
45
|
+
``` c
|
|
46
|
+
/* 只需要引入这一个头文件即可 */
|
|
47
|
+
#include "tc_iot_audio_recorder.h"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 步骤2: 初始化
|
|
51
|
+
``` c
|
|
52
|
+
/* 回调运行在 SDK 内部 message loop 线程:只做入队/置标志,勿阻塞、勿直连硬件 */
|
|
53
|
+
|
|
54
|
+
static void on_rec_start(const char *params, void *user_data)
|
|
55
|
+
{
|
|
56
|
+
/* App 下发开始(或本地 start 被接受):打开麦克风采集 + Opus 编码器,
|
|
57
|
+
* 之后开始向 SDK 送帧 */
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static void on_rec_stop(const char *params, void *user_data)
|
|
61
|
+
{
|
|
62
|
+
/* App 下发停止(或本地 stop):请求停止采集,停止送帧 */
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static void on_rec_message(tc_iot_error_e error_code, const char *json_msg, void *user_data)
|
|
66
|
+
{
|
|
67
|
+
/* 统一事件入口:解析 json_msg 驱动 UI/业务状态,如果没有UI则不需要关注error_code>0的json_msg */
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static void on_log(tc_iot_log_level_e level, const char *log)
|
|
71
|
+
{
|
|
72
|
+
/* SDK 日志:按需转发到客户日志系统,调试的时候使用,量产只打印Info级别日志即可 */
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
void recorder_init(void)
|
|
76
|
+
{
|
|
77
|
+
tc_iot_audio_recorder_params_s params = {
|
|
78
|
+
.storage_path = "/sdcard/voice", /* 录音文件落盘目录(SD 卡挂载点下) */
|
|
79
|
+
.log_level = TC_IOT_LOG_LEVEL_INFO, /* 调试阶段可以开Debug */
|
|
80
|
+
.on_log = on_log,
|
|
81
|
+
};
|
|
82
|
+
tc_iot_audio_recorder_observer_s obs = {
|
|
83
|
+
.on_audio_recorder_start = on_rec_start, // 本地主动触发录音和APP发起录音都会走这个回调
|
|
84
|
+
.on_audio_recorder_stop = on_rec_stop, // 本地主动触发结束录音或APP结束录音都会走这个回调
|
|
85
|
+
.on_message = on_rec_message, // 错误或者事件通知统一走这个回调
|
|
86
|
+
};
|
|
87
|
+
tc_iot_error_e err = tc_iot_audio_recorder_init(¶ms, &obs, NULL);
|
|
88
|
+
if (err != TC_IOT_ERR_SUCCESS) {
|
|
89
|
+
/* 初始化失败 */
|
|
90
|
+
}
|
|
91
|
+
/* init 成功后 SDK 自动开始 BLE 广播,等待 App 连接 */
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 步骤3: 设备主动发起录音/结束录音
|
|
96
|
+
``` c
|
|
97
|
+
/* 设备本地主动发起录音,如按键开始录音,调用此函数,sdk内部准备好后会通过on_audio_recorder_start告知,然后才可以推音频流 */
|
|
98
|
+
tc_iot_error_e tc_iot_audio_recorder_start(tc_iot_audio_recorder_operation_cb callback);
|
|
99
|
+
/* 设备本地主动结束录音,如按键结束录音,调用此函数,sdk内部处理完成后会通过on_audio_recorder_stop告知,此时可以结束推音频流 */
|
|
100
|
+
tc_iot_error_e tc_iot_audio_recorder_stop(void);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 步骤4: 推音频流
|
|
104
|
+
|
|
105
|
+
当收到 **on_audio_recorder_start** 的回调后,就可以推送音频。
|
|
106
|
+
``` c
|
|
107
|
+
/* 需要在收到on_audio_recorder_start的回调之后才可以推音频流,在这之前推的音频流都会返回错误,但不影响正常调用 */
|
|
108
|
+
const tc_iot_audio_frame frame = {
|
|
109
|
+
.codec = TC_IOT_AUDIO_CODEC_OPUS, // 当前只接收Opus音频
|
|
110
|
+
.sample_rate = TC_IOT_AUDIO_SAMPLE_RATE_16000,
|
|
111
|
+
.channels = TC_IOT_AUDIO_CHANNEL_MONO,
|
|
112
|
+
.frame_duration_ms = TC_IOT_AUDIO_FRAME_DURATION_MS, // 60ms
|
|
113
|
+
.data = (uint8_t *)opus,
|
|
114
|
+
.data_size = len,
|
|
115
|
+
};
|
|
116
|
+
tc_iot_audio_recorder_send_audio(&frame);
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 步骤5: 退出,反初始化
|
|
120
|
+
``` c
|
|
121
|
+
/* 停止录音/设备休眠时调用,释放init时的资源,退出SDK */
|
|
122
|
+
tc_iot_error_e tc_iot_audio_recorder_deinit(void);
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 跑通 Demo
|
|
126
|
+
|
|
127
|
+
这节介绍如何跑通录音卡设备端 Demo,我们以 [立创实战派 ESP32S3开发版](https://wiki.lckfb.com/zh-hans/szpi-esp32s3/) 为例,来介绍录音卡设备端 SDK 的使用。跑通本 Demo 后,您可以验证 BLE 录音卡绑定、实时录音、离线文件同步,以及云端语音识别能力。
|
|
128
|
+
|
|
129
|
+
### 前置条件
|
|
130
|
+
|
|
131
|
+
您已经成功 跑通了应用端 APP,手机已经装好了 APP 并可以正常运行。
|
|
132
|
+
|
|
133
|
+
### 下载 Demo
|
|
134
|
+
``` xml
|
|
135
|
+
git clone https://github.com/Tencent-RTC/IoT_VoiceRecordingCard.git
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 步骤1: 准备 ESP-IDF 编译构建环境
|
|
139
|
+
|
|
140
|
+
本项目基于乐鑫官方 ESP-IDF 框架开发,版本要求 6.2(或者 master 分支):
|
|
141
|
+
1. 打开 [乐鑫官方入门教程](https://docs.espressif.com/projects/esp-idf/zh-cn/latest/get-started/index.html)。
|
|
142
|
+
|
|
143
|
+
2. 按文档安装 ESP-IDF v6.2(master 也可以) 及工具链:
|
|
144
|
+
|
|
145
|
+
- Windows:下载「ESP-IDF 安装器」一路下一步,完成后桌面会出现 ESP-IDF 终端。
|
|
146
|
+
|
|
147
|
+
- macOS / Linux:按文档执行 `install.sh`,之后在终端执行 `. $HOME/esp/esp-idf/export.sh` 激活环境。
|
|
148
|
+
|
|
149
|
+
3. 验证安装:在 ESP-IDF 终端中执行 `idf.py --version`,应输出 6.2。
|
|
150
|
+
|
|
151
|
+
> **说明:**
|
|
152
|
+
>
|
|
153
|
+
> 后续所有命令都在「ESP-IDF 终端」(或已执行 export.sh 的终端)中输入。
|
|
154
|
+
>
|
|
155
|
+
|
|
156
|
+
### 步骤2: 编译&烧录
|
|
157
|
+
|
|
158
|
+
在终端中进入本工程目录 **devices/ESP32S3**,依次执行:
|
|
159
|
+
``` bash
|
|
160
|
+
idf.py set-target esp32s3 # 第 1 步:指定芯片型号(仅需一次)
|
|
161
|
+
idf.py build # 第 2 步:编译(首次会联网下载依赖,需几分钟)
|
|
162
|
+
idf.py -p <串口> flash monitor # 第 3 步:烧录并打开串口监视器
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**<串口> 的查看方式**:
|
|
166
|
+
|
|
167
|
+
|系统|串口|查看方法|
|
|
168
|
+
|---------|---------|---------|
|
|
169
|
+
|macOS|/dev/cu.usbmodem*|ls /dev/cu.usbmodem*|
|
|
170
|
+
|Windows|COMx|设备管理器 → 端口(COM 和 LPT)。|
|
|
171
|
+
|Linux|/dev/ttyACM0|ls /dev/ttyACM*;若无权限执行 sudo usermod -aG dialout $USER 后重新登录。|
|
|
172
|
+
|
|
173
|
+
烧录完成后设备自动重启,串口监视器中可见启动日志(按 **Ctrl+]** 退出监视器)。
|
|
174
|
+
|
|
175
|
+
### 步骤3: 上电使用
|
|
176
|
+
|
|
177
|
+
#### 连接手机 App
|
|
178
|
+
1. 用 USB 线给开发板上电,屏幕点亮并显示设备就绪表情。
|
|
179
|
+
|
|
180
|
+
2. 打开手机 App,在设备列表中选择 **TXVR-XXXX**(XXXX 为屏幕/串口日志中 显示的设备 MAC 地址后两位)。
|
|
181
|
+
|
|
182
|
+
3. 连接成功后,屏幕表情切换为“已就绪”,即可开始使用。
|
|
183
|
+
|
|
184
|
+
#### 开始录音
|
|
185
|
+
- 手机操作:在 App 中点击“开始录音”,对开发板上的麦克风说话;点击“停止”结束。
|
|
186
|
+
|
|
187
|
+
- 按键操作:短按板上 BOOT 键 等效开始/停止录音。
|
|
188
|
+
|
|
189
|
+
录音过程中屏幕显示“聆听中”表情;停止后录音自动上传,文件同时保存在 SD 卡中,可在 App 内回放或下载。
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
product: iot
|
|
3
|
+
framework:
|
|
4
|
+
- '*'
|
|
5
|
+
types:
|
|
6
|
+
- feature
|
|
7
|
+
retrievable_scope: always
|
|
8
|
+
feature_domain: voice-recorder
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本方案是面向录音卡类硬件的**一站式端到端解决方案**:基于腾讯云蓝牙端到端传输 SDK 与 VoiceAI SDK,覆盖「录音设备采集 → 蓝牙链路传输 → App 端 AI 降噪与识别 → ASR 识别 → 结构化文本输出」完整链路。**已适配的芯片15分钟即可完成集成跑通**,输出带发言人和时间轴的结构化文本。
|
|
12
|
+
|
|
13
|
+
## 方案优势速览
|
|
14
|
+
- **十五分钟集成(已适配芯片)**:针对已完成适配的芯片平台,蓝牙端到端传输 SDK 与 VoiceAI SDK 均提供完整 Demo 与简洁接口,设备端接入蓝牙传输、App 端接入识别链路,15分钟即可完成端到端跑通验证。
|
|
15
|
+
|
|
16
|
+
- **一整套端到端蓝牙传输方案**:覆盖「录音设备采集 → 蓝牙链路传输 → App 端识别输出」全链路,设备端与端侧 SDK 组合开箱即用,无需自行打通传输与识别两段链路。
|
|
17
|
+
|
|
18
|
+
- **AI 降噪能力**:VoiceAI SDK 内置端侧 AI 降噪,在识别前抑制环境噪声,保障嘈杂场景下的转写质量。
|
|
19
|
+
|
|
20
|
+
## 端到端蓝牙传输方案
|
|
21
|
+
|
|
22
|
+
录音卡类产品的核心难点在于设备端音频如何稳定、低延迟地到达手机端识别引擎。本方案由腾讯云提供覆盖全链路的 SDK 组合,客户无需自行研发或拼接传输链路:
|
|
23
|
+
- **设备端**:蓝牙端到端传输 SDK 在录音设备侧完成音频采集与传输,音频经蓝牙链路实时送达手机。
|
|
24
|
+
|
|
25
|
+
- **手机端**:App 通过外部 PCM 喂入模式接收设备音频,直接送入 VoiceAI SDK 处理,不依赖手机麦克风采集。
|
|
26
|
+
|
|
27
|
+
- **全链路对齐**:传输与识别接口已由两个 SDK 组合打通,客户按 Demo 对接即可,无需自行处理链路衔接。
|
|
28
|
+
|
|
29
|
+
## AI 降噪能力
|
|
30
|
+
|
|
31
|
+
项目集成的 `VoiceAI` SDK 包含客户端 AI 降噪处理能力。其目标不是生成更“悦耳”的声音,而是在音频送入识别引擎前抑制环境噪声、提高语音可懂度,从而减少噪声触发、漏识别和误识别。
|
|
32
|
+
|
|
33
|
+
|能力维度|说明|
|
|
34
|
+
|---------|---------|
|
|
35
|
+
|端侧前处理|降噪位于音频输入与 ASR 之间,可在上云前改善信噪比,减少无效噪声对 VAD 和识别模型的干扰。|
|
|
36
|
+
|AI 模型降噪|SDK 内置多条 AINS 处理路径,包含面向 ASR 和会议场景的处理策略,可按实际声学环境选择。|
|
|
37
|
+
|复杂噪声适配|适用于空调、风扇、键盘、设备运行声等稳态或非稳态背景噪声;实际效果取决于拾音距离、信噪比和设备算力。|
|
|
38
|
+
|
|
39
|
+
## 识别能力
|
|
40
|
+
|
|
41
|
+
识别链路基于成熟的 ASR 与说话人分离能力,同时支持录音过程中的流式识别和录音完成后的全量识别:
|
|
42
|
+
- **实时流式识别**:按语音片段返回可修订的中间结果和最终结果,支持语音活动检测(VAD),满足边录边看的低时延场景。
|
|
43
|
+
|
|
44
|
+
- **录音文件识别**:生成高完整度转写结果,返回语句文本、起止毫秒时间和说话人编号,适合会后归档与检索。
|
|
45
|
+
|
|
46
|
+
- **说话人分离**:实时与录音文件链路均开启,输出「谁在什么时候说了什么」的结构化语句分段。
|
|
47
|
+
|
|
48
|
+
## 应用场景
|
|
49
|
+
|
|
50
|
+
|应用场景|核心诉求|方案能力|
|
|
51
|
+
|---------|---------|---------|
|
|
52
|
+
|多人会议|边录边看转写,并在会后快速定位不同发言者的观点。|实时 ASR + 实时说话人分离 + 带时间轴的录音文件识别。|
|
|
53
|
+
|采访与调研|完整保留长时间对话,减少人工听写和区分采访对象的成本。|长录音分片转写 + 语句级时间戳 + 说话人编号。|
|
|
54
|
+
|嘈杂办公环境|降低空调、风扇、键盘等背景噪声对识别效果的影响。|端侧 AI 降噪 + VAD + ASR 友好型音频处理。|
|
|
55
|
+
|
|
56
|
+
## 功能优势
|
|
57
|
+
|
|
58
|
+
|优势|说明|
|
|
59
|
+
|---------|---------|
|
|
60
|
+
|十五分钟集成|针对已适配芯片,设备端蓝牙传输 SDK 与 App 端 VoiceAI SDK 均提供完整 Demo 与封装接口,15分钟即可完成端到端跑通。|
|
|
61
|
+
|端到端蓝牙传输方案|覆盖设备采集、蓝牙传输、端侧识别输出的完整链路,设备端与端侧能力组合交付,开箱即用。|
|
|
62
|
+
|实时与离线识别互补|实时 ASR 提供低时延反馈,录音文件识别提供完整文本和精确时间轴,分别服务录中和录后场景。|
|
|
63
|
+
|文本与角色同时结构化|识别结果不仅包含文字,还包含发言人编号、片段状态和时间信息,便于直接进入纪要、检索和大模型分析链路。|
|
|
64
|
+
|AI 降噪能力|VoiceAI SDK 内置 AI 降噪能力,可在识别前抑制环境噪声、改善音频质量,降低真实办公和移动环境中的噪声干扰。|
|
|
@@ -209,8 +209,6 @@ class GiftManager(
|
|
|
209
209
|
|
|
210
210
|
3. **UI 展示**:使用拉取到的 `List<GiftCategory>` 数据填充礼物面板。
|
|
211
211
|
|
|
212
|
-
#### **配置时序图**
|
|
213
|
-
|
|
214
212
|
#### **涉及 REST API 接口一览**
|
|
215
213
|
| 接口分类 | 接口 | 请求示例 |
|
|
216
214
|
| --- | --- | --- |
|
|
@@ -243,8 +241,6 @@ class GiftManager(
|
|
|
243
241
|
|
|
244
242
|
4. **结果同步**:扣费成功,AtomicXCore 广播 `onReceiveGift` 事件;扣费失败,`sendGift` 的 `completion` 收到错误。
|
|
245
243
|
|
|
246
|
-
#### 调用流程图
|
|
247
|
-
|
|
248
244
|
#### 涉及 REST API 接口一览
|
|
249
245
|
|
|
250
246
|
|接口|说明|请求示例|
|
|
@@ -256,8 +256,6 @@ class LiveListActivity : AppCompatActivity() {
|
|
|
256
256
|
|
|
257
257
|
用户可以通过上下滑动来切换直播间,当一个新的直播间滑动到屏幕中央时,视频会自动开始播放预览;当它滑出屏幕时,视频则会自动停止,以节省带宽和设备性能。
|
|
258
258
|
|
|
259
|
-
#### 交互流程图
|
|
260
|
-
|
|
261
259
|
#### 实现方式
|
|
262
260
|
|
|
263
261
|
`LiveCoreView` 支持多实例使用,我们为每一个 `RecyclerView.ViewHolder` 都创建一个独立的 `LiveCoreView` 实例。通过监听 `RecyclerView` 的滚动状态,我们可以精确地控制即将出现和已经离开屏幕的 ViewHolder 中的 `LiveCoreView` 何时开始和停止拉流,从而实现“即滑即播、即走即停”的效果。
|
|
@@ -22,8 +22,6 @@
|
|
|
22
22
|
|
|
23
23
|
## 实现步骤
|
|
24
24
|
|
|
25
|
-
### 步骤1:组件集成
|
|
26
|
-
|
|
27
25
|
### 步骤2:获取 Store 实例
|
|
28
26
|
|
|
29
27
|
`AudioEffectStore` 和 `DeviceStore` 是单例对象,您可以直接通过 `shared` 属性在项目的任何位置获取实例。您也可以参考 TUILiveKit 开源 UI demo 项目中的 [audio_effect_panel_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/component/audio_effect/audio_effect_panel_widget.dart) 文件来了解完整的实现逻辑。
|
|
@@ -192,8 +192,6 @@ extension GiftManagerSend on GiftManager {
|
|
|
192
192
|
|
|
193
193
|
3. **UI 展示**:使用拉取到的 `List<GiftCategory>` 数据填充礼物面板。
|
|
194
194
|
|
|
195
|
-
#### **配置时序图**
|
|
196
|
-
|
|
197
195
|
#### **涉及 REST API 接口一览**
|
|
198
196
|
|
|
199
197
|
|**接口分类**|**接口**|**请求示例**|
|
|
@@ -227,8 +225,6 @@ extension GiftManagerSend on GiftManager {
|
|
|
227
225
|
|
|
228
226
|
4. **结果同步**:扣费成功,AtomicXCore 广播 `onReceiveGift` 事件。扣费失败,`sendGift` 返回错误。
|
|
229
227
|
|
|
230
|
-
#### 调用流程图
|
|
231
|
-
|
|
232
228
|
#### 涉及 REST API 接口一览
|
|
233
229
|
|
|
234
230
|
|**接口**|**说明**|**请求示例**|
|
|
@@ -195,8 +195,6 @@ extension GiftManager {
|
|
|
195
195
|
|
|
196
196
|
3. **UI 展示**:使用拉取到的 `[GiftCategory]` 数据填充礼物面板。
|
|
197
197
|
|
|
198
|
-
#### **配置时序图**
|
|
199
|
-
|
|
200
198
|
#### **涉及 REST API 接口一览**
|
|
201
199
|
| 接口分类 | 接口 | 请求示例 |
|
|
202
200
|
| --- | --- | --- |
|
|
@@ -229,8 +227,6 @@ extension GiftManager {
|
|
|
229
227
|
|
|
230
228
|
4. **结果同步**:扣费成功,AtomicXCore 广播 `.onReceiveGift` 事件。扣费失败,`sendGift` 的 `completion` 收到错误。
|
|
231
229
|
|
|
232
|
-
#### 调用流程图
|
|
233
|
-
|
|
234
230
|
#### 涉及 REST API 接口一览
|
|
235
231
|
|
|
236
232
|
|接口|说明|请求示例|
|
|
@@ -223,8 +223,6 @@ class LiveListViewController: UIViewController, UICollectionViewDataSource, UICo
|
|
|
223
223
|
|
|
224
224
|
用户可以通过上下滑动来切换直播间,当一个新的直播间滑动到屏幕中央时,视频会自动开始播放预览;当它滑出屏幕时,视频则会自动停止,以节省带宽和设备性能。
|
|
225
225
|
|
|
226
|
-
#### 交互流程图
|
|
227
|
-
|
|
228
226
|
#### 实现方式
|
|
229
227
|
|
|
230
228
|
`LiveCoreView` 支持多实例使用,我们为每一个 `UICollectionViewCell` 都创建一个独立的 `LiveCoreView` 实例。通过监听 `UICollectionView` 的滚动代理方法,我们可以精确地控制即将出现和已经离开屏幕的 Cell 中的 `LiveCoreView` 何时开始和停止拉流,从而实现“即滑即播、即走即停”的效果。
|
|
@@ -168,8 +168,6 @@ const handleSendGift = (giftID: string) => {
|
|
|
168
168
|
|
|
169
169
|
3. **UI 展示**:使用拉取到的 `[GiftCategory]` 数据填充礼物面板。
|
|
170
170
|
|
|
171
|
-
#### **配置时序图**
|
|
172
|
-
|
|
173
171
|
#### **涉及 REST API 接口一览**
|
|
174
172
|
| 接口分类 | 接口 | 请求示例 |
|
|
175
173
|
| --- | --- | --- |
|
|
@@ -202,8 +200,6 @@ const handleSendGift = (giftID: string) => {
|
|
|
202
200
|
|
|
203
201
|
4. **结果同步**:扣费成功,AtomicXCore 广播 `'onReceiveGift'` 事件。扣费失败,`sendGift` 的 `fail` 收到错误。
|
|
204
202
|
|
|
205
|
-
#### 调用流程图
|
|
206
|
-
|
|
207
203
|
#### 涉及 REST API 接口一览
|
|
208
204
|
|
|
209
205
|
|接口|说明|请求示例|
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
## 实现步骤
|
|
8
8
|
|
|
9
|
-
### 步骤1:组件集成
|
|
10
|
-
|
|
11
9
|
### 步骤2:实现跨房连线
|
|
12
10
|
|
|
13
11
|
此步骤的目标是让两个主播的画面出现在同一个视图中,我们将使用 [CoHostStore](https://tencent-rtc.github.io/TUIKit_Android/-atomic-x%20-core%20-a-p-i/io.trtc.tuikit.atomicxcore.api.live/-co-host-store/index.html) 来完成。
|
|
@@ -240,8 +238,6 @@
|
|
|
240
238
|
|
|
241
239
|
### 实现视频流画面的昵称显示
|
|
242
240
|
|
|
243
|
-
#### 实现效果
|
|
244
|
-
|
|
245
241
|
#### 实现方式
|
|
246
242
|
- **步骤1**:创建前景视图 (**CustomSeatView**),该视图用于在视频流上方显示用户信息。
|
|
247
243
|
|
|
@@ -365,8 +361,6 @@
|
|
|
365
361
|
|
|
366
362
|
当主播开始 PK 后,可以在对方主播的视频画面上挂载自定义视图,通常用于展示该主播收到的礼物价值或其它 PK 相关信息。
|
|
367
363
|
|
|
368
|
-
#### **实现效果**
|
|
369
|
-
|
|
370
364
|
#### 实现方式
|
|
371
365
|
- **步骤1**:创建自定义 PK 用户视图,您可以参考 TUILiveKit 开源项目中的 [BattleMemberInfoView.kt](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/live/tuilivekit/src/main/java/com/trtc/uikit/livekit/features/anchorview/view/battle/widgets/BattleMemberInfoView.kt) 文件来了解完整的实现逻辑。
|
|
372
366
|
|
|
@@ -469,8 +463,6 @@
|
|
|
469
463
|
|
|
470
464
|
### 实现视频流画面上的 PK 状态显示
|
|
471
465
|
|
|
472
|
-
#### **实现效果**
|
|
473
|
-
|
|
474
466
|
#### **实现方式**
|
|
475
467
|
- **步骤1:**创建自定义 PK 全局视图 **CustomBattleContainerView**,您可以参考 TUILiveKit 开源项目中的 [BattleInfoView.kt](https://github.com/Tencent-RTC/TUIKit_Android/blob/main/live/tuilivekit/src/main/java/com/trtc/uikit/livekit/features/anchorview/view/battle/widgets/BattleInfoView.kt) 文件来实现,即可实现同样的效果。
|
|
476
468
|
|
|
@@ -503,8 +495,6 @@
|
|
|
503
495
|
|高级礼物|礼物价值 × 12|100元礼物 → 1200分|
|
|
504
496
|
|特效礼物|固定高分数|520元礼物 → 1314分|
|
|
505
497
|
|
|
506
|
-
#### REST API 调用流程
|
|
507
|
-
|
|
508
498
|
#### 关键流程说明
|
|
509
499
|
1. **获取 PK 状态**:
|
|
510
500
|
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
## 实现步骤
|
|
8
8
|
|
|
9
|
-
### 步骤1:组件集成
|
|
10
|
-
|
|
11
9
|
### 步骤2:实现跨房连线
|
|
12
10
|
|
|
13
11
|
此步骤的目标是让两个主播的画面出现在同一个视图中,我们将使用 [CoHostStore](https://tencent-rtc.github.io/TUIKit_Flutter/api_live_co_host_store/api_live_co_host_store-library.html) 来完成。
|
|
@@ -297,8 +295,6 @@
|
|
|
297
295
|
|
|
298
296
|
### 实现视频流画面的昵称显示
|
|
299
297
|
|
|
300
|
-
#### 实现效果
|
|
301
|
-
|
|
302
298
|
#### 实现方式
|
|
303
299
|
- **步骤1**:创建前景视图 (**CustomCoHostForegroundView**),该视图用于在视频流上方显示用户信息。
|
|
304
300
|
|
|
@@ -487,8 +483,6 @@
|
|
|
487
483
|
|
|
488
484
|
当主播开始 PK 后,可以在对方主播的视频画面上挂载自定义视图,通常用于展示该主播收到的礼物价值或其它 PK 相关信息。
|
|
489
485
|
|
|
490
|
-
#### **实现效果**
|
|
491
|
-
|
|
492
486
|
#### 实现方式
|
|
493
487
|
- **步骤1**:创建自定义 PK 用户视图,您可以参考 TUILiveKit 开源项目中的 [battle_member_info_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/decorations/battle/battle_member_info_widget.dart) 文件来了解完整的实现逻辑。
|
|
494
488
|
|
|
@@ -647,8 +641,6 @@
|
|
|
647
641
|
|
|
648
642
|
### 实现视频流画面上的 PK 状态显示
|
|
649
643
|
|
|
650
|
-
#### **实现效果**
|
|
651
|
-
|
|
652
644
|
#### **实现方式**
|
|
653
645
|
- **步骤1:**创建自定义 PK 全局视图 **CustomBattleContainerView**,您可以参考 TUILiveKit 开源项目中的 [battle_info_widget.dart](https://github.com/Tencent-RTC/TUIKit_Flutter/blob/main/live/livekit/lib/live_stream/features/decorations/battle/battle_info_widget.dart) 文件来实现,即可实现同样的效果。
|
|
654
646
|
|
|
@@ -804,8 +796,6 @@ class _FullCustomLiveWidgetState extends State<FullCustomLiveWidget> {
|
|
|
804
796
|
|高级礼物|礼物价值 × 12|100元礼物 → 1200分|
|
|
805
797
|
|特效礼物|固定高分数|520元礼物 → 1314分|
|
|
806
798
|
|
|
807
|
-
#### REST API 调用流程
|
|
808
|
-
|
|
809
799
|
#### 关键流程说明
|
|
810
800
|
1. **获取 PK 状态**:
|
|
811
801
|
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
## 实现步骤
|
|
8
8
|
|
|
9
|
-
### 步骤1:组件集成
|
|
10
|
-
|
|
11
9
|
### 步骤2:实现跨房连线
|
|
12
10
|
|
|
13
11
|
此步骤的目标是让两个主播的画面出现在同一个视图中,我们将使用 [CoHostStore](https://tencent-rtc.github.io/TUIKit_iOS/documentation/atomicxcore/cohoststore) 来完成。
|
|
@@ -199,8 +197,6 @@
|
|
|
199
197
|
|
|
200
198
|
### 实现视频流画面的昵称显示
|
|
201
199
|
|
|
202
|
-
#### 实现效果
|
|
203
|
-
|
|
204
200
|
#### 实现方式
|
|
205
201
|
- **步骤1**:创建前景视图 (**CustomSeatView**),该视图用于在视频流上方显示用户信息。
|
|
206
202
|
|
|
@@ -303,8 +299,6 @@
|
|
|
303
299
|
|
|
304
300
|
当主播开始 PK 后,可以在对方主播的视频画面上挂载自定义视图,通常用于展示该主播收到的礼物价值或其它 PK 相关信息。
|
|
305
301
|
|
|
306
|
-
#### **实现效果**
|
|
307
|
-
|
|
308
302
|
#### 实现方式
|
|
309
303
|
- **步骤1**:创建自定义 PK 用户视图,您可以参考 TUILiveKit 开源项目中的 [AnchorBattleMemberInfoView.swift](https://github.com/Tencent-RTC/TUIKit_iOS/blob/main/live/Sources/Features/AnchorView/View/HostBattle/AnchorBattleMemberInfoView.swift) 文件来了解完整的实现逻辑。
|
|
310
304
|
|
|
@@ -402,8 +396,6 @@
|
|
|
402
396
|
|
|
403
397
|
### 实现视频流画面上的 PK 状态显示
|
|
404
398
|
|
|
405
|
-
#### **实现效果**
|
|
406
|
-
|
|
407
399
|
#### **实现方式**
|
|
408
400
|
- **步骤1:**创建自定义 PK 全局视图 **CustomBattleContainerView**,您可以参考 TUILiveKit 开源项目中的 [AnchorBattleInfoView.swift](https://github.com/Tencent-RTC/TUIKit_iOS/blob/main/live/Sources/Features/AnchorView/View/HostBattle/AnchorBattleInfoView.swift) 文件来实现,即可实现同样的效果。
|
|
409
401
|
|
|
@@ -436,8 +428,6 @@
|
|
|
436
428
|
|高级礼物|礼物价值 × 12|100元礼物 → 1200分|
|
|
437
429
|
|特效礼物|固定高分数|520元礼物 → 1314分|
|
|
438
430
|
|
|
439
|
-
#### REST API 调用流程
|
|
440
|
-
|
|
441
431
|
#### 关键流程说明
|
|
442
432
|
1. **获取 PK 状态**:
|
|
443
433
|
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
## 实现步骤
|
|
8
8
|
|
|
9
|
-
### 步骤1:组件集成
|
|
10
|
-
|
|
11
9
|
### 步骤2:实现跨房连线
|
|
12
10
|
|
|
13
11
|
此步骤的目标是让两个主播的画面出现在同一个视图中,我们将使用 [CoHostState](https://liteav.sdk.qcloud.com/doc/product/tuikit/atomic-x/uni-app/zh/v1.0/api/index.html#module-CoHostState) 来完成。
|
|
@@ -126,8 +124,6 @@
|
|
|
126
124
|
|
|
127
125
|
### 实现视频流画面的昵称显示
|
|
128
126
|
|
|
129
|
-
#### 实现效果
|
|
130
|
-
|
|
131
127
|
#### 实现方式
|
|
132
128
|
- 创建自定义 UI 覆盖层组件 (`ParticipantOverlay.vue`)
|
|
133
129
|
|