简介说明:
流媒体服务器+终端(android,ios,web)来实现实时监控或着说是直播
以下几个因素建议考虑
采集、预处理、编码、传输、服务器转码、解码
- 采集采集是播放环节中的第一环,iOS 系统比较简单,软硬件适配性较好。Android系统市面上的开源系统非常多,所以很难可以找一个库可以匹配所有的系统。PC 端的采集也跟各种摄像头驱动有关,推荐使用目前市面上最好用的 PC 端开源免费软件 OBS。
- 编码编码主要难点有两个:
- 处理硬件兼容性问题。
- 在高 fps、低 bitrate 和音质画质之间找到平衡,fps一般建议选择15fps,600K码率。iOS 端硬件兼容性较好。而 Android 的的支持系统比较多,推荐使用软编。
- 推流和传输(CDN)传输涉及到很多端:从主播端到服务端,从推流服务端到边缘节点,以及再从边缘节点到观众端。推流端和分发端理论上需要支持的并发用户数应该都是千万级的,不过毕竟产生内容的推流端在少数,和消费内容端播放端不是一个量级,但是他们对推流稳定性和速度的要求比播放端高很多,这涉及到所有播放端能否看到直播,以及直播端质量如何。感觉现在的独家CDN太不靠谱,要多家冗余,互相弥补才行。
- 转码为了让主播推上来的流适配各个平台端各种不同协议,需要在服务端做一些流处理工作,比如转码成不同格式支持不同协议如 RTMP、HLS 和 FLV,一路转多路流来适配各种不同的网络状况和不同分辨率的终端设备。
- 解码(播放)解码,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟可接受的情况下使用 HLS 协议。Android 的硬件解码和编码一样也存在兼容性问题
(PC端目前国内最好的还是flash,播放的是FLV,h5的直播播放器还在研究当中吧。)
直播涉及到音视频,从推流到拉流,需要解决各种兼容性问题,如果技术没有强大的技术团队的话,对于这块硬骨头确实是比较难啃,建议您可以看看现在目前比较好的直播平台,各家也可以对比一下,以稳定,流畅,延时的几个角度出发。
DyncLang(浪里小白龙) 发布的技术文档 从无到有开发连麦直播技术点整理-AnyRTC
下面列出几个第三方sdk看看有没有合适你的
1. 三步完成配置 又拍直播云文档:http://docs.upyun.com/live/
2. SRS 搭建大规模CDN集群,可以在CDN内部的源站和边缘部署SRS http://winlinvip.github.io/srs.release/releases/index.html
一千行java搞定不依赖jni,延迟0.8至3秒
源码https://github.com/ossrs/srs
3. 大牛直播SDK可供个人学习之用,企业及商用需要经过授权https://github.com/daniulive/SmarterStreaming
4. 基于android的手机视频rtmp推流SDKhttps://github.com/runner365/android_rtmppush_sdk
5. 阿里云视频直播服务地址:https://www.aliyun.com/product/live
阿里云视频直播案例 https://blog.csdn.net/hanierming/article/details/52769424
6. 七牛云技术分享:使用QUIC协议实现实时视频直播0卡顿!http://www.52im.net/thread-1406-1-1.html
7. 腾讯云,百度云,阿里云都已经有了基于视频直播的解决方案,从视频录制到视频播放,推流,都有一系列的sdk可以使用,缺点就是需要收费,如果可以的话,自己实现一套也并不是难事哈https://www.nihaoshijie.com.cn/index.php/archives/615/
最后我付上我自己做的一个流程图