实时音视频
  • iOS
  • Android : Java
  • macOS
  • Windows
  • HarmonyOS
  • Linux
  • Web
  • 小程序
  • Flutter
  • Electron
  • Unreal Engine
  • Unity3D
  • uni-app
  • React Native
  • Cocos Creator
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 场景化音视频配置
  • 通信能力
  • 房间能力
  • 音频能力
  • 视频能力
  • 直播能力
  • 其他能力
  • 最佳实践
  • 客户端 API
  • 服务端 API
  • 常见错误码
  • 常见问题
  • 文档中心
  • 实时音视频
  • 直播能力
  • 单流转码

单流转码

更新时间:2024-01-02 18:48

功能简介

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

image.png

应用场景

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

前提条件

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

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

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

实现流程

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

  1. 添加转码模板。
  2. 创建引擎并登录房间。
  3. 按需拉取转码流,根据需要选择拉流方式为 L3CDN(通过 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 = new ZegoPlayerConfig();
// 按实际业务情况配置
playerConfig.resourceMode = ZegoStreamResourceMode.DEFAULT;
// 101 是配置好的模板 ID,参考步骤 1 添加转码配置模板
playerConfig.codecTemplateID = 101;

ZegoCanvas playCanvas = new ZegoCanvas(playView);

// engine 为创建引擎时,创建的 ZegoExpressEngine 对象
engine.startPlayingStream("playStreamID", playCanvas, playerConfig);

常见问题

混流和单流转码的区别是什么?

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