运行示例项目
本文带你跑通“设备端推流 + 客户端连接播放”的端到端体验链路。
你会依次完成:
- 启动设备端示例,让设备端接入 TiRTC
- 用 DevTools CLI 启动一个 token 签发 HTTP 服务
- 在客户端填写配置,连接设备,播放设备端发送的音视频
前置准备
| 准备项 | 用在哪里 | 需要准备 |
|---|---|---|
| 应用级凭证 | 启动 token 签发服务 | AccessKeyId、SecretKeyId、AppId |
| 设备身份 | 启动设备端示例、签发连接 token | device_id、device_secret_key |
| 基础工具 | 拉取示例、安装 DevTools CLI | Git、Node.js / npm |
| 设备端运行环境 | 启动 C 设备端示例 | 一台 macOS arm64 电脑,并已安装 Xcode Command Line Tools / make;或一台 Linux x86_64 电脑,并满足 glibc 2.35 或更高版本、已安装 GCC / Make 工具链 |
| 客户端运行环境 | 启动客户端示例 | 直接安装预编译 APK 时,Android 手机能安装应用即可;从 Flutter 源码运行 Android 客户端时,需要 Flutter、Android SDK、ADB,并能通过 flutter devices 识别手机;从 HarmonyOS 源码运行时,需要 DevEco Studio / OpenHarmony SDK 和可调试的 HarmonyOS 设备 |
1. 启动设备端示例
设备端示例支持在 macOS arm64 和 Linux x86_64 上直接运行。
先拉取示例源码:
mkdir -p tirtc-demo
cd tirtc-demo
git clone https://github.com/tangeai/tirtc-example-device.git
cd tirtc-example-device准备设备身份。后面启动 token 签发服务时也要使用同一组设备信息:
export TIRTC_DEVICE_ID="your_device_id"
export TIRTC_DEVICE_SECRET_KEY="your_device_secret_key"编译并启动设备端示例:
./script/build.sh
./script/run_demo.sh \
--device-id "$TIRTC_DEVICE_ID" \
--device-secret-key "$TIRTC_DEVICE_SECRET_KEY"./script/build.sh 会按当前宿主平台选择 macos-arm64 或 linux-x86_64,不做交叉编译。如果当前机器不是这两个平台,脚本会提示 unsupported host。
看到下面日志后,保持这个终端打开,等待客户端连接:
[demo] TiRTC started, waiting for client connections客户端连接成功后,示例会循环发送仓库内预置的音视频文件。音频使用 stream_id = 10,视频使用 stream_id = 11。
2. 启动 token 签发 HTTP 服务
安装 DevTools CLI:
npm install -g tirtc-devtools-cli@latest
tirtc-devtools-cli --help打开一个新的终端,填入和第 1 步设备端相同的设备信息:
export TIRTC_ACCESS_KEY_ID="your_access_key_id"
export TIRTC_SECRET_KEY_ID="your_secret_key_id"
export TIRTC_APP_ID="your_app_id"
export TIRTC_DEVICE_ID="your_device_id"
export TIRTC_DEVICE_SECRET_KEY="your_device_secret_key"启动 HTTP 服务:
tirtc-devtools-cli token servetoken serve 默认监听 8966 端口。如果已经被占用,可以指定另一个端口:
tirtc-devtools-cli token serve \
--port 8967手机和电脑在同一 Wi-Fi / 局域网下时,后面客户端要填写的 Token 签发服务地址通常是 http://your_computer_lan_ip:8966。如果你指定了其他端口,服务地址也要使用同一个端口。
启动成功后,CLI 会输出:
- 开发用 token 服务监听地址
- Token 签发服务地址,例如
http://192.168.1.10:8966 - HTTP 请求 body 和 cURL 示例
保持这个终端打开。示例客户端进入播放页前,会向这个服务请求一次连接 token。本页连接第 1 步启动的设备端示例时,请求 token 和客户端填写的 remote_id 都使用同一个 TIRTC_DEVICE_ID。
3. 启动客户端并播放
选择一种方式启动客户端。最快路径是安装 Android 预编译 APK;
方式 A:安装预编译 APK
在 Android 手机上安装并打开:
方式 B:从源码运行
Flutter Android 客户端:
cd tirtc-demo
git clone https://github.com/tangeai/tirtc-example-flutter.git
cd tirtc-example-flutter
flutter pub get
flutter devices
flutter run -d your_android_device_id不论哪种方式,待客户端运行起来之后:
AppId填第 2 步的TIRTC_APP_ID。remote_id填第 1 步设备端使用的device_id。- “Token 签发服务地址”填第 2 步服务地址,例如
http://your_computer_lan_ip:8966。 audio_stream_id和video_stream_id留空,保持默认值10/11。- 点击「进入播放页」。
看到视频画面即表示 Demo 跑通。设备端终端会出现类似日志:
[demo] client connection accepted
[demo] first video frame sent
[demo] first audio packet sent常见问题
连接失败
优先检查:
- 手机和运行
token serve的电脑是否在同一个网络里。 - “Token 签发服务地址”是否使用了手机能访问的局域网地址,而不是
127.0.0.1。 token serve终端是否仍在运行。TIRTC_DEVICE_ID是否等于第 1 步启动设备端时使用的device_id。
客户端连接后没有声音或画面
优先检查:
- 客户端音频是否使用
stream_id = 10,视频是否使用stream_id = 11。 - 设备端示例终端是否仍在运行。
- 客户端页面是否已经显示视频视图,并且没有被遮挡或隐藏。
仍然失败时,保留设备端终端输出、token serve 终端输出和客户端日志。对外发送前,先删除或打码连接 token、SecretKeyId、device_secret_key 等敏感信息。
