更新记录
0.1.0(2026-07-02) 下载此版本
初步提交
平台兼容性
my-txlive
my-txlive 是一个为 uni-app CLI + Vue 3 项目准备的 UTS 原生插件骨架,用于桥接腾讯云直播 SDK,目标覆盖 Android、iOS 和 HarmonyOS。
当前交付重点:
- 统一的 JS/TS 调用接口
- HarmonyOS 端
liteavsdk桥接模板 - Android / iOS 端 UTS 占位桥接模板
- License、权限、事件回调、推流 / 拉流 API 设计
目录结构
uni_modules/
my-txlive/
package.json
config.json
index.d.ts
index.uts
README.md
native-sdk/
sdk-lock.json
android/
LiteAVSDK_Live_13.4.0.20472.aar
LiteAVSDK_ScreenCapture_13.4.0.20472.aar
ios/
TXLiteAVSDK_Live.xcframework
TXLiteAVSDK_ReplayKitExt.xcframework
TXFFmpeg.xcframework
TXSoundTouch.xcframework
harmony/
LiteAVSDK_Professional_13.2.0.8729.har
utssdk/
index.uts
app-android/
index.uts
app-ios/
index.uts
app-harmony/
index.ets
module.json5
resources/base/element/string.json
已提供的统一 API
import txLive, {
setLicence,
createPusher,
startPush,
stopPush,
startCamera,
stopCamera,
startMicrophone,
stopMicrophone,
startScreenCapture,
stopScreenCapture,
createPlayer,
startPlay,
stopPlay,
setBeautyLevel,
setWhitenessLevel,
on,
off
} from '@uni_modules/my-txlive'
核心接口:
setLicence({ url, key })createPusher({ mode: 'RTMP' | 'RTC' })startPush(url)stopPush()startCamera()stopCamera()startMicrophone()stopMicrophone()startScreenCapture()stopScreenCapture()setBeautyLevel(level)setWhitenessLevel(level)setRuddyLevel(level)applyBeauty({ beautyLevel, whitenessLevel, ruddyLevel })createPlayer({ protocol })startPlay(url)stopPlay()on(eventName, listener)off(eventName?, listener?)
接入步骤
0. 给 CLI 项目补一个 uni_modules 别名
你这个项目的 @ 已经指向 src,而插件目录在项目根目录 uni_modules 下,所以我已经在 vite.config.js 里补了:
'@uni_modules': path.resolve(__dirname, 'uni_modules')
后续示例统一使用:
import txLive from '@uni_modules/my-txlive'
1. 安装腾讯云直播 SDK
当前项目已经把你本地下载的三端 SDK 产物复制到了插件目录 native-sdk 下,不再依赖外部目录 d:\work\txySdk:
- Android:
Live 13.4.0.20472 - iOS:
Live 13.4.0.21062 - HarmonyOS:
Professional 13.2.0.8729
版本锁定文件见 sdk-lock.json。
说明:
- Android 与 iOS 已经统一成直播 SDK。
- Harmony 当前本地只有
Professional HAR,但它包含直播能力,可先作为鸿蒙桥接基线。 - 如果你后续拿到鸿蒙
Live HAR,再把native-sdk/harmony替换掉即可。
腾讯云文档参考:
2. 配置应用包名 / BundleName
License 校验强依赖应用标识一致:
- Android
packageName - HarmonyOS
bundleName - iOS
Bundle Identifier
你当前项目里的 Harmony 包名在 manifest.json 是:
"bundleName": "com.fnysw.xfzx"
腾讯云直播 License 后台里必须使用与实际安装包一致的标识,否则推流 / 拉流时可能返回 V2TXLIVE_ERROR_INVALID_LICENSE (-5)。
3. 在 main.js 初始化 License
你的项目入口是 main.js。
建议在应用启动后尽早调用:
import { createSSRApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import './app.css'
import 'virtual:uno.css'
import txLive from '@uni_modules/my-txlive'
export function createApp () {
const app = createSSRApp(App)
const pinia = createPinia()
// #ifdef APP-PLUS || APP-HARMONY
txLive.setLicence({
url: 'https://license.vod2.myqcloud.com/license/v2/xxx/license.lic',
key: 'your-live-license-key'
})
// #endif
app.use(pinia)
return { app, pinia }
}
4. 直播推流页示例
<script setup>
import { onMounted, onUnmounted } from 'vue'
import txLive from '@uni_modules/my-txlive'
const pushUrl = 'rtmp://your-domain/live/streamName?txSecret=xxx'
const onTxEvent = (event) => {
console.log('[txlive event]', event)
}
onMounted(async () => {
// #ifdef APP-PLUS || APP-HARMONY
txLive.on('error', onTxEvent)
txLive.on('warning', onTxEvent)
txLive.on('push-started', onTxEvent)
await txLive.createPusher({
mode: 'RTMP',
enableAutoStartCamera: false,
enableAutoStartMicrophone: false
})
await txLive.setBeautyLevel(3)
await txLive.setWhitenessLevel(2)
await txLive.startPush(pushUrl)
// #endif
})
onUnmounted(async () => {
// #ifdef APP-PLUS || APP-HARMONY
await txLive.stopPush()
await txLive.destroyPusher()
txLive.off('error', onTxEvent)
txLive.off('warning', onTxEvent)
txLive.off('push-started', onTxEvent)
// #endif
})
</script>
5. 直播播放页示例
<script setup>
import { onMounted, onUnmounted } from 'vue'
import txLive from '@uni_modules/my-txlive'
const playUrl = 'https://your-domain/live/streamName.flv'
onMounted(async () => {
// #ifdef APP-PLUS || APP-HARMONY
await txLive.createPlayer({
protocol: 'FLV',
autoPlay: true
})
await txLive.startPlay(playUrl)
// #endif
})
onUnmounted(async () => {
// #ifdef APP-PLUS || APP-HARMONY
await txLive.stopPlay()
await txLive.destroyPlayer()
// #endif
})
</script>
HarmonyOS 端实现说明
核心文件是 index.ets。
已包含这些关键点:
- 引入
liteavsdk setLicencecreatePusherstartPush / stopPushstartCamera / stopCamerastartMicrophone / stopMicrophonestartScreenCapture / stopScreenCapturecreatePlayer / startPlay / stopPlayTXBeautyManager基础美颜- 事件回传到 Vue 层
- 动态权限申请
- 主线程操作入口
runOnMainThread
需要你按真实 SDK 版本二次确认的点:
setObserver/ 回调对象的具体方法签名- 预览视图绑定方式
- 播放渲染 View 绑定方式
- 录屏授权回调的精确 API 名称
getMainWindowSync / getUIContext / runScopedTask在当前 HBuilderX 版本下的可用性
本地 SDK 对应关系
当前插件目录内的本地 SDK 产物如下:
- Android:
- iOS:
- Harmony:
接入时只使用这些二进制文件,不需要把腾讯云 demo 工程一并搬进项目。
manifest 侧建议
你当前项目已有:
- Android
CAMERA - Android
RECORD_AUDIO - iOS 相机 / 相册权限文案
- Harmony
bundleName
但如果要完整落地直播能力,建议补充:
- Android 前台服务 / 网络 / 投屏相关权限
- iOS
NSMicrophoneUsageDescription - iOS 若使用录屏推流,需要接 ReplayKit 扩展
- Harmony 权限说明与 SDK 原生依赖版本锁定
结合腾讯云文档:
- Android 手动集成重点是本地
aar、abiFilters、packagingOptions { pickFirst '**/libc++_shared.so' }、运行时权限和录屏前台服务。 - iOS 手动集成重点是
Build Phases -> Link Binary With Libraries、-ObjC、Info.plist中相机和麦克风权限,以及 ReplayKit 扩展。 - Harmony 手动集成重点是将
.har放到本地工程并在oh-package.json5中声明依赖,同时补齐KEEP_BACKGROUND_RUNNING / INTERNET / GET_NETWORK_INFO / MICROPHONE / CAMERA权限。
RTC 模式注意事项
如果推流地址使用 trtc://:
- 必须由服务端生成
UserSig - 严禁把
SDKSecretKey写在客户端 - 建议服务端下发短时有效的推流鉴权信息
当前状态
这个插件已经把“统一 API 设计 + UTS 插件结构 + HarmonyOS 关键桥接模板 + 本地 SDK 归档”搭好了,但 Android / iOS / HarmonyOS 三端的原生 SDK 仍需要继续补真实桥接。
如果你要继续往下做,下一步最合适的是:
- 按
native-sdk里的本地包继续补 Android / iOS 的真实桥接代码 - 把 Harmony 侧
.har依赖声明接进插件打包链路 - 在
src/live页面里接入推流页和播放页 - 再联调 License、推流地址、播放地址、连麦和美颜参数

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 2
赞赏 0
下载 12377625
赞赏 1927
赞赏
京公网安备:11010802035340号