快速开始 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-devshell
参考以下操作步骤,编译并运行音视频通话应用。
在终端窗口下,进入 QuickStart_Terminal_Demo 目录,执行 cmake -B build 命令。命令成功执行后,将在 build 目录下生成工程。
执行 cmake --build build 命令,进行编译。
你可以进行手动配置。
进入 build 目录,修改 config.json 文件。
必填的配置参数有:
app_id 和 token:在 控制台 上获取的应用 ID 和 appkey。参看 使用 Token 完成鉴权。room_id:房间 ID。此后运行应用加入房间时,填写的房间 ID 应和此处的值完全一致。user_id:用户 ID。此后运行应用加入房间时,填写的用户 ID 应和此处的值完全一致。你也可以修改其他参数,其他参数的意义参看下表:
| 字段名称 | 功能含义 |
|---|---|
enable_audio | 打开或者关闭音频采集模块 |
enable_video | 打开或者关闭视频采集模块 |
enable_external_audio | 是否开启外部音频采集。 默认为 false 表示开启内部音频采集,这个也是 SDK 默认行为;true 表示开启外部音频采集,对应调用 setAudioSourceType,并设置主流 type=kAudioSourceTypeExternal。该字段只在打开音频采集模块功能即 enable_audio=true 时生效。 |
enable_external_video | 是否开启外部视频采集。 默认为 false 表示开启内部视频采集,这个也是 SDK 默认行为;true 表示开启外部视频采集,对应调用 setVideoSourceType,并设置主流 type=kVideoSourceTypeExternal。该字段只在打开视频采集模块功能即 enable_video=true 时生效。 |
audio_file | 用于指定外部音频采集时使用到的 pcm 原始音频文件。当开启外部音频采集功能后,会读取文件 PCM 数据,然后每隔 10ms 一次循环调用 pushExternalAudioFrame 将 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 和临时 Token。参看 使用 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。
如果你创建了多个 RTC 应用,你可以打开多个终端,分别进入不同的应用目录,启动进程,推送视频流。