You need to enable JavaScript to run this app.
导航
Linux 命令行版
最近更新时间:2024.11.21 14:02:43首次发布时间:2022.09.14 11:32:08

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

参考本文,使用工程文件构建应用。完成构建后,你可以使用该应用实现基本音视频通话功能。

前提条件

  • 已获取 AppID 和临时 Token。参看开通服务
  • 安装在 x86 架构上的 Linux 系统。其中 glibc 版本不低于 2.27。
  • 已安装以下音视频相关的库:
  • 已安装 CMake 3.13+。
  • 已获取 RTC Demo 工程文件

注:
如果未安装 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

编译通话应用

参考以下操作步骤,编译并运行音视频通话应用。

1. 构建 Demo 工程

在终端窗口下,进入 QuickStart_Terminal_Demo 目录,执行 cmake -B build 命令。命令成功执行后,将在 build 目录下生成工程。

2. 编译 Demo 工程

执行 cmake --build build 命令,进行编译。

3. 修改 Demo 配置

手动修改 Demo 配置

你可以进行手动配置。

进入 build 目录,修改 config.json 文件。

必填的配置参数有:

  1. app_idtoken:在 控制台 上获取的应用 ID 和 临时 token。参看 使用 Token 完成鉴权
  2. room_id:房间 ID。此后运行应用加入房间时,填写的房间 ID 应和此处的值完全一致。
  3. 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

video_encoder_config

设置视频编码相关参数,包括分辨率、帧率、码率,对应 setVideoEncoderConfig。 码率默认推荐如下,取值范围是 [1000, 10000]

  • 1920*1080@60fps,推荐 6000kbps
  • 1920*1080@30fps,推荐 4000kbps
  • 1920*1080@15fps,推荐 2500kbps
  • 1280*720@60fps,推荐 4000kbps
  • 1280*720@30fps,推荐 3000kbps(默认码率)
  • 1280*720@15fps,推荐 2000kbps
  • 640*480@30fps, 推荐 1500kbps
  • 640*480@15fps, 推荐 1000kbps
audio_device_index设置音频内部采集时使用的音频设备的索引值。
设置索引值后,Demo 会根据此值,通过 setAudioCaptureDevice 设置音频设备。Demo 每次运行时,会调用 enumerateAudioCaptureDevices 枚举所有音频设备的索引、ID、和名称,并输出到终端。你可以根据终端日志,在此参数中设置索引值,再次重启后生效。
video_device_index设置音频内部采集时使用的视频设备的索引值。
设置索引值后,Demo 会根据此值,通过 setVideoCaptureDevice 设置视频设备。Demo 每次运行时,会调用 enumerateVideoCaptureDevices 枚举所有视频设备的索引、ID、和名称,并输出到终端。你可以根据终端日志,在此参数中设置索引值,再次重启后生效。

自动修改 Demo 配置(推荐)

Demo 350+ 中,包含了用于快捷配置的 Python 脚本。通过此脚本,你可以方便地配置,并创建一个或多个的音视频应用。如果批量创建多个应用,这些应用之间仅有用户名不同。

在 IoT 领域,尤其是智能汽车场景下,你可能需要在同一台车机上,通过多个用户进程,在同一个 RTC 房间内推送各自的视频流。创建多个音视频应用后,你可以在多个进程中,分别打开一个应用,推送视频流到指定的 RTC 房间。

运行脚本前,确认已安装 Python 2.7+。

  1. 修改 Python 脚本(tools/iot_car/OneKeyConfig.py),配置以下参数:

    1. app_idapp_key:在 控制台 上获取的应用 ID 和 appkey。参看 使用 Token 完成鉴权
    2. room_id:房间 ID。通过此脚本创建的多个应用默认使用同一个房间 ID。
    3. base_user_id:基准用户 ID。批量创建应用后,这些应用加入房间使用的用户 ID 分别是 base_user_id 的值加上后缀 _i。其中 i 为索引下标,从 0 开始,应用数-1 结束。
    4. instances: 创建应用个数。
    5. build_dir: cmake 工程构建目录。与步骤 1 生成的目录保持一致即可。
  2. 运行此脚本,生成多个应用。

    如设置 base_user_id = userinstances = 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
    |-- 其它文件及文件夹
    
  3. 生成一个或多个应用后,你可以修改对应应用的配置文件 build/{username}/config.json,进行更详细的设置。参数的意义见上。

4. 运行 Demo

创建单个 RTC 应用后,进入应用目录,输入 ./rtccli,启动 Demo。

如果你创建了多个 RTC 应用,你可以打开多个终端,分别进入不同的应用目录,启动进程,推送视频流。

体验音视频通话功能

为更好地体验实时音视频互动效果,你可以邀请一位朋友使用另一台设备运行该示例项目(需确保两个设备配置示例项目时填入的 App ID 和 AppKey 一致)。当你们输入相同的房间名加入房间后,即可在同一房间中体验音视频通话。