logo
实时音视频
当前页

单流转码

2024-01-02

功能简介

单流转码,指在云端把单条原始流转换为不同编码格式、不同分辨率的转码流。在直播等场景中,观众可以基于接入网络质量、终端设备等,自行选择不同分辨率的流进行观看,以保证播放的流畅性。

应用场景

  • 当开发者提供多种分辨率的视频流供用户按需观看时,需要将原始流转换为不同清晰度的转码流,此时可使用单流转码功能。
  • 将原始视频流转换为不同的视频编码格式时,可使用单流转码功能。例如,部分设备由于性能问题不能解码 H.265 时,需要转码为 H.264。

前提条件

注意

单流转码功能目前为内测功能,如需接入,请联系 ZEGO 商务人员或 ZEGO 技术支持。

在使用单流转码功能之前,请确保:

说明

对于已经使用混流能力的场景,可直接基于混流接口,实现输出多条不同分辨率的流,不需要触发单流转码。

实现流程

单流转码的主要流程如下:

  1. 添加转码模板。
  2. 创建引擎并登录房间。
  3. 按需拉取转码流,根据需要选择拉流方式为 L3 拉流转推 CDN 拉流(通过 streamID 拉流) 或 RTC,并传入转码模板 ID 触发转码。

1 添加转码模板

请联系 ZEGO 技术支持添加转码模板,并获取到对应的转码模板 ID。

目前支持配置的转码参数为:模板 ID、分辨率、码率、帧率及视频编码格式。

注意
  • 目前只支持配置视频相关参数。
  • 一个 AppID 最多支持添加 5 个转码模板。如需设置更多模板,请联系 ZEGO 技术支持。
参数说明
模板 ID取值大于 100 的整数,ID 必须唯一。
推荐按输出分辨率命名,例如,转码输出分辨率为 360P 的模板 ID,可命名为 360。若转码输出分辨率小于 100P,可自行命名。
分辨率
  • 支持宽度范围:[0, 3000],数值必须是 2 的倍数。
  • 支持高度范围:[0, 3000],数值必须是 2 的倍数。
码率取值需大于 0,单位为 bps。
帧率支持范围:[1, 20],单位 fps。
如果需要输出更大帧率,请联系 ZEGO 技术支持进行配置。
视频编码格式

支持以下视频编码格式:

  • H.264
  • H.265
  • 保持原始流的视频编码格式。

2 创建引擎并登录房间

具体流程请参考“实现视频通话”文档的 创建引擎登录房间 章节。

注意

实现单流转码前,房间内需要有已存在的流。

3 拉转码流

配置 ZegoPlayerConfig 的 codecTemplateID 属性,填写 步骤 1 添加转码配置模板 中获取的转码模板 ID,并开始拉流。

ZegoPlayerConfig *playerConfig = [[ZegoPlayerConfig alloc] init];
// 按实际业务情况配置
playerConfig.resourceMode = ZegoStreamResourceModeOnlyL3;
// 101 是配置好的模板 ID,参考步骤 1 添加转码配置模板
playerConfig.codecTemplateID = 101;

ZegoCanvas *playCanvas = [ZegoCanvas canvasWithView:self.playView];

// engine 为创建引擎时,创建的 ZegoExpressEngine 对象
[[ZegoExpressEngine sharedEngine] startPlayingStream:@"streamID" canvas:playCanvas config:playerConfig];

常见问题

  • 混流一般用于将多条输入流合并为一路,同时支持定义多路输出流的编码格式、分辨率等参数,且混流转码需要开发者额外调用客户端或服务端接口触发。
  • 单流转码用于实现单条流的转码功能,且无需开发者额外调用客户端或服务端接口触发,仅需在拉流时带上模板参数触发即可。
2024-01-02

Previous

超低延迟直播

Next

RTMP 推流到 ZEGO 服务器