亚马逊AWS官方博客
使用AWS 媒体服务构建全球直播解决方案
作为全球云服务的领导者,AWS始终在创新的路上飞驰,仅2017年一年AWS就发布了1300多项新的服务、功能或者特性,这其中就包括在2017年reInvent上发布的5个全新的媒体服务,MediaConvert, MediaLive, MeidaPackage, MediaStore和MediaTailor,这些完全托管的服务,使得用户可以在云中轻松构建具有广播品质的可靠视频工作流。用户在构建互联网视频,OTT视频业务的时候直接在AWS控制台上即可启动直播,转码,存储,广告插入等广播级的业务流程,可以按照使用量即用即付,随时启停,而无需前期投入购买昂贵的设备资产,无需进行基础架构运维的成本投入,。AWS平台具有全球部署能力,可以分分钟将业务扩展到全球各个区域。
下面我们将借助AWS Elemental MediaLive , MediaPackage,CloudFront服务构建一套完整的直播OTT转码打包分发服务,通过这个实验您可以直观的体会到AWS的媒体服务是多么便捷,而您所需要的仅仅是一个AWS Global账号和一天可以上网的电脑。
1. 准备直播源
MediaLive支持RTP,RTMP(Push), RTMP(Pull),HLS四种输入源,如果您已经有RTMP直播源可以直接用在本实验中。
本次实验以HLS为例,使用存储在S3上的一个预先转码完成的文件做为输入源,对于MediaLive来说,这个输入源就是一个直播源。
确认此目录已经开启公开访问(关于S3的更多信息请参阅https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/dev/Welcome.html)
2. 创建MediaPackage Channel
a. 登陆AWS Global 控制台,在Services中选择MediaPackage,
b. 在Channel页面,选择 Create Channel
c. 输入ID,即自行命名这个Channel,例如ch1。可选填Description栏
d. Input type选择Apple HLS
e. 点击Create channel
f. 点击新创建的Channel,在Channel Overview页面选择Add/edit endpoint
g. 在endpoints页面点击Add,填写 ID,例如ch1-ep1,点击Save
h. 重复上述步骤创建第二个Channel和对应的endpoint
i. 记下channel的Input URL,username和password
3. 创建MediaLive Channel
a. 在控制台Services 中选择MediaLive
b. 选择Channels页面,点击Create Channel
c. 在Channel Name中填入自行创建的通道名
d. 在IAM Role 选择Create role from template。选中Remember ARN
(关于IAM Role更多信息请参见https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/id_roles.html)
创建MediaLive Input
e. 在Channel input部分点击Create input
f. 在Input name 创建一个名字
g. Input type选择HLS
h. 将第一步准备的HLS源的地址填入Input source A和Input source B的URL中。注意,出于高可用性的考虑,MediaLive Input要求2个互为主备的输入源,本试验使用两个不同的存储桶的HLS URL做为输入源,在实际生产环境中也要两个不同的输入源地址来提供高可靠性。
i. 点击Create
创建HLS Output Group
j. 在channel template部分,选择HTTP live streaming模版,将会自动添加不同分辨率和码率的10个输出。也可以不使用模版,通过手动添加自定义output
k. 点击Output groups下的模版名TN2224,点击Credentials(optional),选中Create AWS Elemental MediaLive parameter 将第2步创建的两个channel的URL,Username,password依次填入HLS Group destination A和HLS Group destination B。见下图
l. 点击 Create channel
4. 启动channel并查看
a. Channel创建完成后是idle状态,选中之后点击Start
b. 使用第2步创建的endpoint,使用VLC player来播放这个直播流,,例如:
c. 如果不能看到直播视频流,请查看并确认MediaLive Channel 和MediaPackage Channel 的network in&out都有流量
MediaLive Channel网络状态
MediaPackage Channel网络状态
5. 使用CloudFront创建CDN发布
a. 登陆AWS Global 控制台,在Services中选择CloudFront,选择Distributions,点击Create Distribution
b. 使用Web方式,点击Get Start
c. 在Origin Domain Name中填入第2步创建的MediaPackage end point域名,例如:https://103xxxxxxxxe303.mediapackage.us-west-2.amazonaws.com
在Origin Path 中填入MediaPackage end point中的路径,例如: /out/v1/c78bcxxxxxxxxxxxxxxxxxxxxxx45
Origin Protocol Policy 选择HTTPS only
其他选项可以不修改,(更多CloudFront相关信息,请参阅https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cf_dg.pdf)
点击Create Distribution
d. 等待创建完成后,status由In progress变为Deployed,即可使用CLoudFront分配的域名,加上index.m3u8即可例如d2xxxxxxxxxxx4n4m.cloudfront.net/index.m3u8
使用VLC player打开这个地址即可播放,这样就完成了播放流的CDN发布,CloudFront会选择距你延时最小的边缘站点进行加速。
现在,您的直播业务就已经完成了构建,并具有全球分发和加速能力。AWS媒体服务具备内置可靠性和弹性。该服务可透明地管理多个可用区中的资源,并自动监控其运行状况,以便在不中断实时频道的情况下检测并解决任何潜在问题。借助 AWS 媒体服务,您可以获得比通常用于广播工作负载的基础设施更高的可靠性
MediaLive输入支持SD, HD, UHD,支持H.264 (AVC), HEVC (H.265), MPEG-2视频编码格式,支持AAC, Dolby Digital, Dolby Digital Plus, MPEG Audio, PCM音频格式,支持AFD,支持帧率控制,支持GOP结构设置,支持多种编码profile,支持多种字幕标准,支持时码插入,支持数字版权管理等等。
除了MediaLive+MediaPackage,您还可以使用MediaConvert做视频文件转码,使用MediaStore做内容存储,使用MediaTailor做广告插播。AWS媒体服务与包括 Amazon CloudFront、AWS CloudFormation、Amazon CloudWatch 在内的补充性 AWS 服务,以及适用于安全、管理和生产的第三方应用程序相集成,提供一整套工具来处理和交付实时的按需视频内容。最重要的是,AWS 媒体服务使您专注于内容,而非管理复杂的基础设施,让您能为观众提供卓越的体验。