浅谈SEI 信息在新媒体直播实时互动中的应用

新媒体直播最主要的特点是实时和互动,本文 介绍了通过在直播过程中插入SEI 信息的方式 在移动客户端进行实时互动的应用实践,阐述 了前期验证过程、优化后的技术实现方案和客 户端呈现效果,为新媒体直播实时互动的产品 设计和技术实现提供了一定的参考与借鉴。

摘要

在新媒体多元化发展的今天,直播的门槛日趋降低,网红直播也好,直播带货也罢,诸多直播场景应运而生。不论是哪一种直播形式,无一不突出了新媒体直播的实时性和互动性,但是对于大型媒体机构而言,大量的新闻、赛事、文艺节目、影视剧等内容通过新媒体渠道进行直播,更多的是体现传播属性,没有发挥出新媒体直播实时和互动的特点。

伴随着东京奥运会的到来,大量的用户涌入新媒体端,如何在用户观赛期间提供更好的体验,是吸引用户的关键因素。奥运会期间众多赛事项目及中国热门参赛运动员,是广大用户的热点话题,在观赛期间用户获取项目介绍、运动员介绍多限于电视转播的解说员口播,部分清流场次存在着无解说、无信息介绍的情况。本文以体育赛事为切入点,通过在直播编码时插入SEI 信息的方式在央视体育客户端实现了配合赛事直播画面精准呈现赛事项、运动员信息的互动场景,为后续通过SEI 信息衍生出更为丰富的新媒体直播实时互动场景提供了有益的借鉴。

SEI 即补充增强信息(Supplemental EnhancementInformation),它提供了向视频码流中加入额外信息的方法,是H.264/H.265 这些视频压缩标准的特性之一。如何将赛事信息和直播画面保持精准同步,最好的办法就是将指定信息与直播流绑定在一起进行传输。经过调研与实践,我们采用了视频流中的SEI 信息完成同步传输,SEI 信息放在主编码图像数据之前,位于每个关键帧的前部。同时,直播信号传输过程中,是可以插入SEI 信息的,这些插入的信息,和其他视频内容一同经过传输链路到达客户端。

SEI 信息具备以下特点:

◆对于直播协议没有依赖性,目前日常直播使用的RTMP 即可支持,其他协议只要在播放端支持SEI 信息解析即可使用;

◆具有较好的兼容性,如果播放端不支持自定义SEI 信息的解析,H.264 解码器会对其进行忽略,并不会影响正常的播放;

◆具有很好的实时性,通过视频帧携带,完全和视频保持同步。

二 新媒体直播实时互动前期实践与验证

目前在移动客户端中观看赛事的互动形式主要有两种:一是用户在直播流中观看互动内容,实践操作是通过在线包装的形式,将提前预设好的互动内容嵌入到直播画面中,通过直播流展现给用户,此互动形式用户无法参与其中,用户体验一般;二是用户在客户端中的直播页播放窗半屏下,参与竞猜活动和点赞互动等,此互动形式可以让用户参与,但是互动内容和直播画面是脱节的,竞猜也只能进行一些非时效性的问题,不能结合直播画面实时呈现互动。

在现有的流程中,如果想让用户实时参与互动,可以通过服务端发送的互动内容到客户端,客户端在播放器浮层上进行渲染显示,但是在现有央视体育客户端的支撑系统中,服务端消息分发通道和直播流通道是分开的。直播流经过编解码、CDN 分发,最终到达每个用户,由于用户之间地域和网络环境的不同,观看到的直播画面也存在时间差异,而服务端对于客户端的消息下达则相对一致,所以客户端收到服务端推送的信息和直播流最终到达的时间会出现不一致的情况。

为了解决这一问题,在技术验证阶段,我们在直播流编码设备之前,通过定制化开发开源OBS 推流软件,在直播流中嵌入服务器时间戳的SEI 信息,实现了同步功能。

image.png

在编码环节,编码器通过识别直播流参数中的特定Payload Type 值,来判断直播流是否携带SEI 信息。由于信源中的关键帧,在编码器中不是关键帧,对应的是信源中的PB 帧,经过特殊编码处理,使转码后的SEI 信息精确对应到关键帧的前部,再将uuid 参数中的值透传到三个码率的直播流中,完成带SEI 信息的多码率编码。

该技术方案通过央视体育客户端在2021 年2 月份的中国男子篮球职业联赛中得到了验证。业务人员在互动系统中绑定相应直播赛事,录入互动题目,并可配置奖品。在直播中,编辑通过监看OBS 推流软件的比赛画面,当比赛内容适合进行实时互动时,在互动系统中推送题目信息,而客户端用户则可以精确地收到题目并参与后续互动。具体呈现效果如图2。

image.png

该技术方案虽然实现了新媒体直播实时互动,但是在多次的实际操作中,也发现了一些问题和弊端。一是OBS 软件的部署环境为Windows 系统,新媒体直播中运行的稳定性欠佳;二是受OBS 软件应用限制,单台设备最大并发仅支持一路,不能满足后续广泛使用的并发需求。

三 新媒体直播实时互动技术方案

在完成前期验证与操作实践后,面对发现的若干问题,对技术方案进行了优化调整,最终确定在编解码过程中完成SEI 信息的嵌入,如图3 所示。简单来说就是在编解码过程中将当前服务器时间戳以字符串形式放入H.264 Access Unit 中传输,每隔1 秒为直播流插入一个关键帧,赋予直播流连续时间码,经过直播链路传输分发至客户端;同时,具体赛事信息则通过服务端与客户端长链接通路下发,每条赛事信息中也同样包含当前服务器时间,业务人员通过监看编码环节画面下发推送指令,编码器嵌入时间与服务器下发消息时间保持一致。对于客户端来说,首先收到服务端赛事信息与下发时间,在直播观看过程中播放器解析直播流中每个关键帧的时间,一旦匹配到与服务端互动指令相同时间,则在客户端中渲染UI 信息界面呈现给用户。下面对几个重要的环节进行具体介绍。

image.png

1. 直播层

对于直播链路层,技术处理相对比较简单,在编码器编码环节将当前服务器时间嵌入直播流中,同时完成面向客户端目标码率的一出三路信号编码,保证每个码率中都嵌有时间戳参数的SEI 信息。

2. 互动层

互动系统服务端负责下发包含时间戳的赛事信息,使用WebSocket 与用户进行通讯,用户进入直播页观看直播时建立连接,用户退出直播时断开连接。客户端和服务端之间通过心跳机制保证连接的有效性。

此外,为了解决连接过程中因为网络等某些因素导致的长连接断开,还增加了断线重连机制,经过实践设置为每n+1 秒之后进行重连,n 是长连接断开的次数。

3. 播放器层

客户端播放器层的主要工作是完成直播流中SEI信息的解析,在播放器解码直播流数据的时候,将码流中的SEI 信息解析完成后,会把SEI 信息从播放器底层ffmpeg 层回调到ijkpayer 层,再从ijkplayer 层回调到上层客户端。在客户端内调用播放器的SEI 信息回调方法,监听直播流中实时解析的SEI 信息,客户端获取回调后SEI 信息中的时间值与接收服务端的互动指令时间值进行对比,从而判断执行相应UI 层的效果呈现。

在实际操作中,播放器的适配克服了一些技术难点,比如由编码器输出的直播流,SEI 信息类型语法结构较为复杂,造成解析算法也较为繁琐,需要放在播放器ffmpeg 应用层,即视频解码前解析。底层ffmpeg 解析SEI 信息的时机是在解复用阶段,会在同一时刻回调几条SEI 信息,SEI 信息与当前播放画面会不一致,导致不能完全利用ffmpeg 底层的SEI 信息解析框架。针对上述情况,我们对ffmpeg 进行了拓展,封装了自定义API 接口,传入AVPacket 结构体数据,最终解析出所需要的当前视频帧对应时间的hours、minutes、seconds 字段。

4. 呈现效果

此技术方案在东京奥运会期间,通过央视体育客户端进行了验证和实际呈现。奥运会赛事节奏紧张,在比赛期间根据数据统计显示中国热门夺冠场次播出时,用户关注量也在不断增加,夺冠热门运动员也是用户重要的关注点。业务人员在互动系统中提前绑定相应的直播赛事,并维护运动员信息。在直播过程中编辑根据赛事进展适时进行推送,用户在客户端中即可实时获取扩展信息。具体呈现效果如图4 和图5。

image.png

image.png

四 结束语

通过对SEI 信息在新媒体直播实时互动中的实际应用,尤其是在对抗性强、瞬息万变的体育赛事中实现了较好的互动体验,我们探索出在新媒体直播中与用户进行实时沟通、深度交互的全新方式,后续更可以衍生出答题、竞猜、票选以及扩展信息呈现等与画面内容和直播进程强相关的互动场景,从而更好地增强自身移动客户端的产品力,为用户带来更加丰富的新媒体直播体验。

转载请注明来源:《现代电视技术》 作者:中央广播电视总台 李英斌