video on demand on aws deployment cn€¦ · amazon dynamodb 表,以及会通过 amazon simple...

15
视频点播解决⽅案 部署⼿册 肖培庆 版本:v4.3 最后更新时间: 2020 7 Copyright (c) 2020 by Amazon.com, Inc. or its affiliates.

Upload: others

Post on 17-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案

部署⼿册

肖培庆

施 乔

版本:v4.3

最后更新时间: 2020年 7⽉

Copyright (c) 2020 by Amazon.com, Inc. or its affiliates.

Page 2: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 1 of 14

背景介绍

Amazon Web Services (AWS) 让⼴播从业者和媒体内容⽣产者能够⾃动化媒体⽣产流

程、内容分发的流⽔线和将媒体内容分发给全国乃⾄全世界的受众。

AWS 提供给客⼾很多性价⽐很⾼的⽅法来利⽤ AWS 云服务提供视频内容给全世界的

⽤⼾。这些⽅法让你可以动态地扩容任何视频处理、视频分发和存储的服务。 AWS

Elemental MediaConvert 可以将您的媒体⽂件从源格式转码为在智能⼿机、平板电脑

和 PC 上能够回放的版本。Amazon CloudFront 可以加速视频内容分发到最终⽤⼾。

客⼾可以借助这些服务来构建⼀个按需的⾼可⽤、弹性架构(并且是⽆服务器架构)

来接收、存储、处理和分发这些视频内容。

视频点播解决⽅案可以⼀键式部署所有需要的 AWS 服务来创建⼀个弹性、分布式的视

频点播⼯作流。整个解决⽅案包括了 AWS Elemental MediaConvert,CloudFront,

AWS Step Functions(能够串联不同 AWS Lambda 服务的状态机,AWS Lambda能

够在不需要创建和管理服务器的情况下运⾏我们的代码)和 Amazon S3 服务(弹性、

可靠,低延迟的对象存储)。这个解决⽅案还利⽤了 Amazon DynamoDB 来记录源⽂

件和⽬的⽂件的元数据信息以及处理状态,利⽤了 Amazon CloudWatch 来追踪编码

任务,Amazon SNS 来发送通知(包括任务提交,转码状态,失败通知)。

该视频点播⽅案将输⼊的源视频⽂件,经过处理和编解码,分⽚等操作,最终通过

CloudFront CDN 服务在最终⽤⼾的不同设备上进⾏分发。⽤⼾也会根据⾃⼰终端设备

的分辨率,⽹络带宽进⾏视频质量的⾃适应,⾮常适合希望在全国范围内构建⾃⼰在

AWS 上的视频处理流,并且整个⽅案可以根据⾃⼰的需要做⼀些定制化设置。

Page 3: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 2 of 14

架构与⼯作原理

架构图与资源

部署此解决⽅案将在由西云数据运营的 AWS(宁夏)区域中构建以下环境。

架构描述:

本⽅案中 AWS CloudFormation模板会创建⼀个视频处理的⼯作流。当我们仅上传⼀

个视频⽂件的时候,在 AWS CloudFormation 模版⾥⾯预定义好的⼀些转码模版会应

⽤到源视频上进⾏转码;如果我们同时上传视频⽂件和 metadata ⽂件,metadata ⽂

件⾥⾯定义的转码参数将会覆盖默认参数属性,应⽤到该视频⽂件上。因此我们可以

针对每⼀个⽂件应⽤不同的转码选项。两种触发模式在创建 CloudFormation 模版的

时候可以选其⼀,具体操作在下⾯章节有详细介绍。

服务细节解读:

编码选项

视频点播解决⽅案使⽤了 AWS Elemental MediaConvert ⼯作模版来定义不同的编码

选项。默认情况下,这个⽅案创建了 3种定制化的模版,模版内包含了 UHD,HD和

Page 4: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 3 of 14

SD的输出。每⼀个模版会单独创建 H.265或 H.264 的MP4, HTTP Live Streaming

(HLS) 和 Dynamic Adaptive Streaming over HTTP (DASH) ⽂件输出。

整个⼯作流在执⾏的时候会⾃动选择三种模版中的其中⼀个模版,这个选择是基于源

视频⽂件的分辨率的。不同分辨率的源视频会触发不同的转码模版,但我们也可以基

于⾃⼰的实际需求,对这个做⼀些调整。

Quality-Defined Variable Bitrate 模式

本解决⽅案是基于 AWS Elemental MediaConvert Quality-Defined Variable Bitrate

(QVBR) 来进⾏编码的,因此对任何格式的源视频⽂件都能做到⼀致的、⾼质量的转

码,并且输出最⼩的⽂件⼤⼩。使⽤ QVBR 编码,编码器会对视频内的每⼀个部分使

⽤最适合的⽐特数,保证视频的质量达到设置的要求。如果启⽤了 QVBR,则对所有

输⼊的视频源都起作⽤,并且我们也建议启⽤这个功能。

Frame Capture 选项

本解决⽅案可以给源视频⽂件创建若⼲的截图⽂件,如果这个功能打开了,那么视频

内的画⾯每 5秒钟都会被捕获⼀次,并且捕获的图⽚⽂件会和其他输出⽂件放到同⼀

个 Amazon S3 存储桶内。

错误处理(Error Handling)

整个⽅案的⼯作流部分,包括 AWS Lambda 函数的处理过程以及 Amazon

CloudWatch Events 都配置了错误处理的 Lambda 函数。如果在⼯作流的任何

Lambda 执⾏部分出现了错误,或者 AWS Elemental MediaConvert 转码出现了错

误,这个错误处理的 Lambda 函数都会被执⾏,并且它会将错误的详细信写⼊到

Page 5: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 4 of 14

Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon

SNS) 发送邮件到管理员的邮箱。

详细⼯作流

整个⽅案涉及了 3个⼦⼯作流,分别是 Ingest,Process 和 Publish。下⾯详细解释下

每⼀个⼦⼯作流的参数和细节。

Ingest ⼦⼯作流

仅有视频的⼯作流

当⼀个新的 MP4,MPG,M4V,M2TS 或者 MOV 格式的视频⽂件上传到 Amazon S3

的源存储桶,Lambda 函数会触发 Ingest ⼦⼯作流。在这个过程中,源视频的详细信

息将会添加到 Amazon DynamoDB 表内,这些信息是通过开源的MediaInfo 获取的。 * 源⽂件的后缀必须是⼩写⽽且不能包含空格,建议尽量不使⽤中⽂字符

Metadata ⽂件加视频的⼯作流

当⼀个新的 metadata ⽂件和源视频⽂件都上传到 Amazon S3 的源存储桶之后,⼀个

Lambda 函数将会触发 Ingest ⼦⼯作流。在这个过程中,metadata ⽂件,源视频⽂

Page 6: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 5 of 14

件,编码配置细节信息都会被写⼊到 Amazon DynamoDB 表中,源视频⽂件的信息也

是被⽤ MediaInfo ⼯具来获取。

* 您必须先上传源视频⽂件,再上传 metadata⽂件到 Amazon S3 存储桶中。

Metadata ⽂件内定义的参数将会覆盖整个堆栈预设的参数,这样可以让每⼀个⽂件都

有⾃⼰独特的⼯作流配置和转码配置。如果在Metadata⽂件内不做特殊定义的参

数,则会应⽤堆栈定义的默认参数。⽂件内的必要字段为 srcVideo,其他字段为可选

字段。

Metadata⽂件字段属性: { "srcVideo": "string", "archiveSource": "DISABLED|GLACIER|DEEP_ARCHIVE", "frameCapture": boolean, "srcBucket":"string", "destBucket":"string", "cloudFront":"string", "jobTemplate _2160p":"string", "jobTemplate _1080p":"string", "jobTemplate _720p":"string", "acceleratedTranscoding":"DISABLED|PREFERED|ENABLED", "enableSqs": boolean , "enableSns": boolean "jobTemplate":"custom-job-template", "InputRotate":"DEGREE_0|DEGREES_90|DEGREES_180|DEGREES_270|AUTO" }

以下有⼀个 JSON格式的metadata⽂件样本,该配置会覆盖默认的 archiveSource

参数和 frameCapture参数,使⽤ custom-job-template这个转码模版进⾏转码,并

且该配置最后应⽤到⽂件 example.mpg上。 { "srcVideo": "example.mpg", "archiveSource": "GLACIER", "frameCapture":false, "jobTemplate":"custom-job-template" }

Page 7: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 6 of 14

本⽅案也⽀持添加额外的元数据信息,⽐如视频标题,类⽬等希望最后存储到

Amazon DynamoDB 内的信息。

Processing⼦⼯作流

本⽅案使⽤源视频⽂件的⾼度和宽度来决定最终转码使⽤的模版,如果您还开启了

frame capture 功能,那么视频截图也会被添加到模版之中。最后,编码任务会创建好

提交给 MediaConvert,并且任务详情和状态也会同步写⼊到 DynamoDB中。

Publishing⼦⼯作流

当视频⽂件编码完成后,AWS Elemental MediaConvert 会给 Amazon CloudWatch

发送⼀个通知。这个通知会触发⼀个 AWS Step Function 的状态机,执⾏⼀系列函数

来验证输出结果,更新 DynamoDB表等。

当整个⼯作流程结束之后,Amazon SNS会发送⼀条通知到预配置的管理员的邮箱

中。如果您还启动了归档源内容这个选项的话,源视频⽂件会利⽤ Amazon S3 ⽣命周

期管理策略将⽂件转移到 Amazon S3 Glacier类型进⾏归档。

定制化

该解决⽅案使⽤了 AWS Step Functions 将整个⼯作流拆分为很多不同的独⽴步骤,每

⼀个步骤通过⼀个 Lambda 函数来执⾏。我们可以通过⾃⼰的点播需求来定制化或者

延伸整个⼯作流的内容。举个例⼦,我们可以增加图像处理的流程,修改转码的参数

和模版,或者在 Amazon DynamoDB内添加⼀些⾃定义的参数。

每⼀次⼯作流激活的时候,该⽅案都会⽣成⼀个唯⼀的 36位标志符(GUID)。这个

标志符会作为 Amazon DynamoDB的主键和 AWS Step Functions的执⾏ ID。这个 ID

Page 8: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 7 of 14

会在贯穿到整个⼯作流中,也⽅便我们在整个⼯作流根据这个 ID来进⾏添加/删除步

骤。

预设的转码模版

默认情况下,视频点播⽅案根据输⼊源视频的视频⾼度来选择需要的转码模版,默认

的 3个模版是:

• MediaConvert_Template_2160p:

o 3 个mp4 格式的⽂件输出,包括了 HEVC 和 AVC编码 ,分辨率从

2160p 到 720p

o 8 个 HLS 格式的⽂件输出, AVC编码,分辨率从 1080p 到 270p

o 8 个 DASH 格式的⽂件输出,AVC 编码,分辨率从 1080p 到 270p

• MediaConvert_Template_1080p:

o 2 个mp4 格式的⽂件输出,AVC编码,分辨率从 2160p 到 720p

o 8个 HLS 格式的⽂件输出,AVC编码, 分辨率从 1080p 到 270p

o 8 个 DASH 格式的⽂件输出,AVC 编码,分辨率从 1080p 到 270p

• MediaConvert_Template_720p:

o 1 个mp4格式的⽂件输出, AVC 编码,720p分辨率

o 7 个 HLS 格式⽂件输出,AVC编码, 分辨率从 720p 到 270p

o 7 个 DASH 格式⽂件输出,AVC编码,分辨率从 720p 到 270p

默认情况下,该⽅案启⽤ Quality-Defined Variable Bitrate (QVBR) 模式进⾏编码,并

且具体⽐特率和分辨率设置按照以下的推荐值进⾏。

Resolution Maximum Bitrate QVBR Quality Level 2160p 20,000 Kbps 8 1080p 8,500 Kbps 8 720p 6,500 Kbps 8 720p 5,000 Kbps 8

Page 9: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 8 of 14

Resolution Maximum Bitrate QVBR Quality Level 720p 3,500 Kbps 7 540p 3,500 Kbps 7 360p 1,200 Kbps 7 360p 600 Kbps 7 270p 400 Kbps 7

您也可以在 AWS Elemental MediaConvert ⾥⾯做定制化的设置。

快速部署视频点播解决⽅案

本⽂的步骤可以运⾏在由西云数据运营的 AWS(宁夏)区域,如果您在使⽤除由西云

数据运营的 AWS(宁夏)区域和光环新⽹运营的 AWS(北京)区域以外的区域,请

参考该⽹站上的内容。

前提条件

1. ICP 备案过的域名。在中国⼤陆地区部署的如何⽹络服务,都必须使⽤经过

ICP备案的域名。

2. 与域名匹配的 SSL 证书。通过 AWS CLI 上传 SSL 证书到 AWS IAM, 并获得该

证书的 ID。有关具体参考步骤,请参考此处。

开始启动堆栈

点击以下链接,打开 AWS管理控制台(如果还没登录会先跳转到登录⻚⾯,登录后进

⼊模板启动⻚⾯)。

Page 10: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 9 of 14

配置启动参数

点击下⼀步,进⼊详细参数的配置⻚⾯。⾸先输⼊⼀个堆栈的名称,并且填写主要的

参数,填写完成后,点击下⼀步。

配置图例如下:

Page 11: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 10 of 14

下表展⽰的是每⼀项参数的含义,这些参数随时可以更新。

参数 默认 描述

1 Domain Name 需要输⼊ 输⼊⼀个已经 ICP 备案过的域名,因为

Amazon CloudFront 服务需要通过 ICP 备

案过的域名进⾏内容分发。该域名将作为

最终不同格式视频输出的服务地址。

2 SSL Certificate ID

from IAM 需要输⼊ 和以上输⼊域名相关的 SSL 证书 ID,有

这个证书最后的服务才能以 HTTPS 的形

式被访问。⾸先需要通过 IAM 上传⾃定义

证书,然后可以通过 AWS CLI 上获取

Page 12: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 11 of 14

ID,或者在创建 CloudFormation 的界

⾯,选择⾃定义 SSL 证书,然后在下拉框

复制您证书对应的 ID。

3 Administrator

email address 需要输⼊ 转码的状态信息会通过 SNS 服务发送到

这个邮箱地址。

4 Workflow trigger VideoFile 触发⼯作流的⽅式,选项有 VideoFile 和

MetadataFile。选择前者则单个视频⽂件

作为触发;选择后者则视频⽂件加

Metadata ⽂件作为触发。

5 Archive source

content

false 使⽤ Amazon S3 ⽣命周期管理策略,将

存放源视频的 S3 桶内的⽂件在创建 1 天

之后⾃动归档到 S3 Glacier ⽂件存储上。

6 Enable Frame

Capture

false 设置是否打开屏幕截屏功能。

7 Enable QVBR true 是否开启 QVBR 编码选项。

参数设置完成后,点击下⼀步,并在下⼀步的配置堆栈选项保留默认,直接点击下⼀

步。

授权 IAM并创建堆栈

在最后的审核⻚⾯中,勾选最下⽅的【我确认,AWS CloudFormation 可能创建 IAM

资源。】选择框,因为这个解决⽅案需要调⽤ CloudWatch、Lambda、ECS Fargate

等资源,需要相应的 IAM权限⽀持。接下来点击【创建堆栈】,开始堆栈的创建。

Page 13: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 12 of 14

等待堆栈创建成功

您可以在 AWS CloudFormation控制台的【状态】列中查看堆栈的状态,并点击右上

⽅的刷新按钮更新状态。

⼤约五分钟内,您可以看到堆栈状态变为 CREATE_COMPLETE,此时堆栈创建成功。

Page 14: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 13 of 14

查看堆栈资源

选中堆栈后短则【资源】标签,可以看到这个堆栈启动的所有资源,如果您感兴趣可

以⼀⼀点进去查看,了解每⼀部分的功能。如果我们输⼊过滤条件“bucket”就可以

看到我们的源/⽬ S3存储桶信息,之后我们只需要往 Source的这个 S3存储桶放⼊我

们的源视频⽂件(或源视频⽂件加Metadata⽂件)就可以⾃动触发整个转码⼯作流

了。

接收邮件订阅

在堆栈创建的过程中,我们配置的管理员邮箱将会收到⼀封邮件,我们需要点击邮件

的“Confirm subscription”按钮来确认订阅。这样我们之后做的每⼀个视频的转码任

务状态都会有邮件发送到这个邮箱地址。

Page 15: Video on Demand on AWS deployment cn€¦ · Amazon DynamoDB 表,以及会通过 Amazon Simple Notification Service (Amazon SNS) 发送邮件到管理员的邮箱。 详细⼯作流

视频点播解决⽅案 August 2020

Page 14 of 14

点击后显⽰成功订阅。

⼩结

综上所述,使⽤视频点播解决⽅案,可以搭建⼀个⽆服务器的转码⼯作流程,将我们

输⼊的单个视频⽂件经过转码,视频分⽚等操作输出不同的视频格式,不同的分辨率

和码率,并且可以让客⼾端⾃适应最适合的分辨率/码率信息进⾏播放。客⼾端将会从

全国的 CDN 分发⽹络下载视频(分⽚)⽂件。整个⽅案⼀键部署,⽅便快捷,并且因

为是⽆服务器的模式,没有固定成本⽀出。