无服务器直播方案部署手册补充版

AWS中国区提供了开箱即用的无服务器直播方案,其官方网址如下:

https://www.amazonaws.cn/solutions/serverless-video-streaming/?nc2=hqlsol_all

这个方案是基于CloudFormation的Quickstart快速部署,源代码参考这里。本文在官方部署手册基础上进行了简化和补充。

一、模版部署

事先登录到AWS控制台中国区或者海外区,区域于要部署的平台在中国区还是海外区。

无服务器直播解决方案的入口如下网址进入:

https://www.amazonaws.cn/solutions/serverless-video-streaming/?nc2=hqlsol_all

点击右下角,选择是在海外区域还是中国区创建平台,点击按钮后将打开AWS控制台。

然后选择用于部署ECS Fargate容器,此时需要选择本区域的多个子网才可以完成创建。请不要选择小于两个子网,否则会报错。另外,创建中有个参数名为InstallDemoConsole需要被设置为True,请注意区分大小写。

二、创建直播频道

从CloudFormation模版中,查看Nested嵌套模版,找到名为 模版名-VideoMetadata-xxxxx的模版,点击进入Output,查看其中的WebEndpoint,获得API Gateway endpoint URL for video metadata operation,例如https://xfxnmfqg11.execute-api.ap-northeast-1.amazonaws.com/Prod/

使用Linux/MacOS构建如下的请求:

curl -d '{
    "isFlv":true,
    "isHls":true, 
    "isVideo":true, 
    "isImage":false, 
    "isMotion":false, 
    "isOnDemand":false, 
    "isCMAF":false, 
    "video_time":"60", 
    "image_time":"30", 
    "hls_time":"2", 
    "hls_list_size":"5", 
    "outdate":"2022-12-09"
}' \
-H "Content-Type: application/json" \
-X POST https://xfxnmfqg11.execute-api.ap-northeast-1.amazonaws.com/Prod/videostream

请替换Post地址为CloudFormation Output中获得的地址,然后执行。

返回结果类似如下:

{"isFlv":true,"isHls":true,"isVideo":true,"isImage":false,"isMotion":false,"isOnDemand":false,"isCMAF":false,"video_time":"60","image_time":"30","hls_time":"2","hls_list_size":"5","outdate":"2022-12-09","id":"1c1724a0-1fd0-4e98-aa3f-529bdd2be270","TimeStamp":1648897606,"key":"1670544000-37e00b9deb2e72a59f58548782466c68"}% 

其中的idkey两个信息就是频道ID和Key,后续直播推流需要配置。

如果错过了命令行返回的输出,那么可以从DynamoDB中获取这个信息。进入本Region的DynamoDB服务,找到Table名为video-metadata的表,点击进入后,即可查看直播的id和key。

三、获取推流(主播)地址和拉流(播放)地址

1、获取推流(主播)地址

进入Cloudformation的主模版,在Output标签页下,找到LiveVideoPushStreamURL,例如MediaServer-LoadBalancer-0bb639917e310f08.elb.ap-northeast-1.amazonaws.com。这个地址是用于推流的地址,即主播上传地址,下一步需要配置在OBS软件中。

接下来构建如下格式rtmp://<LiveVideoPushStreamURL>/stream/请把上一步的MediaServer-LoadBalancer开头的地址套入进去。例如拼接好之后推流地址的是:

rtmp://MediaServer-LoadBalancer-0bb639917e310f08.elb.ap-northeast-1.amazonaws.com/stream/

另外将上一个步骤创建好的频道ID和Key也拼接如下。id?sign=key。例如拼接好之后的频道id和key是:

1c1724a0-1fd0-4e98-aa3f-529bdd2be270?sign=1670544000-37e00b9deb2e72a59f58548782466c68

2、获取拉流(播放)地址

收看地址是LiveVideoPullStreamURL字段给出的地址,例如d2ld23ycic5i06.cloudfront.net

四、配置OBS直播并测试

进入OBS,点击右下角设置(setting),然后弹出设置对话框。点击左侧第二个按钮推流(Streaming),在服务(Service)下拉框中选择自定义(Customize),在服务器位置填写上一步拼接好的推流地址,在串流密码(Stream Key)位置填写上一步拼接好的频道id和key。

填写完成后,点击右下角确定按钮。

在主界面配置好视频采集的窗口、音频输入,点击开始推流(Start Stream)按钮即可开始直播了。

五、查看管理界面

进入Cloudformation的主模版,在Output标签页下,找到LiveVideoConsoleURL,其网址是类似http://web-loadbalancer-2107698482.ap-northeast-1.elb.amazonaws.com/的域名。

将这个域名复制到浏览器,即可登录到管理平台。默认用户密码都是admin即可登录。登陆后,可在直播服务界面下,看到拉流地址,复制到浏览器窗口即可播放。

完。