作者 | 西流、筱姜



"北京冬奥会在开赛的第四天便成为了历史上收视最高的一届冬奥会,其转播内容总生产量将达 6000 小时,超过平昌冬奥会的 5400 小时。关注北京冬奥会的人群比往届都多,北京冬奥会在全球收视预计将超过 20 亿人次。" 这是奥林匹克广播服务公司(OBS)首席执行官伊阿尼斯·埃克萨科斯在 2 月 10 日发布的一组数据。毫无疑问,北京冬奥是近一个月世界网络中的 "顶流"。

全球观众对观看北京冬奥会赛事的热情高涨,让赛事转播视频备受瞩目。通过浏览赛事亮点缩略图,观众可以在众多转播视频中快速找到自己感兴趣的内容。对于转播商来说,如何简单快速的对海量赛事直播视频做实时处理,在不同时间点上生成缩略图是一个难题。

Serverless 支撑赛事转播锁定冬奥亮点

视频缩略图是在视频中某一帧动画的缩略图,相当于将视频的封面或其中一帧的画面内容转换成了图片文件,选取的视频缩略图能够把视频中亮点画面突出显示,快速抓住用户眼球,提高点击播放率,赛事视频缩略图与普通视频缩略图有些不同,需要对海量视频做更为快速实时的抓取。

函数计算支持的客户需要对北京冬奥会的海量比赛直播视频进行实时处理,在直播视频里的不同时间点上做截屏(专业术语 "视频图片采集"), 客户的需求如下:

  • 需要定时事件触发截屏操作

  • 客户只想集中精力在具体的逻辑开发, 核心视频截图逻辑代码量不大, 需要快速完成开发

  • 客户不希望管理部署虚拟机/物理机,希望越简单越好

  • 客户需要这个核心业务逻辑具有弹性高可用, 免运维

通过使用阿里云函数计算(FC),用户开发了视频截图的核心业务代码,开发成本低,一键部署,即得到了一个弹性高可用免运维的直播视频截图服务,帮助实现冬奥视频亮点实时抓取。

图片仅展示视频缩略图效果

其实早在 2021 年东京奥运会期间, 就有转播公司通过阿里云函数计算(FC)视频缩略图服务完美支撑直播赛事实时锁定精彩亮点了。在奥运会的 15 天期间内, 发生了数千万次函数调用, FC 保证了该服务弹性高可用。

稳定应对爆发式峰值流量,实时进行多媒体处理

公有云 Serverless 架构具有应对爆发式峰值流量的优点。函数计算是阿里云提供的 Serverless 计算平台,函数计算可以根据请求量动态分配执行环境,毫秒级调度计算资源,确保在负载高时保持稳定的延时,在负载低时有较高的资源利用率,且只会对代码运行时使用的计算资源付费。函数计算还可以与对象存储服务无缝集成,可以方便地对存储在对象存储中的图片进行实时处理。

1、函数计算视频直播截帧服务

在北京米连科技有限公司旗下相亲交友产品伊对 App 的业务场景里面,视频直播是最为重要的环节,基于视频直播这个骨架,可以融入线上红娘等多类创新业务模式,这也对视频直播的内容安全提出了极高的要求。不论是自身通过 AI 技术对视频直播内容进行智能分析,还是应对监管的要求,都需要在每一路视频直播流开始后,根据固定频率对视频进行截帧,并通过统一的审核服务对截帧生成的图片进行处理。

在这个需求里面,截帧服务承担着关键职责,这个服务不仅需要通过 FFmpeg 命令对每一路直播视频流进行截帧操作,还需要将生成的图片保存到对象存储 OSS,并将截帧信息写入到 Kafka。这样下游的截帧服务就能从 Kafka 上拉取截帧信息,并从截帧信息中得到图片在 OSS 中的地址,从而完成对于图片的审核。在这个架构中,引入 Kafka 是为了通过异步处理机制缓解审核服务在业务高峰期的负载。



伊对 App 使用函数计算,用户无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算会自动准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。借助函数计算 FC,可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。之前截帧业务的架构只需要做很小的调整,就能迁移到函数计算平台上来,以享受 Serverless 的价值。

2、函数计算图片实时处理服务

以新浪微博为例,业务的急速增长对微博的原有技术体系造成了极大的冲击。如何在用户量飞速增长、热点事件流量激增及请求有明显波峰波谷的情况下,既不影响用户体验,又不增加服务器成本投入是微博开发人员的当务之急。

函数计算的弹性扩容、事件触发、按量付费的特性与微博一拍即合。新浪微博决定使用函数计算部署图片处理业务。

新浪微博使用函数计算的弹性扩容、事件触发、按量付费的特性部署图片处理业务,将用户上传的图片存储到对象存储中,编写函数实现个性化的图片处理。当微博的用户通过客户端获取图片时,请求通过阿里云 CDN 回源到函数计算,函数从对象存储中下载原图,根据客户端类型(比如不同的手机型号)实时处理成预期规格的图片,并将结果图片返回, 极大减少存储成本。

函数计算毫秒级伸缩计算资源确保应用在热点事件发生时仍能保证稳定的延时,用户体验完全不受访问次数的影响。通过函数计算运行图片处理服务,微博实现了持续的成本节省。再也不需要为平滑处理业务高峰带来的流量激增而提前预留大量闲置机器资源,同时由于不需要维护复杂的机器状态,工程师可以集中精力与产品团队合作增加业务价值,而不是花时间管理基础设施。

总结

Serverless 技术毫无疑问将会承担更多的责任,让用户更快更好的构建应用。使用 Serverless 架构可以覆盖很多场景,这里只是介绍了几个图片处理的场景。Less is more 把事情交给可靠的平台(比如云厂商)去做,让开发者可以更加聚焦自身的核心业务价值,是 Serverless 一直所推崇的理念。

(END)

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

极速生成缩略图,Serverless 支撑赛事转播锁定冬奥亮点的更多相关文章

  1. C# webform上传图片并生成缩略图

    其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...

  2. phpcms v9图片生成缩略图变成黑色解决方法

    今天客户反映,上传的图片生成缩略图有的图片变成黑色,出现问题就百度了一下,有不少网友也遇到这样的问题,但是官方论坛也没有给出解决办法,那还得靠自己解决了,于是就研究phpcms v9 图片压缩代码.打 ...

  3. ngx_image_thumb模块生成缩略图

    ngx_image_thumb是nginx中用来生成缩略图的模块. 编译前确定已经安装了libcurl-dev libgd2-dev libpcre-dev gd-devel pcre-devel l ...

  4. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  5. .net又一个生成缩略图的方法,不变形

    生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 /// <summary> /// 为图片生成缩略图 by 何问起 /// ...

  6. yii php 图片上传与生成缩略图

    今天需要做图片上传与生成缩略图的功能,把代码进行记录如下: html 视图              ($pic_action_url = $this->createAbsoluteUrl('h ...

  7. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  8. 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条

    不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...

  9. 使用AVFoundation仅仅生成缩略图,不进行播放视频(本地和网络文件都可以创建视频缩略图)

    使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用 MPMoviePlayerController就有点大材小用了.其 ...

  10. ASP.NET生成缩略图的代码

    01.        // <summary> 02.        /// 生成缩略图 03.        /// </summary> 04.        /// &l ...

随机推荐

  1. 从物理机到K8S:应用系统部署方式的演进及其影响

    公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 概述 随着科技的进步,软件系统的部署架构也在不断演进,从以前传统的物理机到虚拟机.Docker和Kubernetes,我们 ...

  2. java如何导入导出excel

    在Java中,可以使用多种方式导入和导出Excel文件.下面将详细介绍几种常见的方法及其实现步骤: 1. Apache POI库: Apache POI是一个开源的Java库,提供了许多类和方法用于处 ...

  3. java协程操作mysql数据库

    我的项目: nanshaws/nettyWeb: 复习一下netty,并打算做一个web项目出来 (github.com) 最近在项目中分别添加了虚拟线程操作mysql数据库,和用协程操作mysql数 ...

  4. [P7880][Ynoi2006] rldcot

    [Ynoi2006] rldcot 题目描述 给定一棵 \(n\) 个节点的树,树根为 \(1\),每个点有一个编号,每条边有一个边权. 定义 \(dep(x)\) 表示一个点到根简单路径上边权的和, ...

  5. TCP连接断开:为什么要挥手四次

    本文分享自华为云社区<解密TCP连接断开:四次挥手的奥秘和数据传输的安全>,作者: 努力的小雨 . TCP 连接断开 在当今数字化时代,互联网已经成为了人们生活中不可或缺的一部分.而在互联 ...

  6. CH395实现主动ping对端功能(代码及说明)

    目录 1.PING原理 1.1简介 1.2协议 1.3通信流程 2.代码解释 3.工程链接 PING原理 1.简介 PING是基于ICMP(Internet Control Message Proto ...

  7. 换热站数字孪生 | 图扑智慧供热 3D 可视化

    前言 换热站作为供热系统不可或缺的一部分,其能源消耗对城市环保至关重要.在双碳目标下,供热企业可通过搭建智慧供热系统,实现供热方式的低碳.高效.智能化,从而减少碳排放和能源浪费.通过应用物联网.大数据 ...

  8. 【scikit-learn基础】--『监督学习』之 LASSO回归

    LASSO(Least Absolute Shrinkage and Selection Operator)回归模型一般都是用英文缩写表示,硬要翻译的话,可翻译为 最小绝对收缩和选择算子. 它是一种线 ...

  9. MySQL5.7允许远程root访问

    MySQL5.7允许远程root访问 登录你的服务器MySQL mysql -u root -p MySQLroot密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@' ...

  10. ElasticSearch之Close index API

    关闭指定的索引. 索引关闭之后: 停止对读.写操作的响应. 停止检索操作的响应. 在索引关闭前,允许执行的操作,关闭之后均不允许执行. ElasticSearch取消对索引的相关维护操作,包含内存中的 ...