快速部署直播视频流截图的应用到阿里云函数计算
- 🔥 通过 Serverless 应用中心 ,
该应用。
- 通过 Serverless Devs Cli 进行部署:
- 安装 Serverless Devs Cli 开发者工具 ,并进行授权信息配置 ;
- 初始化项目:
s init rtmp-snapshot -d rtmp-snapshot
- 进入项目,并进行项目部署:
cd rtmp-snapshot && s deploy -y
比如在 ecs 部署了一个简单的直播服务器, IP 是 101.200.48.101
docker run -it -p 1935:1935 -p 8080:80 --rm alfg/nginx-rtmp
比如测试视频 test.flv 大约为 10 分钟左右的视频
ffmpeg -re -i test.flv -vcodec copy -acodec aac -ar 44100 -f flv rtmp://101.200.48.101:1935/stream/example
播放器输入这个地址就可以查看了:
rtmp://101.200.48.101:1935/stream/example
比如, 截一张图:
ffmpeg -i rtmp://101.200.48.101:1935/stream/example -frames:v 1 1.png
持续截图:
ffmpeg -i rtmp://101.200.48.101:1935/stream/example -f image2 -r 1 -strftime 1 /tmp/%Y%m%d%H%M%S.jpg
$ s invoke -e '{"rtmp_url" : "rtmp://101.200.48.101:1935/stream/example", "bucket":"my-bucket", "region":"cn-hangzhou", "dst":"dst"}' --invocation-type async
其中:
-
rtmp_url: 必需, 直播流地址
-
bucket: 必需, 保存截图文件的 bucket 名字
-
region: 可选,bucket 的 region, 不填默认使用函数所在的 region
-
dst: 可选,保存截图文件 bucket 的指定目录, 不填默认为空, 即根目录
发起推流后, 函数执行是根据推流是否结束, 推流结束了, 然后函数里面的 ffmpeg 截图命令也就结束了, 最后将 /tmp 下面的图片保存回 oss
2. 登录FC 控制台,查看截图任务函数执行详情
如果有边截图, 边上传回 oss 的需求, 可以基于这个代码再优化下
您如果有关于错误的反馈或者未来的期待,您可以在 Serverless Devs repo Issues 中进行反馈和交流。如果您想要加入我们的讨论组或者了解 FC 组件的最新动态,您可以通过以下渠道进行:
微信公众号:`serverless` | 微信小助手:`xiaojiangwh` | 钉钉交流群:`33947367` |