快速开始 Demo 是 RTC 提供的包含基本功能的开源示例工程文件。获取该工程文件后,你可以快速构建应用,感受 RTC 的通话效果;也能通过阅读代码,了解基本音视频通话的最佳实践。
使用该项目构建应用后,你可以使用该应用进行音视频采集,并传输到远端。
根据 开通服务 获取的 AppID 和临时 Token
安装在 x86 架构硬件上的 Linux 系统。其中 glibc 版本不低于 2.27。
已安装音视频相关的库:OpenGL 和 PulseAudio
已安装 CMake 3.13+。
说明
如果未安装 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 SDK 会向系统发起视频采集指令;
使用自定义视频采集机制时,你必须自行完成视频采集逻辑,并将采集到的视频流给到 RTC SDK 以供编码传输。在此应用中,我们已实现了将 .mp4 文件转换为视频流,并通过 RTC 推送到远端。
# 切换路径到此项目的根目录。
# 使用你的系统中的路径代替 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 进行编码传输时,使用以下方式进行编译:
在项目中添加 FFmpeg 项目。
编译生成应用:
# 切换路径到此项目的根目录。
# 使用你的系统中的路径代替 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