快速开始 Demo 是 RTC 提供的包含基本功能的开源示例工程文件。获取该工程文件后,你可以快速构建应用,感受 RTC 的通话效果;也能通过阅读代码,了解基本音视频通话的最佳实践。

应用使用说明

使用该项目构建应用后,你可以使用该应用进行音视频采集,并传输到远端。

前置条件

说明

如果未安装 OpenGL 和 PulseAudio,参考以下方式安装:

sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev
sudo apt install pulseaudio libpulse-dev libva-dev
plain
编译项目,构建应用
项目目录

项目目录如下:

.
rtc-cli
├── cmake
│   └── modules
│       └── FindByteRTCSDK.cmake
├── CMakeLists.txt
├── README.md
├── src
│   ├── decode_mp4_to_yuv.cc
│   ├── decode_mp4_to_yuv.h
│   ├── event_handler.h
│   ├── input.mp4
│   ├── main.cc
│   ├── single_frequency_48k_16_signal.pcm
│   ├── thread_loop.h
│   └── util
│       ├── argparser.cc
│       ├── argparser.h
│       ├── util.cc
│       └── util.h
└── third_party
    └── VolcEngineRTC_Linux_3.45.104_x86_64
plain

其中,./rtc-cli/third_party/VolcEngineRTC_Linux_3.45.104_x86_64 即 SDK 目录。

编译构建

在编译构建应用前,你必须确认应用的视频采集方式。不同的采集方式需要使用不同的编译方式:

内置音视频采集机制
# 切换路径到此项目的根目录。
# 使用你的系统中的路径代替 RTC_CLI_ROOT。

cd RTC_CLI_ROOT

# 选择 RTC SDK 内部视频采集机制。
# 使用 RTC SDK 在项目中的绝对路径代替 PATH_TO_RTC_SDK。形如 /home/xiaoming/rtc-cli/third_party/VolcEngineRTC_Linux_2207.1212.1421.031_x86_64_Release。

cmake -Bbuild -DBYTERTC_SDK_DIR=PATH_TO_RTC_SDK

# 编译生成应用。

cmake --build build --target rtccli --parallel 32
bash
自定义音视频采集机制

选择自行采集音视频,并通过 RTC 进行编码传输时,使用以下方式进行编译:

  1. 在项目中添加 FFmpeg 项目。

  2. 编译生成应用:

# 切换路径到此项目的根目录。
# 使用你的系统中的路径代替 RTC_CLI_ROOT。

cd RTC_CLI_ROOT

# 选择自定义视频采集机制。
# 使用 FFmpeg 在项目中的绝对路径代替 PATH_TO_FFMPEG。形如:/home/xiaoming/rtc-cli/third_party/ffmpeg/x86。
# 使用 RTC SDK 在项目中的绝对路径代替 PATH_TO_RTC_SDK。形如 /home/xiaoming/rtc-cli/third_party/VolcEngineRTC_Linux_2207.1212.1421.031_x86_64_Release。

cmake -Bbuild -DFFMPEG_DEV_ROOT=PATH_TO_FFMPEG -DBYTERTC_SDK_DIR=PATH_TO_RTC_SDK

# 编译生成应用

cmake --build build --target rtccli --parallel 32
bash
使用应用
命令行选项

以下是应用的命令行选项参考:

//应用 ID,你可以在控制台上获取此值。
--appid=<app id> <must> 

//通话 Token。关于如何获取 Token,参考 https://www.volcengine.com/docs/6348/70121。
--token=<token> <must> 

//音视频房间 ID。
--roomid=<room id> <must>

//用户 ID。
--userid=<uid> <must> 

//是否开启视频采集。Bool 值。
--enable-video <option> 

//是否开启音频采集。Bool 值。
--enable-audio <option> 

//开启内部视频采集时,设定采集帧率。默认值是 30fps。
--fps <option> 

//开启内部视频采集时,设定采集设备。 
--video_device_id

//使用自定义音视频采集时,设定视频文件。和 --enable-video 选项互斥。
--video_file=<video file> <option> 

//使用自定义音视频采集时,设定音频文件。和 --enable-audio 选项互斥。
--audio_file=<audio file> <option>
bash
常见操作
加入房间
# 在构建目录执行
# 只进房
./rtccli --appid="yourappid" --token="xx" --roomid=123 --userid=123
bash
加入房间并采用内部采集机制进行音视频采集

使用此功能时,必须在编译构建应用时,选择内置音视频采集机制。

# 在构建目录执行
# 进房 开启摄像头 和 麦克风
./rtccli --appid="yourappid" --token="xx" --roomid=123 --userid=123 --enable_video=true --enable_audio=true
bash
加入房间并采用自定义音视频采集机制

使用此功能时,必须在编译构建应用时,选择自定义音视频采集机制。

# 进房
# 推视频外部源、推音频外部源
./rtccli --appid="yourappid" --token="xxx" --roomid=123zl --userid=123  --audio_file={yourpath}/rtc-cli/src/single_frequency_48k_16_signal.pcm --video_file={yourpath}/rtc-cli/src/input.mp4 --fps=30
bash
枚举视频设备
# 进房
# 枚举视频采集设备
./rtccli --appid="yourappid" --token="xxx" --roomid=xxx --userid=xxx --video_device=true
bash

预期输出:

# 获得两个摄像头的相关信息
[CLI] get video device num: 0 device id: [usb-0000:00:14.0-8] video device name: [Integrated Camera: Integrated C]
[CLI] get video device num: 1 device id: [usb-0000:00:14.0-1] video device name: [UVC Camera (046d:0825)]
bash
指定内部采集使用的摄像头
./rtccli --appid="your app id" --token="your token" --roomid=xxx --userid=xxx --enable_video=true --enable_audio==true --video_device_id="usb-0000:00:14.0-1"
bash
更改内部采集的视频采集参数
// 默认视频采集参数是:
// - 分辨率:640 * 480,
// - 帧率:30fps(
// 设定视频采集参数时,必须考虑硬件参数。如硬件帧率上限是 30fps,则设置的值也不能超过此值。)

./rtccli --appid="your app id" --token="your token" --roomid=xxx --userid=xxx --enable_video=true --enable_audio==true --video_device_id="usb-0000:00:14.0-1" --height=640 --width=480 --fps=30
bash