• 阿里云(二)《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

     

     

  • 相关阅读:
    【DWM1000】 code 解密2一 工程初始化代码分析
    【DWM1000】 code 解密1一 去掉Main 函数多余内容
    Integration between SharePoint 2013 and CRM 2013 (On-Premise)
    Windows Server2012R2 添加Microsoft .NET Framework 3.5 功能失败的解决方法
    Windows Server2012R2 安装 SharePoint 2013 的必备组件
    SSRS: How to Display Checkbox on Report
    ADFS部署过程中设置network service对证书的读取权限
    Dynamics CRM2013 ScLib::AccessCheckEx failed
    ADFS3.0 Customizing the AD FS Sign-in Pages
    Dynamics CRM2013 picklist下拉项行数控制
  • 原文地址:https://www.cnblogs.com/tinywan/p/7678749.html
Copyright © 2020-2023  润新知