Harmony

本文档将介绍如何快速跑通 ARTC 示例项目,体验实时音视频功能。

示例源码下载

阿里云提供了开源示例项目,用于演示 ARTC SDK 的 API 使用方法,帮助开发者更直观地理解和集成 SDK 的各项功能,Harmony示例项目仓库

前提条件

在运行示例项目之前,请确保开发环境满足以下要求:

  • 开发工具:DevEco Studio 5.0.3.900 Release 或以上版本;获取配套 API Version 12的 HarmonyOS NEXT SDK 或以上版本。

  • 测试设备:获取配套 API Version 12的 HarmonyOS NEXT 5.0.0.102 操作系统或以上版本,支持音视频的鸿蒙设备,且已开启“允许调试”选项。

  • 网络环境:需要稳定的网络连接。

  • 应用准备:获取实时音视频应用的AppIDAppKey,详情请参见创建应用

操作步骤

步骤一:获取示例项目

克隆 ARTC 示例项目到本地:

git clone https://github.com/MediaBox-Demos/amdemos-artc.git

注意:该仓库包含 ARTC SDK 的多个 Native 平台的示例项目,其中 Harmony 平台示例项目位于Harmony/ARTCExample目录下。

示例项目中包含了在客户端生成 Token 的相关代码以帮助您进行测试。

下面将介绍Harmony/ARTCExample项目的文件结构。

├── Harmony                           // 鸿蒙平台工程根目录
│   ├── ARTCExample                   // Harmony API Example 工程
│   │   ├── entry                     // Demo 入口工程(ArkTS)
│   │   │   ├── src/main/ets
│   │   │   │   ├── common            // 通用组件 & 工具
│   │   │   │   │   ├── components    // 通用 UI 组件(标题栏等)
│   │   │   │   │   ├── keycenter     // KeyCenter,封装 AppId/AppKey/Token 生成
│   │   │   │   │   │   ├── ARTCTokenHelper.ets    // Token 工具类(配置 AppId/AppKey)
│   │   │   │   │   │   └── GlobalConfig.ets        // 全局配置单例
│   │   │   │   │   ├── utils         // 权限、沙箱文件管理等
│   │   │   │   │   └── ConstantsData.ets / Constants.ets  // 常量定义
│   │   │   │   ├── entryability      // 程序入口 Ability
│   │   │   │   ├── manager           // 页面栈管理、导航管理
│   │   │   │   │   └── PageStackCenter.ets         // 导航栈中心
│   │   │   │   ├── model             // 首页模块配置
│   │   │   │   │   ├── ModuleInfo.ets              // 模块信息数据模型
│   │   │   │   │   ├── ModuleManager.ets           // 模块管理器(单例)
│   │   │   │   │   └── ModuleRegistry.ets          // 模块注册中心(在此控制首页显示哪些功能)
│   │   │   │   └── pages             // 业务页面
│   │   │   │       ├── Index.ets                    // 首页(模块入口聚合)
│   │   │   │       ├── SettingsDialog.ets          // 设置弹窗(配置 AppId/AppKey/UserId)
│   │   │   │       ├── quickstart/                 // 快速开始示例
│   │   │   │       │   ├── TokenGenerate.ets       // Token 生成及入会
│   │   │   │       │   ├── VideoCall.ets           // 视频通话
│   │   │   │       │   └── VoiceChat.ets           // 语聊房
│   │   │   │       ├── basicusage/                 // 基础功能示例
│   │   │   │       │   ├── VideoBasicUsage.ets     // 视频基础用法
│   │   │   │       │   ├── AudioBasicUsage.ets     // 音频基础用法
│   │   │   │       │   ├── CameraPage.ets          // 摄像头控制
│   │   │   │       │   ├── ScreenSharePage.ets     // 屏幕共享
│   │   │   │       │   ├── SEIPage.ets             // SEI 信令
│   │   │   │       │   ├── DataChannelMessagePage.ets  // 数据通道消息
│   │   │   │       │   ├── PlayAudioFilesPage.ets  // 播放音频文件
│   │   │   │       │   ├── StreamMonitoringPage.ets // 远端流监控
│   │   │   │       │   └── VoiceChangePage.ets     // 变声/音效
│   │   │   │       └── advancedusage/              // 进阶功能示例
│   │   │   │           ├── RecordingPage.ets       // 本地录制
│   │   │   │           ├── PictureInPicturePage.ets // 画中画
│   │   │   │           ├── PreJoinChannelTestPage.ets // 入会前测试
│   │   │   │           ├── CustomAudioCapturePage.ets // 自定义音频采集
│   │   │   │           ├── CustomAudioRenderPage.ets  // 自定义音频播放
│   │   │   │           ├── CustomVideoCapturePage.ets // 自定义视频采集
│   │   │   │           ├── CustomVideoRenderPage.ets  // 自定义视频渲染
│   │   │   │           ├── ProcessAudioRawDataPage.ets // 获取原始音频数据
│   │   │   │           ├── ProcessVideoRawDataPage.ets // 获取原始视频数据
│   │   │   │           ├── HEVCPage.ets             // H.265 编解码
│   │   │   │           ├── PublishLiveStreamPage.ets // 推流旁路直播
│   │   │   │           ├── LiveLinkMicPage.ets      // 连麦直播
│   │   │   │           ├── OriginAudioDataWrap.ets  // 原始音频数据 NAPI 示例
│   │   │   │           ├── OriginVideoDataWrap.ets  // 原始视频数据 NAPI 示例
│   │   │   │           └── pipManager/              // 画中画管理器
│   │   │   ├── src/main/cpp          // 原生 C++ 模块(NAPI)
│   │   │   │   ├── CMakeLists.txt                   // NAPI 构建配置
│   │   │   │   ├── napi_init.cpp                    // NAPI 导出入口
│   │   │   │   ├── origin_audio_data.cpp/.h         // 原始音频数据 NAPI 接口实现
│   │   │   │   ├── origin_video_data.cpp/.h         // 原始视频数据 NAPI 接口实现
│   │   │   │   └── types/                           // NAPI 使用的结构体定义
│   │   │   ├── src/main/resources    // 资源文件(图片、字符串等)
│   │   │   └── module.json5          // Entry 模块配置
│   │   ├── key                        // 签名证书
│   │   ├── hvigor/                    // 构建配置
│   │   ├── oh-package.json5           // 工程依赖声明
│   │   └── ...

步骤二:配置示例项目

    • 使用 DevEco Studio 打开Harmony/ARTCExample文件夹。

    • 配置项目的AppIDAppKey:打开Harmony/ARTCExample/entry/src/main/ets/common/keycenter/ARTCTokenHelper.ets文件将从控制台获取的AppIDAppKey填入。

    // Index.ets
    // 实时音视频AppID
    @Local appId: string = "<实时音视频AppID>";
    // 实时音视频AppKey
    @Local appKey: string = "<实时音视频AppKey>";

步骤三:编译并运行示例项目

  • 连接鸿蒙开发设备,在 DevEco Studio 中选中您的开发设备,选择 entry 模块。

image.png

  • 为项目设置自动签名。

    依次点击File -> Project Structure -> Signing Configs,在串口中点击 Automatically generate signature。等待自动签名结束后,点击 OK 即可。

    如果之前没有登录,请点击界面提示的Sign In使用您的华为账号登录。

    image.png

  • 在 DevEco Studio 中,点击 Run 进行编译运行,编译成功后即可在您的设备中安装ARTCExample应用。