阿里云(二)《2017云栖大会》基于阿里云搭建自己的视频直播系统

感谢云栖大会,亲眼见到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

 

 

 

优秀的个人博客,低调大师

微信关注我们

转载内容版权归作者及来源网站所有!本站原创内容转载请注明来源!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。