You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
视频管理
设置视频发布参数
复制全文
下载 pdf
设置视频发布参数

在不同的视频通话场景中,视频画面大小、对视频清晰度和流畅度的要求,网络带宽往往各不相同,你需要根据实际情况,配置合适的视频配置参数。

名词解释

使用 RTC SDK 采集视频到本地预览或远端渲染的过程中,可以设置的参数如下图。
Image

分辨率

视频的 宽(px)×高(px) 。宽度对应视频显示界面的横边,高度对应视频显示界面的竖边。关于视频显示界面的方向模式,参考 视频采集旋转方向。高分辨率视频更清晰,但同时会增加对宽带的压力,可能导致卡顿。

由于移动端默认竖屏握持,PC 端默认是横屏,因此移动端和 PC 端的宽高概念是相反的。例如 720P, 对移动端来说是,720 x 1280,对 PC 端来说是,1280 x 720

  • 采集分辨率:指摄像头等采集设备提供的画面分辨率。
  • 编码分辨率:经过编码处理的画面的分辨率。编码分辨率小于等于采集分辨率。当编码分辨率小于采集分辨率时,为避免画面变形,编码和采集分辨率宽高比应保持一致。例如,采集分辨率为 1920 × 1080,编码分辨率可以按比例缩小为 640 × 360

帧率

通常情况下,帧率越大,画面越流畅。一般可以使用 15 fps 。对于分辨率小于 200 × 200 的图像大小,可以使用 10 fps 。一般来说,帧率不超过 30 fps

  • 视频采集帧率(fps),即每秒钟要包含画面帧数量。
  • 视频编码帧率(fps),即每秒钟要编码多少帧画面。编码帧率小于等于采集帧率。

码率

数据传输速率(Kbps),即每秒传输的数据量。视频画面的分辨率和帧率越高,质量越高,同时要求的码率也越高。相同实时性要求下,码率越高,所要求的带宽越高。

设置视频采集参数

本接口在引擎创建后即可调用,建议在调用 startVideoCapture 前,调用 setVideoCaptureConfig 设置视频采集参数。同一设备上的不同引擎使用相同的视频采集参数。

private void setVideoCaptureConfig() {
    String width = captureWidth.getText().toString();
    String height = captureHeight.getText().toString();
    String frameRate = captureFrameRate.getText().toString();

    VideoCaptureConfig config = new VideoCaptureConfig();
     // 采集偏好设置 为 manual 时,手动设置视频参数才会生效
    config.capturePreference = VideoCaptureConfig.CapturePreference.MANUAL;
    config.width = width.isEmpty() ? 1920 : Integer.parseInt(width);// 采集宽度
    config.height = height.isEmpty() ? 1080 : Integer.parseInt(height);// 采集高度
    config.frameRate = frameRate.isEmpty() ? 30 : Integer.parseInt(frameRate);// 采集帧率
    rtcVideo.setVideoCaptureConfig(config);
}

三种采集参数模式说明如下:

  • Auto:(默认)自动设置采集参数。SDK 将根据下发配置,结合设备性能应用采集参数。此模式下调用本接口传入的分辨率和帧率不会生效。
  • Manual:手动设置采集参数,包括采集分辨率、帧率,如果设备不支持采集设置的分辨率,会优先选择接近的分辨率,采集后再缩放到目标分辨率。建议采集分辨率与编码分辨率相同,且为常见分辨率配置,避免视频帧的多次缩放。
  • AutoPerformance:采集参数与编码参数一致,即使用 setVideoEncoderConfig 中设置的参数进行采集。此模式下调用本接口传入的分辨率和帧率不会生效。

说明:设置视频采集参数,比如分辨率,或视频旋转角度(setVideoCaptureRotation)发生变化时会收到 onLocalVideoSizeChanged 回调。

设置视频编码参数

在进入 RTC 房间前后,你都可以调用 setVideoEncoderConfig 设置视频编码参数。建议在开启直播前设置视频发布参数,这样可以加快首帧出图。

private void setVideoEncoderConfig() {
   
    VideoEncoderConfig config = new VideoEncoderConfig();
    config.width = 480;
    config.height = 640;
    config.frameRate = 10;
    config.maxBitrate = 1000;
  
    rtcVideo.setVideoEncoderConfig(config);
}

设置视频编码的码率时,推荐设置为 -1 以使用 SDK 自动设定的码率。将上述参数设置为理想情况下的最大值。当视频因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,SDK 会取最接近最大值的那个值。

为应对网络或硬件性能波动,RTC 通常建议你使用 推送多路流性能回退 等功能保障网络或硬件性能不佳时的通信体验。

视频的编码分辨率和帧率受限于采集分辨率和帧率,而且也并非越高越好。首先,高于采集画面的分辨率和帧率并不会使画面更加清晰或者更加流畅。同时,高分辨率和帧率需要更高的带宽来支撑。通话中使用高分辨率的视频费用也会更高。在编码码率恒定的前提下,帧率过高会降低视频的分辨率。
设置视频参数时,主要考虑的因素有屏幕尺寸、视频清晰度、以及宽带压力。比如,在一对一教学场景中,要求实时性高,同时老师和学生的窗口都比较大,要求较高的分辨率和帧率;如果是一对四,由于老师和学生的窗口都比较小,每路流的分辨率可以适当降低,对应的码率相应降低,以减少编解码的资源消耗和缓解下行带宽压力。
你应当根据场景需要,选择合适的视频发布参数。以下是一些常见场景的移动端推荐参数。

将下表中的宽高推荐值互换后,可以应用到 PC 端。例如 720 x 1280,对 PC 端来说是,1280 x 720。

单人直播

分辨率

高(px)

宽(px)

帧率(fps)

默认码率(kbps)

推荐最高码率(kbps)

推荐最低码率(kbps)

蓝光(1080P)

1080

1920

20

2500

3800

1000

超清(720P)

720

1280

15

1200

1900

800

高清(540P)

540

960

15

1000

1520

500

标清(480P)

480

864

15

800

1260

320

双人直播(双人 PK)

单个主播的视频参数:

高(px)

宽(px)

帧率(fps)

码率(kbps)

540

960

15

1200

360

640

15

800

270

480

15

600

248

432

15

400

1V2 PK 或 1V3 PK

窗口

高(px)

宽(px)

帧率(fps)

码率(kbps)

大窗

360

640

15

800

小窗

320

360

15

400

观众连麦

窗口

高(px)

宽(px)

帧率(fps)

码率(kbps)

主播窗口

540

960

15

1200

观众窗口

240

240

15

360

视频聊天室

布局类型

示意图

窗口

高(px)

宽(px)

帧率(fps)

码率(kbps)

1V6

Image

主播窗口

540

960

15

1200

嘉宾窗口

256

256

15

300

1V1

Image

单元窗口

360

360

15

800

1V2

Image

大窗口

360

640

15

800

小窗口

320

360

15

500

四宫格

Image

单元窗口

320

360

15

500

六宫格

Image

小窗口

240

320

15

400

九宫格

Image

小窗口

240

240

15

280

视频房 KTV

窗口

高(px)

宽(px)

帧率(fps)

码率(kbps)

大窗口

540

960

15

1200

小窗口

256

256

15

300

语音房 KTV

高(px)

宽(px)

帧率(fps)

码率(kbps)

540

720

15

1000

一起看抖音

高(px)

宽(px)

帧率(fps)

码率(kbps)

368

640

15

800

参数对照表

从观看感受来看,视频的分辨率、码率和帧率当然是越大越好。但实际业务中,你必须考虑到业务需要,设备性能,网络环境,流量费用等实际情况,选择合适的视频发布参数方案。总体来说,较高的分辨率需要较高的码率来支撑;码率一定的情况下,帧率过高又会降低视频的分辨率。我们建议你使用 SDK 默认的视频编码码率。
你可以参考下表,根据设定的视频分辨率,选择实际业务中使用的帧率和码率:

分辨率 (宽 × 高)

帧率 (fps)

流畅优先时建议码率 (kbps)

画质优先时建议码率 (kbps)

游戏场景下建议码率(kbps)

160 × 120

15

65

130

/

120 × 120

15

50

100

/

320 × 180

15

140

280

/

180 × 180

15

100

200

/

240 × 180

15

120

240

/

320 × 240

15

200

400

/

240 × 240

15

140

280

/

424 × 240

15

220

440

/

640 × 360

15

400

800

/

360 × 360

15

260

520

/

640 × 360

30

600

1200

/

360 × 360

30

400

800

/

480 × 360

15

320

640

/

480 × 360

30

490

980

/

640 × 480

15

500

1000

/

480 × 480

15

400

800

/

640 × 480

30

750

1500

/

480 × 480

30

600

1200

/

848 × 480

15

610

1220

/

848 × 480

30

930

1860

/

640 × 480

10

400

800

/

1280 × 720

15

1130

2260

/

1280 × 720

30

1710

3420

/

960 × 720

15

910

1820

/

960 × 720

30

1380

2760

/

1920 × 1080

15

2080

4160

/

1920 × 1080

30

3150

6300

/

1920 × 1080

60

4780

6500

/

2048 × 1080

60

/

/

8000

4096 × 2160

60

/

/

20000

设置视频渲染视图模式

调用 setLocalVideoCanvassetRemoteVideoCanvas 设置本端和远端的视频流渲染视图模式。
支持三种视频渲染填充模式。SDK 会根据采集画面的分辨率和画布的分辨率,按照选中的填充模式渲染视频画面,参见 VideoCanvas

默认值 RenderModeHidden

视窗等比缩放,填满优先。
当视频尺寸与显示窗口宽高比不一致时,视频尺寸等比缩放,直至视窗被填满,多出的视频部分将被裁剪掉。
示例:

  • 发送端宽高比为 9:16
  • 接收端渲染窗口宽高比为 16:9

Image

RenderModeFit

视窗等比缩放,视频帧内容全部显示优先。
当视频尺寸与显示窗口宽高比不一致时,视频尺寸等比缩放,优先保证视频内容全部显示。会把窗口未被填满的区域填充成背景颜色
示例:

  • 发送端宽高比为 9:16
  • 接收端渲染窗口宽高比为 16:9

Image

RenderModeFill

视频帧自适应画布,视频尺寸非等比例缩放,把渲染窗口充满。在此过程中,视频帧的长宽比例可能会发生变化。

示例项目

API 参考

说明:表格中的 macOS API 接口为 Objective-C,而示例项目中的 macOS 项目使用的是 Windows SDK 中的 API 接口。

平台

Android

iOS

macOS

Windows

Linux

Electron

Flutter

Unity

Web

设置视频采集参数

setVideoCaptureConfig

setVideoCaptureConfig:

setVideoCaptureConfig:

setVideoCaptureConfig

setVideoCaptureConfig

setVideoCaptureConfig

setVideoCaptureConfig

SetVideoCaptureConfig

设置单路视频编码参数

setVideoEncoderConfig(maxSolution)

setVideoEncoderConfig:

setVideoEncoderConfig:

setVideoEncoderConfig(max_solution)

setVideoEncoderConfig(max_solution)

setMaxVideoEncoderConfig

setMaxVideoEncoderConfig

SetVideoEncoderConfig1

setVideoEncoderConfig

分别设置每路视频流编码参数

setVideoEncoderConfig(channelSolutions)

setVideoEncoderConfig:

setVideoEncoderConfig:

setVideoEncoderConfig(channel_solutions, solution_num)

setVideoEncoderConfig(channel_solutions, solution_num)

setVideoEncoderConfig

setVideoEncoderConfig

设置本地视频渲染视图模式

setLocalVideoCanvas

setLocalVideoCanvas:

setLocalVideoCanvas:

setLocalVideoCanvas

setLocalVideoCanvas

setupLocalVideo

setLocalVideoPlayer

设置远端视频渲染视图模式

setRemoteVideoCanvas

setRemoteVideoCanvas:withCanvas:

setRemoteVideoCanvas:withCanvas:

setRemoteVideoCanvas

setRemoteVideoCanvas

setupRemoteVideo

setRemoteVideoPlayer

常见问题

Q1:如何设置水印参数?

A:参考添加视频水印

Q2:如何设置视频旋转参数?

A:参考视频采集旋转方向

Q3:如何设置视频镜像参数?

A:参考镜像

最近更新时间:2026.06.15 21:11:49
这个页面对您有帮助吗?
有用
有用
无用
无用