音视频进阶教程|实现直播SEI补充增强信息

1 SEI功能简介

在音视频流媒体应用中,除了可以流媒体通道推拉音视频内容外,还可以使用流 SEI(Supplemental Enhancement Information,媒体补充增强信息)通过流媒体通道将文本信息与音视频内容打包在一起,从主播端(推流端)推出,并从观众端(拉流端)接收,以此实现文本数据与音视频内容的精准同步的目的。

一般可用于视频画面的精准布局、远端歌词同步、直播答题等应用场景。

SEI 的相关概念及原理请参考 如何理解和使用 SEI(媒体补充增强信息)

适合对消息发送有较高频率和实时性要求,且消息丢失不会影响业务逻辑时,推荐使用 SEI(Supplemental Enhancement Information,媒体补充增强信息)。

2 SEI示例源码下载

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

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

3 实现SEI之前的前提条件

在实现 SEI 功能之前,请确保:

4 SEI接口使用步骤

发送与接收 SEI 信息功能需要推流和拉流端配对使用才能展示效果,即需要在推流端发送 SEI 信息,拉流端接收 SEI 信息。以下内容将介绍各端如何使用发送与接收 SEI 信息功能。

在这里插入图片描述

主播推流发送 SEI 消息调用流程如下:

  1. 调用 createEngine 接口创建 engine 对象。

  2. 调用 loginRoom 接口登录房间。

  3. 调用 startPublishingStream 接口推流。

  4. 在推流成功后,调用 sendSEI 接口发送 SEI 信息。

观众拉流接收 SEI 消息调用流程如下:

  1. 调用 createEngine 接口创建 engine 对象。

  2. 创建 IZegoEventHandler 对象,并重写接收 SEI 信息的 onPlayerRecvSEI 方法,调用 setEventHandler 接口传入创建的 IZegoEventHandler 监听 onPlayerRecvSEI 的回调。

  3. 调用 loginRoom 接口登录房间。

  4. 调用 startPlayingStream 接口拉流。

  5. 在拉流成功后,接收到推流端发送的 SEI 信息之后触发 onPlayerRecvSEI 回调。

    拉流时,如果开发者通过调用 mutePlayStreamVideomuteAllPlayStreamVideo 接口,设置了只拉音频流时,将无法接收 SEI 信息。

4.1 (可选)设置 SEI 类型

设置 SEI 类型

由于 SDK 默认使用 ZEGO 自行定义的 SEI(nalu type = 6, payload type = 243)类型打包,且此类型是 SEI 标准未规定的类型,因此跟视频编码器或者视频文件中的 SEI 不存在冲突。但当开发者需要使用第三方解码器解码时(如 FFmpeg),会导致解不出正确的 SEI,此时需要在推流前调用 setSEIConfig 接口更换 SDK 发送 SEI 的类型,使用 UserUnregister 的 SEI(nalu type = 6, payload type = 5)类型打包。

仅当开发者使用第三方解码器解码 SEI 时需要执行该步骤。

  • 接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值