体育赛事直播系统的实践之路 | 架构师实践日

编者按:直播越来越渗透于人们的日常生活,从体育赛事到日常运动都有视频直播的需求,而体育赛事直播有它的特殊性,包括:比赛视频等数据的采集、直播视频与赛事数据的同步、直播过程中精彩视频的实时自动剪辑、多路直播视频的同步及导播以及精彩赛事视频的制作等等,这些究竟是如何实现的呢?

本次架构师实践日邀请了上海慧体网络科技(简称慧体科技)的研发总监朱明亮,他在演讲中详细讲解了在智慧运动场上如何实现直播+赛事数据,并对所遇到的一些问题以及解决思路进行了阐述,下面是对他演讲内容的整理。







演讲者照片


朱明亮


上海慧体网络科技研发总监


擅长视频编解码、流媒体应用,目前负责视频整条产品线相关产品,包括:移动端推流客户端、播放器客户端、视频内容编辑制作客户端(PC)、直播软件导播台、后端视频服务(自动剪辑/自动贴片/自动录制等)。曾任 PPTV 研发经理,负责 PPTV 视频转码内核,参与开发 PPTV 媒资生产平台研发。


所谓智慧运动场,就是一套利用互联网科技、软硬件集成,实现体育场地升级的解决方案,它可以运用在篮球等一系列球类运动场中,通过摄像头实时捕捉运动员的技术动作以及跑位影像,可以实现场内屏幕直播以及场外网络直播,为草根运动者搭建一个可以展示自己的舞台。


而实质上,赛事直播便是智慧运动场中最不可或缺的一个组成部分。下面就是对体育赛事直播平台以及相关应用的详细介绍。



体育赛事直播平台系统架构



图 1


图 1


平台主要包含三大类服务,分别是:视频直播、视频点播以及赛事数据服务。图 1 是一个基本的系统架构图,它包含以下几个部分:


1、核心层


以重采集和轻采集为基础,构建了核心的引擎架构。


2、用户层


分为用户平台和内容开放平台。内容开放平台,开放内容和数据给一些第三方直播平台。


3、合作方


分为赛事开放平台和赛事工具开放两个部分,为合作赛事方提供赛事管理平台及视频加工软件包。


在赛事开放平台上可以做一系列的创建管理工作,如:球队创建、球队管理、赛事管理、联赛管理以及赛事组织内部工作管理。可以将赛事平台开放给全国各地的一些赛事组织,或者是一些比较优质的场馆主,并以城市合伙人的身份与他们进行合作。


赛事工具开放贯穿推流、直播、观看、赛后视频剪辑整个流程。直播过程中的视频处理尤为重要,包括直播画面上实时显示球队/比分贴片、自动剪辑精彩片段、显示球队/球员的技术统计贴片等。比如当比赛过程中某个人进球后,可以实现一分钟内将该精彩片段以及赛事详情(该球员名字、比分)进行显示,并且他的家人或朋友可以实时将该片段分享到微博或者微信。


4、内部平台


分为两部分,管理平台以及基础平台。



赛事直播各系统(平台)交互流程



图 2图 2


图 2 是系统各模块间的交互流程图。其中,左边是生产端(左上角是视频采集端、左下角是数据生产端),中间部分对赛事数据和视频进行处理,右边是消费端,用户可通过 App 或第三方平台(比如:Hupu TV)观看加工好的比赛。下面将对流程图各个过程(视频直播、点播)进行详细介绍。


图 2.1


图 2.1


图 2.1 是重采集。指的是在场馆端部署海康摄像头(一个摄像头监控一个方向,需要人工在后台进行导播,切换镜头)、Pixllot 自动跟拍摄像头(自动跟踪篮球或足球轨迹,生成实时画面,无须导播)以及地面系统,用来捕捉视频,之后会分别在场内和场外进行传播。场内传播主要是,将现场的精彩剪辑以及比分数据的变化,放映在现场安装的一个安卓的屏幕上;场外传播主要是,将采集的数据推流到 CDN ,并分发到各个客户端进行直播。


图 2.2


图 2.2


图 2.2 是轻采集的相关流程。轻采集是指在没有相关设备部署及覆盖的场馆内,进行数据采集的一种方式。比如,当没有上述的设备进行数据采集时,可以利用手机进行数据采集,之后将数据流推送到 CDN ,用手机进行直播。


图 2.3


图 2.3


图 2.3 是数据生产过程,包括赛事平台和赛事工具(记分工具),比如说进球、犯规、换人等事件都会记录在云服务平台上。


图 2.4


图 2.4


图 2.4 是一个对视频做处理加工的过程,分为以下几个部分:



  • 自动录制:将推流和加工过的流进行保存,以便在赛事结束之后给观众提供一个全程回放的视频。

  • 自动剪辑:实时提供精彩片段剪辑(基本上在事件发生一分钟之后就可以制作出来)。

  • 自动导播:推出的流是干净的,当中没有添加赛事数据,所以需要自动导播加流。从 CDN 拉流(拉取数据)并将一些赛事数据全部叠加到上面,再推流到 CDN ,提供给 App 访问。

  • 人工导播:当使用两个海康摄像头做赛事采集时,需要进行人工切换,此时可以使用人工导播软件进行镜头切换,之后所做的工作内容与自动导播的工作内容一致,这里不做赘述。

  • 人工剪辑:赛事结束之后,假如赛事组织方对赛事比较重视,需要提供视频剪辑的服务,那么此时,便会由专人对视频的精彩部分进行剪辑(如加背景音乐、慢镜头、精彩镜头拼接)。


图 2.4 右侧是消费端,当中包含 App、H5 以及一些第三方直播平台,用于给普通观众提供赛事内容的观看。



视频技术实践



下面将介绍视频直播中的实践和存在的问题。其中包含直播流绝对时戳、实时赛事贴片、实时自动剪辑、软件导播、视频剪辑几个部分。


1、直播流绝对时戳


视频流的采集传输系统以及赛事事件和比分的采集系统(由独立的 App 记录赛事数据,上传到云服务中)是两个完全独立的系统,所以当进行实时赛事贴片时,要保证这两个系统的同步,就一定要做一个参考点,即直播流的绝对时戳。


2、实时赛事贴片



  • 视频与事件同步


视频与事件同步,指的是在实时自动剪辑、软件导播、离线视频剪辑这些场景下,所遇到的一些问题。首先,音视频时戳是不能复用的,因为从 CDN 拉的直播流,时戳都会被重写,因此需考虑采用别的方式。采取的方案是,通过 RTMP 协议的 0 x 12 数据包来发送绝对时戳, 8 是音频数据包,9 是视频数据包,0 x 12 是数据包,可传送文本数据。具体方法是每隔 1 秒发送一个绝对时戳数据包,且与同时刻的视频帧一起发送,这样就可以确定收到的视频帧的绝对时间,确定了绝对时间之后,就可以将其与 App 记录的现场事件,根据绝对时间进行同步。


图 3


图 3



  • 比分及事件贴片


图 3 左上角是视频采集端,左下角是赛事采集。中间有一个贴片服务器,同时拉取视频流和赛事事件,根据绝对时间戳做对比(什么时候比分发生变化)更新贴片。


图 4


图 4


图 5


图 5


图 4 及图 5 是比分贴片的效果图,其中图 4 右下角是篮球赛的比分贴片,图 5 左上角是足球赛的比分贴片。贴片的位置是固定的,比分会根据赛况自动更新,这两个贴片是根据现场执行人员记录的数据(事件发生时间)所做的贴片。


图 6


图 6


图 7

图 7



  • 统计贴片


当篮球小节结束,或者足球半场结束时,往往会弹出统计数据。图 6 与图 7 是实时统计贴片,记录的是在某个时间点前,所有球员的比分变化,帖片中各个球队的背景颜色与现场各队球服颜色一一对应,这样做的目的是为了优化用户体验,观众在观看比赛时,可以轻松将比分与队伍对应。


3、实时自动剪辑


对于实时自动剪辑,遇到的问题是事件之间间隔时间少,则会导致剪辑片段不完整。针对这种情况,采用的方法是,在剪辑之前先缓存部分实时视频(两分钟左右),进行剪辑时,实质上是对缓存的内容进行剪辑,然后随着时间的流动慢慢对数据进行更新(数据是一帧一帧进行更新的)。


图 8


图 8


图 8 是自动剪辑在 APP 当中的展示,可以实时观看。图下方的两个片段是较为简单的自动剪辑,整个过程大概在一分钟内可以完成;图上方的两个集锦片段是根据赛事结束后的统计所制作的,当某个球员的精彩片段超过三个时,系统会自动生成一个精彩集锦,并为其添加一个封面图(包括球员的名字、对阵双方、事件发生的时间点等),再编码成一段视频供观众观看,这个过程需要耗费两分钟左右的时间。


4、软件导播



  • 切换花屏


软件导播时会遇见切换花屏的问题,比如要保证两种剪辑画面同步时,频繁切换就可能会导致花屏。从小时戳切换到大时戳,不会产生问题,反之则会花屏,所以一定要对音视频时戳进行处理,保持时戳线性单调递增。



  • 多画面同步


软件导播往往会遇见多画面同步的问题。因为各个直播流彼此之间相互独立,所以要进行同步,没有其他手段,必须使用绝对时戳。


以当前直播流的绝对时戳为准,将当前绝对时戳与其他两路直播流做对比,如果直播流一领先,播放时间领先当前直播流,那么此时可以增加缓冲时间,以保证直播流同步;如果直播流二落后,播放时间落后当前直播流,那么此时可以减少缓冲时间,以保证直播流同步。做缓存增减的前提是在直播前必须要建立一段缓存,保证导播时会缓存十秒左右时间去做缓存增减,这样一来,就可以做到多镜头(画面)同步。


图 9图 9


导播人员可以点击某个画面进行切换,而当中场休息或者小节休息时,也可以插播一些其他镜头。图 9 右上角是 APP 直播画面的预览。


5、视频剪辑(多格式拼接)


离线剪辑时会遇到一些问题,如多格式视频拼接等。一开始,编辑人员会将很多精彩片段剪辑并保存下来。在剪辑过程中,有两种方式,一种是利用产生的事件做自动剪辑,另一种是手动剪辑;之后会对这段视频按需添加片头、片尾以及转场,此时可以在电脑本地选择一些合适的视频进行添加,由于添加的这些视频片段与所需剪辑的视频的格式不一致,不能直接进行拼接,针对这种问题,解决方案是,编辑内核采用转码拼接方式,编码器不关闭,解码器轮换文件解码。


图 10图 10


图 10 是进行离线剪辑时的编辑界面。


以上就是直播在体育直播草根运动场景中的应用实现。




十二期 架构师实践日900x500

「七牛架构师实践日」——这里只谈架构


七牛架构师实践日是由七牛云发起的线下技术沙龙活动,联合业内资深技术大牛以及各大巨头公司和创业品牌的优秀架构师,致力于为业内开发者、架构师和决策者提供最前沿、最有深度的技术交流平台,帮助大家知悉技术动态,学习经验成果。


七牛架构师实践日第十二期【泛娱乐+直播 技术最佳实践】将于 9 月 3 日与大家在 厦门 见面,目前活动正在火热报名中,点击下方「阅读原文」了解更多信息,期待你的参与。