开发者社区> Tinywan.> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 感谢云栖大会,亲眼见到Redis作者:Salvatore Sanfilippo 前言   本文讲述通过参与阿里云【2017云栖大会】 视频直播服务单间一套基于阿里云的视频直播系统,主要谈及到推流、流分发、四层负载、七层负载、反向代理等内容,其中涉及到OpenResty 、Lua小语言、阿里云OSS、Redis等相关知识内容会作简单介绍。
+关注继续查看

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

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《5-詹洲翔-基于消息队列RocketMQ的上云最佳实践(1)》电子版地址
5-詹洲翔-基于消息队列RocketMQ的上云最佳实践(1)
6 0
直播卖货系统如何搭建
受疫情影响,直播卖货系统可谓“实火”,不少人想要入行开发直播卖货系统,想要搭建一套完整的直播卖货系统,首先要了解搭建的流程,从程序编写、到测试、售后、上架,每一部都不能含糊,本文就为大家讲解,直播卖货系统是如何搭建的。
292 0
请接好!!!2018年云栖社区Java【官方群直播】与【线下沙龙】资料一次都给你~
2018年已经过去,2019年春节马上就要来临,小编感谢各位过去时间里对云栖社区的支持和贡献,以下内容为小编总结的2018年社区的官方钉钉群和线下沙龙资料,让各位热爱Java的开发者一次看个过瘾~
1908 0
直播源码怎样搭建直播系统LNMP环境——PHP配置
前面两篇内容我们聊过了直播平台搭建前需要准备的内容,一切准备就绪之后就要进入正式的搭建部署环节了,本篇就先简单介绍下LNMP环境下的PHP配置。
2825 0
阿里云Redis混合存储典型场景:如何轻松搭建视频直播间系统
本文主要介绍视频直播间系统,以及如何使用阿里云Redis混合存储实例方便快捷的构建大数据量,低延迟的视频直播间服务。
8071 0
201608北京云栖Workshop - 基于容器服务的视频点播应用(二)
8月份北京云栖大会Workshop专场《打造千万用户海量视频网站》,为您介绍了如何从0到1,搭建一个大型的视频网站。也许您依然意犹未尽,或者不巧错过了,没有关系,本系列文章将为您回顾如何基于容器服务快速搭建一个视频点播应用。
2430 0
【视频】自然框架之分页控件的使用方法(二) 下载、DLL说明和web.config的设置
    上次说的是QuickPager分页控件的PostBack的使用方式,也提供了源码下载。但是有些人下载之后发现有一大堆的文件夹,还有一大堆的DLL,到底要用哪个呀?不会都要用吧。     当然不需要全都引用了,只需要引用三个DLL就可以了。
902 0
+关注
244
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载