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"}%
其中的id
和key
两个信息就是频道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即可登录。登陆后,可在直播服务界面下,看到拉流地址,复制到浏览器窗口即可播放。
完。