更新记录

0.1.0(2026-07-02) 下载此版本

初步提交


平台兼容性

my-txlive

my-txlive 是一个为 uni-app CLI + Vue 3 项目准备的 UTS 原生插件骨架,用于桥接腾讯云直播 SDK,目标覆盖 AndroidiOSHarmonyOS

当前交付重点:

  • 统一的 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
  • setLicence
  • createPusher
  • startPush / stopPush
  • startCamera / stopCamera
  • startMicrophone / stopMicrophone
  • startScreenCapture / stopScreenCapture
  • createPlayer / startPlay / stopPlay
  • TXBeautyManager 基础美颜
  • 事件回传到 Vue 层
  • 动态权限申请
  • 主线程操作入口 runOnMainThread

需要你按真实 SDK 版本二次确认的点:

  • setObserver / 回调对象的具体方法签名
  • 预览视图绑定方式
  • 播放渲染 View 绑定方式
  • 录屏授权回调的精确 API 名称
  • getMainWindowSync / getUIContext / runScopedTask 在当前 HBuilderX 版本下的可用性

本地 SDK 对应关系

当前插件目录内的本地 SDK 产物如下:

接入时只使用这些二进制文件,不需要把腾讯云 demo 工程一并搬进项目。

manifest 侧建议

你当前项目已有:

  • Android CAMERA
  • Android RECORD_AUDIO
  • iOS 相机 / 相册权限文案
  • Harmony bundleName

但如果要完整落地直播能力,建议补充:

  • Android 前台服务 / 网络 / 投屏相关权限
  • iOS NSMicrophoneUsageDescription
  • iOS 若使用录屏推流,需要接 ReplayKit 扩展
  • Harmony 权限说明与 SDK 原生依赖版本锁定

结合腾讯云文档:

  • Android 手动集成重点是本地 aarabiFilterspackagingOptions { pickFirst '**/libc++_shared.so' }、运行时权限和录屏前台服务。
  • iOS 手动集成重点是 Build Phases -> Link Binary With Libraries-ObjCInfo.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 仍需要继续补真实桥接。

如果你要继续往下做,下一步最合适的是:

  1. native-sdk 里的本地包继续补 Android / iOS 的真实桥接代码
  2. 把 Harmony 侧 .har 依赖声明接进插件打包链路
  3. src/live 页面里接入推流页和播放页
  4. 再联调 License、推流地址、播放地址、连麦和美颜参数

隐私、权限声明

1. 本插件需要申请的系统权限列表:

视频 摄像头

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。