快速开始 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
参考以下操作步骤,编译并运行音视频通话应用。
在终端窗口下,进入 QuickStart_Terminal_Demo
目录,执行 cmake -B build
命令。命令成功执行后,将在 build
目录下生成工程。
执行 cmake --build build
命令,进行编译。
你可以进行手动配置。
进入 build
目录,修改 config.json
文件。
必填的配置参数有:
app_id
和 token
:在 控制台 上获取的应用 ID 和 临时 token。参看 使用 Token 完成鉴权。room_id
:房间 ID。此后运行应用加入房间时,填写的房间 ID 应和此处的值完全一致。user_id
:用户 ID。此后运行应用加入房间时,填写的用户 ID 应和此处的值完全一致。你也可以修改其他参数,其他参数的意义参看下表:
字段名称 | 功能含义 |
---|---|
enable_audio | 打开或者关闭音频采集模块 |
enable_video | 打开或者关闭视频采集模块 |
enable_external_audio | 取值 false ,表示开启内部音频采集。Linux SDK 暂不支持外部音频采集。 |
enable_external_video | 是否开启外部视频采集。 默认为 false 表示开启内部视频采集,这个也是 SDK 默认行为;true 表示开启外部视频采集,对应调用 setVideoSourceType,并设置主流 type=kVideoSourceTypeExternal 。该字段只在打开视频采集模块功能即 enable_video=true 时生效。 |
audio_file | 无需设置,Linux SDK 暂不支持外部音频采集。用于指定外部音频采集时使用到的 pcm 原始音频文件。 |
video_file | 用于指定外部视频采集时使用到的 yuv 原始视频文件。当开启外部视频采集功能后,会读取文件 yuv 文件数据,然后每隔 1000/fps 毫秒循环调用 pushExternalVideoFrame 将原始视频数据编码后推送给远端用户。 |
video_capture_config | 设置视频采集相关参数,包括分辨率、帧率 。该字段只在视频内部采集开启情形下才会生效,对应 setVideoCaptureConfig。 |
| 设置视频编码相关参数,包括分辨率、帧率、码率,对应 setVideoEncoderConfig。 码率默认推荐如下,取值范围是
|
audio_device_index | 设置音频内部采集时使用的音频设备的索引值。 设置索引值后,Demo 会根据此值,通过 setAudioCaptureDevice 设置音频设备。Demo 每次运行时,会调用 enumerateAudioCaptureDevices 枚举所有音频设备的索引、ID、和名称,并输出到终端。你可以根据终端日志,在此参数中设置索引值,再次重启后生效。 |
video_device_index | 设置音频内部采集时使用的视频设备的索引值。 设置索引值后,Demo 会根据此值,通过 setVideoCaptureDevice 设置视频设备。Demo 每次运行时,会调用 enumerateVideoCaptureDevices 枚举所有视频设备的索引、ID、和名称,并输出到终端。你可以根据终端日志,在此参数中设置索引值,再次重启后生效。 |
Demo 350+ 中,包含了用于快捷配置的 Python 脚本。通过此脚本,你可以方便地配置,并创建一个或多个的音视频应用。如果批量创建多个应用,这些应用之间仅有用户名不同。
在 IoT 领域,尤其是智能汽车场景下,你可能需要在同一台车机上,通过多个用户进程,在同一个 RTC 房间内推送各自的视频流。创建多个音视频应用后,你可以在多个进程中,分别打开一个应用,推送视频流到指定的 RTC 房间。
运行脚本前,确认已安装 Python 2.7+。
修改 Python 脚本(tools/iot_car/OneKeyConfig.py
),配置以下参数:
app_id
和 app_key
:在 控制台 上获取的应用 ID 和 appkey。参看 使用 Token 完成鉴权。room_id
:房间 ID。通过此脚本创建的多个应用默认使用同一个房间 ID。base_user_id
:基准用户 ID。批量创建应用后,这些应用加入房间使用的用户 ID 分别是 base_user_id
的值加上后缀 _i
。其中 i
为索引下标,从 0
开始,应用数-1
结束。instances
: 创建应用个数。build_dir
: cmake 工程构建目录。与步骤 1 生成的目录保持一致即可。运行此脚本,生成多个应用。
如设置 base_user_id = user
且 instances = 4
,那么在 build
目录下的生成的文件结构如下:
build/ ├── user_0 │ ├── 1280X720X15XI420.yuv │ ├── 48000-stereo-s16le.pcm │ ├── config.json │ ├── libRTCFFmpeg.so │ ├── libVolcEngineRTC.so │ └── rtccli ├── user_1 │ ├── 1280X720X15XI420.yuv │ ├── 48000-stereo-s16le.pcm │ ├── config.json │ ├── libRTCFFmpeg.so │ ├── libVolcEngineRTC.so │ └── rtccli ├── user_2 │ ├── 1280X720X15XI420.yuv │ ├── 48000-stereo-s16le.pcm │ ├── config.json │ ├── libRTCFFmpeg.so │ ├── libVolcEngineRTC.so │ └── rtccli └── user_3 ├── 1280X720X15XI420.yuv ├── 48000-stereo-s16le.pcm ├── config.json ├── libRTCFFmpeg.so ├── libVolcEngineRTC.so └── rtccli |-- 其它文件及文件夹
生成一个或多个应用后,你可以修改对应应用的配置文件 build/{username}/config.json
,进行更详细的设置。参数的意义见上。
创建单个 RTC 应用后,进入应用目录,输入 ./rtccli
,启动 Demo。
如果你创建了多个 RTC 应用,你可以打开多个终端,分别进入不同的应用目录,启动进程,推送视频流。
为更好地体验实时音视频互动效果,你可以邀请一位朋友使用另一台设备运行该示例项目(需确保两个设备配置示例项目时填入的 App ID 和 AppKey 一致)。当你们输入相同的房间名加入房间后,即可在同一房间中体验音视频通话。