文档中心
ExpressVideoSDK 实时音视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
立即注册
登录
中文站 English
  • 文档中心
  • 实时音视频
  • 视频能力
  • 常用视频配置

常用视频配置

更新时间:2024-02-28 14:27

功能简介

在视频通话或直播时,开发者可以根据需要指定推流和拉流视频相关配置,如视频采集分辨率、视频编码输出分辨率、视频帧率、码率、视图模式和镜像模式。

  • 分辨率:
    • 视频分辨率:用于度量图像内数据量多少的一个参数,通常表示成 ppi。
    • 采集分辨率:指摄像头等采集设备提供的画面分辨率。
    • 编码分辨率:指经过编码处理的画面的分辨率。
  • 码率:指每秒传输的比特(bit)数,单位为 bps(bit per second)。
  • 帧率:单位时间内视频显示帧数的量度单位,测量单位为“每秒显示帧数”(Frame Per Second,fps)。

设置合适的视频分辨率、帧率和码率可以在音视频场景中提供用户更好的使用体验。选择合适镜像模式与视图模式则可以让开发者提供个性化的视频显示模式。

示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “/ZegoExpressExample/Examples/CommonFeatures/CommonVideoConfig”目录下的文件。

前提条件

在设置视频配置之前,请确保:

  • 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
  • 已在项目中集成 ZEGO Express SDK,并实现了基本的音视频推拉流功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。

使用步骤

1 修改视频配置

通过调用 setVideoConfig 接口修改视频配置,用户既可自定义参数,也可以使用预设值进行设置。

需要在推流(startPublishingStream)前或预览(startPreview)前设置好相关视频配置,在推流后仅支持编码分辨率和码率的修改。

自定义参数设置

调用 setVideoConfig 接口修改推流视频配置,可通过该接口设置视频帧率、码率、视频采集分辨率和视频编码输出分辨率。若不进行特殊设置,则 SDK 会根据选定的场景,自动应用适合该场景的分辨率、码率、帧率,以获取最佳体验效果,详情请参考 场景音视频配置。

如果拉流端需要拉取 60 帧的流,需要联系技术支持,详情可参考 ZEGO Express SDK 是否支持拉 60 帧的流?

以设置视频采集分辨率为 360p,编码分辨率为 360p,码率为 600 kbps,帧率为 15 fps 为例:

// 需要在预览(startPreview)和推流(startPublishingStream)前设置好相关视频配置
ZegoVideoConfig videoConfig;

videoConfig.captureHeight = 360;
videoConfig.captureWidth = 640;
videoConfig.encodeHeight = 360;
videoConfig.encodeWidth = 640;
videoConfig.fps = 15
videoConfig.bitrate = 600;

// 设置视频配置
ZegoExpressEngine::getEngine()->setVideoConfig(videoConfig);
移动端的宽高分辨率与 PC 端的宽高分辨率是相反的,例如移动端 360p 的分辨率为 360 × 640,而 PC 端 360p 的分辨率为 640 × 360。

使用预设值

除自定义设置参数之外,也可以使用 ZEGO Express SDK 提供的预设组合值,ZegoVideoConfigPreset 的预设组合值如下:

ZegoVideoConfigPreset 采集分辨率
(宽 × 高)
编码分辨率
(宽 × 高)
帧率(fps) 码率(kbps)
ZEGO_VIDEO_CONFIG_PRESET_180P 320 × 180 320 × 180 15 300
ZEGO_VIDEO_CONFIG_PRESET_270P 480 × 270 480 × 270 15 400
ZEGO_VIDEO_CONFIG_PRESET_360P 640 × 360 640 × 360 15 600
ZEGO_VIDEO_CONFIG_PRESET_540P 960 × 540 960 × 540 15 1200
ZEGO_VIDEO_CONFIG_PRESET_720P 1280 × 720 1280 × 720 15 1500
ZEGO_VIDEO_CONFIG_PRESET_1080P 1920 × 1080 1920 × 1080 15 3000

调用 setVideoConfig 接口使用预设值时示例代码如下:

// 使用预设置进行视频设置
ZegoVideoConfig vConfig(ZEGO_VIDEO_CONFIG_PRESET_360P);
engine->setVideoConfig(vConfig);

2 修改视频视图模式

设置视频视图模式前,需先停止预览或拉流,否则无法生效。

通过修改视图对象 ZegoCanvas 的 “viewMode” 参数可以修改视频的视图模式。目前支持如下三种视频渲染填充模式:

枚举值 说明
ZEGO_VIEW_MODE_ASPECT_FIT 等比缩放,可能有黑边。
ZEGO_VIEW_MODE_ASPECT_FILL 等比缩放填充整个 View,可能有部分被裁减。
ZEGO_VIEW_MODE_SCALE_TO_FILL 填充整个 View,图像可能被拉伸。

三种视频渲染填充模式效果如图所示:

  • 上图中展示的视图分辨率为 320 × 390(宽 × 高),视频分辨率为 340 × 340(宽 × 高)。
  • 上图中原视频尺寸长等于宽,视图尺寸长大于宽,故在 “ZEGO_VIEW_MODE_ASPECT_FIT” 渲染模式下,视频上下出现黑边;若此时视图尺寸宽大于长,则在 “ZEGO_VIEW_MODE_ASPECT_FIT” 渲染模式下,视频左右将会出现黑边。

以设置预览视图模式为 “ZEGO_VIEW_MODE_ASPECT_FIT” 并开始预览为例:

// winId 为视频预览窗口句柄
ZegoCanvas previewCanvas(ZegoView(winId));
// 将视图模式设置为 ZEGO_VIEW_MODE_ASPECT_FIT
previewCanvas.viewMode = ZEGO_VIEW_MODE_ASPECT_FIT;
// 开始预览
engine->startPreview(&previewCanvas);

3 设置镜像模式

该功能在推流前、后设置均可,设置后即时生效。

在推流前或停止推流后可通过调用 setVideoMirrorMode 设置本地预览视频以及推送的视频是否开启镜像模式。目前支持如下四种镜像模式:

枚举值 说明
ZEGO_VIDEO_MIRROR_MODE_NO_MIRROR 本地预览和拉流端看到的视频都不是镜像画面。
ZEGO_VIDEO_MIRROR_MODE_ONLY_PREVIEW_MIRROR 只有本地预览时才是镜像画面,默认采用此模式。
ZEGO_VIDEO_MIRROR_MODE_ONLY_PUBLISH_MIRROR 只有拉流端看到的视频才是镜像画面。
ZEGO_VIDEO_MIRROR_MODE_BOTH_MIRROR 本地预览和拉流端看到的视频都是镜像画面。

四种镜像模式的效果如下:

以设置拉流端镜像且本地预览非镜像为例:

// 设置镜像模式为只有拉流端看到的视频才是镜像画面
engine->setVideoMirrorMode(ZEGO_VIDEO_MIRROR_MODE_ONLY_PUBLISH_MIRROR);

相关文档

  • 如何选择视频分辨率、帧率、码率?
  • 怎么处理视频放大或黑边问题?
  • 怎么处理视频模糊问题?
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈