在上一篇博客《一种流量成本节省60%以上的手机直播微信直播H5直播幼儿园直播方案》中,咱们一共介绍了两种省钱的HLS直播途径:html
方案一:编码器或者内网推流直接对接云存储的场景git
若是咱们是一个作编码器或者咱们在内网有个直播主机,并且能够对编码器、主机作定制,那么咱们能够直接将直播流切片成HLS数据源源不断写入到云存储中,再经过云存储提供的Public或者Private的http地址,就能够直接观看HLS直播,与咱们在直播服务器中切片的HLS m3u8地址访问方法同样;github
方案二:推流到公网的服务器再作切片七牛云存储
若是咱们没有办法或者技术方法改变内网推流端,而是直接购买的直播设备,咱们也是能够作到的:购买一台云主机,部署上RTMP服务器(例如EasyDSS),再经过RTMP服务器将切片的HLS直播数据源源不断经过内网的形式写入到云存储中,阿里云也出了一个叫作cloudfs的产品,就是可以直接将OSS云存储挂在到服务器上作为一个磁盘,这样就能想写本地磁盘目录同样,写m3u8+ts文件了,这里的费用也是极低的,首先内网上行到服务器主机的流量是免费的,服务器主机写入到云存储走内网流量也是免费的,流量费用与第一种方式是类似的!服务器
咱们今天着重要描述的就是场景一的实现方案,直接在摄像机或者编码器中将直播/存储的HLS数据写入到OSS/七牛云存储这样的云存储中,注意,这里不管是直播类型的HLS,仍是点播类型的HLS,均可以写入到云存储中,并且都可以跟正常的直播型HLS或者点播型存储效果是一致的!微信
肯定了方向,那么下一步就是应该如何实现呢,我总结了几个层次的需求,按顺序:markdown
Step1:有摄像机/编码器的二次开发权限,能直接在摄像机/编码器的arm系统中植入咱们对接云存储的程序;阿里云
Step2:对接摄像机/编码器SDK或者协议获取到实时的音视频流,并转换为标准的H.264+AAC(若是有音频);编码
Step3:将H.264+AAC切片成HLS实时流数据/点播流数据;.net
Step4:将Step3中的数据经过云存储的SDK写入到云存储的Bucket中;
我自己是海康萤石的用户,每月须要本身付款12元保存7天的录像,个人计划是本身基于厂家的摄像机开发一款云存储摄像机,具有几个功能:
根据摄像机的SDK二次开发,当有移动侦测回调的时候,才启动云存储录像;
存储录像到云存储中保存7/30天;
摄像机原生须要支持H.264,音频转码经过EasyAACEncoder:https://github.com/EasyDarwin/EasyAACEncoder来实现;
HLS切片采用EasyHLS:https://github.com/EasyDarwin/EasyHLS来实现;
云存储固然就用云存储平台提供的SDK二次开发了,例如OSS:https://help.aliyun.com/document_detail/32131.html?spm=5176.87240.400427.51.01eGWx,七牛云:https://developer.qiniu.com/kodo/sdk/1255/cpp
固然阿里云的OSS有直接将四、5两步合并的SDK:https://help.aliyun.com/document_detail/32159.html?spm=5176.87240.400427.55.01eGWx;
Copyright © EasyDarwin.org 2012-2017
#20171028于北京#