Windows&Mac

最近更新时间:2026-04-13 15:30:11

我的收藏
本文将介绍如何调整桌面端实时音视频(TRTC)视频画质。

功能简介

在实时音视频(TRTC)视频通话或直播等场景中,开发者可以根据具体需求灵活配置推流和拉流的视频参数。这些配置包括但不限于:
视频编码输出分辨率:影响最终传输视频的质量。
视频帧率:控制视频画面的流畅程度。
视频码率:管理视频数据传输的带宽占用。
通过合理配置这些参数,开发者可以在不同的音视频应用场景中为用户提供更优质的使用体验。
核心参数详解:
视频分辨率:用于度量图像内像素数量的关键参数,通常以宽度×高度的形式表示(如640×360),直接影响画面的清晰度和细节表现。
视频码率:指每秒传输的比特数,单位为 kbps,决定了视频数据的压缩程度和传输质量。
视频帧率:单位时间内视频显示的帧数,测量单位为 fps,影响视频的流畅度和动态表现。

支持的平台

iOS
Android
Mac
Windows
Web
Electron
微信小程序
Flutter

前提条件

在进行视频参数配置之前,请确保您已在项目中成功集成并实现了基础的实时音视频功能。具体接入方法请参考:快速接入指南

示例源码

请参考跑通 Demo:
Windows:下载示例源码

API 介绍

设置视频码率、帧率、横竖屏模式。
Windows
Mac
字段名
含义
备注
编码分辨率,例如 640 x 360 是指编码出的画面的宽(像素) x 高(像素),我们在 TRTCVideoResolution 枚举定义里只定义了宽 >= 高的横屏(Landscape)分辨率,如果想要使用竖屏分辨率,需要将 resMode 设置为 liteav::TRTCVideoResolutionModePortrait
由于很多硬件编解码器只支持能被 16 整除的像素宽度,所以 SDK 实际编码出的分辨率并不一定完全按照参数指定,而是会自动进行 16 整除修正。例如 640 x 360 的分辨率,在 SDK 内部有可能会适配为 640 x 368。
横屏或竖屏分辨率,由于 TRTCVideoResolution 中只定义了横屏分辨率,如果您希望使用 360 x 640 这样的竖屏分辨率,就需要指定 resModeliteav::TRTCVideoResolutionModePortrait
一般 PC 和 Mac 采用横屏(Landscape)分辨率,手机采用竖屏(Portrait)分辨率。
视频码率(Bitrate),即每秒钟编码器输出多少 Kbit 的编码后的二进制数据。如果您将 videoBitrate 设置为 800kbps,那么每秒钟编码器会产生 800kbit 的视频数据,这些数据如果存储成一个文件,那么文件大小就是 800kbit,也就是100KB,也就是 0.1M。
视频码率并不是越高越好,它跟分辨率之间要有比较恰当的映射关系,如下表所示。
帧率(FPS),也就是每秒钟要编码多少帧画面。推荐设置为 15 FPS,这样既能保证画面足够流畅,又不会因为每秒帧数太多而拉低单幅画面的清晰度。
如果您对流畅度要求比较高,可以设置为 20 FPS 或 25 FPS。但请不要设置 25 FPS 以上的数值,因为电影的常规帧率也只有 24 FPS。
liteav::TRTCVideoEncParam enc_param;
// 设置视频分辨率
enc_param.videoResolution = liteav::TRTCVideoResolution_960_540;
// 配置视频码率
enc_param.videoBitrate = 850;
// 设置视频帧率
enc_param.videoFps = 15;
// 配置分辨率模式为横屏模式
enc_param.resMode = liteav::TRTCVideoResolutionModeLandscape;
// 应用编码参数配置
mCloud->setVideoEncoderParam(enc_param);

字段名
含义
备注
编码分辨率,例如 640 x 360 是指编码出的画面的宽(像素) x 高(像素),我们在 TRTCVideoResolution 枚举定义里只定义了宽 >= 高的横屏(Landscape)分辨率,如果想要使用竖屏分辨率,需要将 resMode 设置为 Portrait。
由于很多硬件编解码器只支持能被 16 整除的像素宽度,所以 SDK 实际编码出的分辨率并不一定完全按照参数指定,而是会自动进行 16 整除修正。例如 640 x 360 的分辨率,在 SDK 内部有可能会适配为 640 x 368。
横屏或竖屏分辨率,由于 TRTCVideoResolution 中只定义了横屏分辨率,如果您希望使用 360 x 640 这样的竖屏分辨率,就需要指定 resMode 为 TRTCVideoResolutionModePortrait
一般 PC 和 Mac 采用横屏(Landscape)分辨率,手机采用竖屏(Portrait)分辨率。
视频码率(Bitrate),即每秒钟编码器输出多少 Kbit 的编码后的二进制数据。如果您将 videoBitrate 设置为 800kbps,那么每秒钟编码器会产生 800kbit 的视频数据,这些数据如果存储成一个文件,那么文件大小就是 800kbit,也就是100KB,也就是 0.1M。
视频码率并不是越高越好,它跟分辨率之间要有比较恰当的映射关系,如下表所示。
帧率(FPS),也就是每秒钟要编码多少帧画面。推荐设置为 15 FPS,这样既能保证画面足够流畅,又不会因为每秒帧数太多而拉低单幅画面的清晰度。
如果您对流畅度要求比较高,可以设置为 20 FPS 或 25 FPS。但请不要设置 25 FPS 以上的数值,因为电影的常规帧率也只有 24 FPS。
TRTCVideoEncParam* encParam = [TRTCVideoEncParam new];
// 设置视频分辨率
encParam.videoResolution = TRTCVideoResolution_960_540;
// 配置视频码率
encParam.videoBitrate = 850;
// 设置视频帧率
encParam.videoFps = 15;
// 配置分辨率模式为竖屏模式
encParam.resMode = TRTCVideoResolutionModePortrait;
// 应用编码参数配置
[trtc setVideoEncoderParam: encParam];

各分辨率推荐参数配置

分辨率定义
宽高比
建议码率(VideoCall)
建议码率(LIVE)
1:1
80kbps
120kbps
1:1
100kbps
150kbps
1:1
200kbps
300kbps
1:1
350kbps
525kbps
4:3
100kbps
150kbps
4:3
150kbps
225kbps
4:3
200kbps
300kbps
4:3
250kbps
375kbps
4:3
300kbps
450kbps
4:3
400kbps
600kbps
4:3
600kbps
900kbps
4:3
1000kbps
1500kbps
16:9
150kbps
250kbps
16:9
200kbps
300kbps
16:9
250kbps
400kbps
16:9
350kbps
550kbps
16:9
550kbps
900kbps
16:9
850kbps
1300kbps
16:9
1200kbps
1800kbps
16:9
2000kbps
3000kbps

常见的误区

分辨率越高越好?

较高的分辨率也需要较高的码率来支撑,如果分辨率选择 1280 x 720,但码率却指定为 200kbps,画面就会有大量的马赛克。推荐参考 分辨率码率参照表 进行设置。

帧率越高越好?

由于摄像头采集的画面是曝光阶段中所有现实物体的完整映射,所以并不是帧率越高,观感就越流畅,这一点跟游戏里的 FPS 是不一样的。恰恰相反,帧率过高,会拉低每帧画面的画质,也会减少摄像机的曝光时间,效果可能会更差。

码率越高越好?

较高的码率也需要较高的分辨率来匹配,对于 320 x 240 这样的分辨率,1000kbps 的码率就很浪费了,推荐参考 分辨率码率参照表 进行设置。

用 Wi-Fi 的时候就可以设置很高的分辨率和码率?

并不是说 Wi-Fi 的网速是恒定不变的,如果离无线路由器较远, 或者路由器信道被占用,可能网速还不如 4G。
针对这种情况, TRTC SDK 提供了测速功能,可以在视频通话前先进行测速,根据打分值来确定网络好坏。