作者 | 西流、筱姜



"北京冬奥会在开赛的第四天便成为了历史上收视最高的一届冬奥会,其转播内容总生产量将达 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. Tomcat 配合虚拟线程,一种新的编程体验

    Java 21 在今年早些时候的 9 月 19 日就正式发布,并开始正式引入虚拟线程,但是作为 Java 开发生态中老大哥 Spring 并没有立即跟进,而是在等待了两个月后的 11 月 29 日,伴 ...

  2. Quartz核心原理之架构及基本元素介绍

    1 什么是Quartz Quartz是一个作业调度框架,它可以与J2EE和J2SE应用相结合,也可以单独使用.它能够创建多个甚至数万个jobs这样复杂的程序,jobs可以做成标准的java组件或EJB ...

  3. springMvc_快速入门

    概念:是一种基于Java实现mvc模型的轻量级web框架 优点:使用简单,开发便捷    灵活性强 总体来说springMvc就是来替代servlet的一种工具 快速入门: 1.创建maven-web ...

  4. Object.defineProperty用法

    1.能干啥? Object.defineProperty()可以给传入的对象动态的添加或修改属性 2.怎么玩? Object.defineProperty(obj,prop,desc)它有三个参数: ...

  5. SpringBoot事件机制

    1.是什么? SpringBoot事件机制是指SpringBoot中的开发人员可以通过编写自定义事件来对应用程序进行事件处理.我们可以创建自己的事件类,并在应用程序中注册这些事件,当事件被触发时,可以 ...

  6. SpringBoot整合SpringSecurity实现前后端分离认证授权

    1.什么是SpringSecurity? Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架.它实际上是保护基于spring的应用程序的标准. Spring Securi ...

  7. NetSuite 开发日记:批量增删改

    一.批量插入/创建 使用 record.create() 插入数据时,一次只能插入一条,有多条数据需要插入时只能通过循环的方式,这样效率非常慢,耗时会随着数据量的增大而呈线性增长,有一种巧妙的方式可以 ...

  8. Date、正则表达式练习

    Date.正则表达式练习 package com.guoba.date; import java.text.SimpleDateFormat; import java.util.Calendar; i ...

  9. 2023.3 Idea配置Tomcat环境

    tomcat配置 下载tomcat 先到官网(按住Ctrl再左键点击直接打开官网)下载64位的tomcat,网速慢就用魔法下 创建项目.模块 打开idea(我用的是最新的idea的专业版,ui有点变化 ...

  10. DDD落地实践-架构师眼中的餐厅 | 京东云技术团队

    本文以餐厅场景为叙事主线,以领域驱动为核心思想,结合架构设计与功能设计方法论.是从领域分析到落地的全过程案例,内容偏重于落地,因此不乏一些探讨,欢迎指正. 文章较长.全程干货.耐心读完.必有收获. 本 ...