感谢云栖大会,亲眼见到Redis作者:Salvatore Sanfilippo
前言
本文讲述通过参与阿里云【2017云栖大会】 视频直播服务单间一套基于阿里云的视频直播系统,主要谈及到推流、流分发、四层负载、七层负载、反向代理等内容,其中涉及到OpenResty 、Lua小语言、阿里云OSS、Redis等相关知识内容会作简单介绍。
系统设计
1、推流部分(动态负载均衡)
2、播流部分(动态反向代理)
3、直播系统架构图:
这一节是本文的核心内容,重点讲述直播系统的架构设计。先看图:
步骤1:通过openapi 获取推流地址和播流地址
步骤2:客户开始推流,推流到分发服务器(URL_STREAM)
步骤3:分发服务器(livenode)会执行一个shell脚本,分发本地数据流到节点负载均衡服务器,主要代码:
events { worker_connections 65535; } #TCP 负载均衡 stream { upstream backend { hash $remote_addr consistent; server 192.168.1.10:1935 weight=2 max_fails=3 fail_timeout=30s; server 192.168.1.11:1935 weight=5 max_fails=3 fail_timeout=30s; server 192.168.1.12.155:1935 weight=1 max_fails=3 fail_timeout=30s; } server { listen 1935; proxy_connect_timeout 1s; proxy_timeout 20s; proxy_pass backend; } } http { include mime.types; default_type application/octet-stream; log_format main '[$time_local][$remote_addr][$http_x_forwarded_for] $status "$request" "$http_referer" "$http_user_agent"'; access_log logs/access.log main; sendfile on; keepalive_timeout 65; }
步骤5:直播节点服务器会自动生成HLs格式的ts文件保存下来,同时定时清理已经过期的ts切片
步骤6:直播地址的回源,这里使用Lua脚本配合Redis去实现。
阿里云OSS存储使用
1、阿里云云存储OSS的命令行osscmd的安装和使用,请参照我的另外一篇博客:阿里云(一)云存储OSS的命令行osscmd的安装和使用
2、自动录像上传OSS目录结构
3、关于更多的OSS相关知识,后续会慢慢介绍
视频系统模块详解
1、直播模块
2、点播模块
3、录像模块
4、视频编辑模块
直播模块
-
推流地址
rtmp://live.aliyun.com/live/123456
-
RTMP播放地址:
rtmp://live.aliyun.com/live/123456
-
HLS播放地址:
https://live.aliyun.com/hls/123456.m3u8
-
DASH播放地址:
https://live.aliyun.com/dash/123456.mpd
-
实时流状态查看:
https://live.aliyun.com/stat
录像控制
-
开始录像:curl "https://live.aliyun.com/control/record/start?app=live&name=123456&rec=rec1"
返回值:/home/www/videos/123456-150632348720170925151127.flv
-
停止录像:
curl "https://live.aliyun.com/control/record/stop?app=live&name=123456&rec=rec1"
返回值:/home/www/videos/123456-150632348720170925151127.flv
- 录像信息自动存储数据库,并且邮件自动通知客户
- 录制文件
.flv
格式自动完成截图、切片、转码功能(格式:TS、MP4) - 录制文件自动上传阿里云OSS存储
点播模块
-
HLS点播地址:
https://vod.aliyun.com/vod/123456-150632523520170925154035/index.m3u8
-
MP4点播地址:
https://vod.aliyun.com/vod/123456-150632523520170925154035.mp4
-
视频截图地址:
https://vod.aliyun.com/vod/123456-150632523520170925154035.jpg
-
OSS点播地址:
http://oss.aliyun.com/data/201710002/video/20171000959120171007092631.mp4
视频编辑模块
一个简单的小demo