技术调研报告

1. 目录

2. 介绍

此报告旨在对直播技术、IM框架和跨国请求网络解决方案进行调研,以便在项目中做出合适的技术选型。

3. 直播技术调研

3.1 背景

项目中需要使用直播相关的功能,需要对市场上直播相关技术进行调研

3.2 目标

3.3 调研方法

3.4 技术概述

直播技术使用实时传输的方式向用户提供视频内容。常用的协议有 HTTP-FLV、HLS、RTMP、Web-RTC、RTSP。

协议 协议概述 优点 缺点
RTMP Adobe 公司为Flash/AIR与服务器之间传输音视频数据而开发的私有协议,也是目前最常用的流媒体传输协议。 基于TCP长连接,不需要多次建连,延时低,通常只有1~3s;技术成熟,配套完善。 在PC浏览器中只能通过Flash使用,且无法在移动浏览器使用;鉴于Flash即将退出舞台,所以在网页播放端基本不会以RTMP做拉流。但是是一个很好的推流协议
HLS 苹果公司提出的基于HTTP的流媒体网络传输协议。其工作原理是切片式传输,把直播流切成无数片,用户在观看视频时,每次客户端可以只下载一部分。 基于HTTP协议,所以接入CDN较为容易,很少被防火墙拦下,且自带多码率自适应;作为苹果提出的协议,在macOS/iOS下有极大优势,Android中也提供了对应的支持;可以说此项协议用在移动设备上是再合适不过了。 延时较大,通常不低于10s 。大量的TS片文件,会造成服务器存储和请求的压力。
HTTP-FLV 把音视频数据封装成FLV,然后通过HTTP连接传输,与RTMP相比只是传输协议变了。对于网页播放端,本来还是需要Flash才能播放,但「flv.js」的出现又弥补了这个缺陷。 低延时,整体效果与RTMP非常接近;相较于RTMP协议,能有效避免防火墙和代理的影响。 它的传输特性会让流媒体资源缓存在本地客户端,也就是说保密性不怎么样;直到目前仍然不兼容iOS的浏览器。
WebRTC 基于Google开源技术,在Web端上实现流媒体的协议 RTMP和HLS都是掌握在大企业手中的协议,而WebRTC已被纳入W3C标准;无需安装插件,支持的浏览器越来越多。 厂商对浏览器或系统的定制可能会导致可用性问题,且缺乏服务器端设计和部署方案;传输质量难以保证,优化手段有限;在安卓设备上的兼容性不好;另外,此项协议主要面向Web端,对原生开发支持不足。

基础直播流程

参考资料

3.5 主流直播使用协议方案

3.5.1 斗鱼

总结:斗鱼不仅使用国内常用的 HTTP-FLV 方案,还加入了 P2P 拉流,从而节省 CDN 流量。对于赛事直播,斗鱼还支持直播时移,直播时移是使用 HLS 来实现的,用户在 seek 后会通过 seek 到的时间点去服务器换取对应的时移 HLS 流地址,然后走 HLS 拉流即可。 参考资料

3.5.2 twitch

3.6 大型直播系统流程架构

此外,这个架构还包括以下几个关键部分:

参考资料

3.6 直播相关开源项目

项目名 介绍 说明
srs SRS (Simple Realtime Server) 是一个简单、高效的实时视频服务器 1.支持多种流媒体协议,包括 RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH 和 GB28181。
2.支持多种操作系统和硬件平台。
3.提供了详细的文档,包括如何开始使用、如何从源代码编译等。
4.提供了多种使用示例,包括如何使用 FFmpeg 或 OBS 进行流媒体推送,如何使用 VLC 或网页播放器播放流媒体等。
5.提供了详细的 Wiki,包括如何进行 RTMP 流媒体传输、如何进行 WebRTC 流媒体传输、如何将 RTMP 转换为 HTTP-FLV 流媒体、如何将 RTMP 转换为 HLS 流媒体等。
livego Livego是一个简单且高效的实时广播服务器 1.纯 Golang 编写,性能高,跨平台;
2.支持常用的传输协议、文件格式和编码格式。 支持传输协议:RTMP、AMF、HLS、HTTP-FLV

3.7 直播相关服务

服务名 介绍 说明 费用
Amazon Interactive Video Service(IVS 亚马逊提供的 twitch 技术的服务 托管式直播流:Amazon IVS 提供了一种托管式的直播流解决方案,可以快速为移动和网络应用进行相关设置。
直播流托管式聊天:Amazon IVS 提供了直播流托管式聊天功能,可以增强用户的互动体验。
多主机直播流:Amazon IVS 支持多主机直播流,可以满足多样化的直播需求。
收费策略
ApsaraVideo Live 阿里云提供直播服务 全链路服务:提供上下行码率自适应、窄带高清转码™、截图、录制、视频审核、时移、数据监控、云导播、超低延时直播、实时日志、视频流管理等功能和服务。
全球布局:拥有3200+全球直播节点
超低延时毫秒级超低延时,互动更加实时。依托阿里云海内外海量节点资源,实现百万级高并发。
收费策略

4. IM框架调研

4.1 背景

业务中需要使用到群组、聊天等相关功能。

4.2 目标

4.3 调研方法

4.4 技术概述

即时消息(IM)系统是一种实时通信技术,它允许用户通过网络进行实时交流。IM 技术的主要特点包括实时性、可靠性、一致性和安全性。

解决方案:

IM 的典型架构包括以下几个部分:

IM 的功能组成主要包括联系人列表、聊天界面、消息发送通道、消息接收通道、消息存储和消息未读数。

参考文档

4.5 开源项目

4.5.1 Open-IM-Server

简介:Open-IM-Server 是一款即时通讯服务器,使用纯 Golang 开发,采用 JSON over WebSocket 传输协议。在 Open-IM-Server 中,所有东西都是消息,因此您可以轻松扩展自定义消息,而无需修改服务器代码。使用微服务架构,Open-IM-Server 可以使用集群进行部署。通过在服务器上部署 Open-IM-Server,开发人员可以快速地将即时通讯和实时网络功能集成到自己的应用程序中,并确保业务数据的安全性和隐私性。

GitHub地址:OpenIMSDK/Open-IM-Server

官网地址:https://www.openim.online/zh

优势

演示demo:https://www.openim.online/zh/demo

总结:实现了基础IM功能,包括服务端和客户端,可以在此基础上快速开发出一套IM应用。

4.5.1 im-server

简介:野火IM是一套通用的即时通讯和实时音视频组件,能够更加容易地赋予客户IM和RTC能力,使客户可以快速的在自有产品上添加聊天和通话功能或者直接使用野火提供的应用。使用野火可以替代云通讯产品或减少自研即时通讯和实时音视频的工作量,降低客户研发成本和难度。

GitHub地址:wildfirechat/im-server

官网地址:https://wildfirechat.cn

优势:与Open-IM-Server类似提供基础功能,一些高级功能需要付费使用

演示demo:https://docs.wildfirechat.cn/demo

总结:实现了基础IM功能,包括服务端和客户端,可以在此基础上快速开发出一套IM应用。

4.6 相关服务

4.6.1 腾讯云IM

简介:即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕和内容审核等能力。适用于直播互动、电商带货、客服咨询、社交沟通、在线课程、企业办公、互动游戏、医疗健康等场景。

地址:https://cloud.tencent.com/product/im

4.6.2 网易云信

简介: 稳定可靠,海量并发,弱网消息必达, 加密传输,多重备份,选择性托管账号, 4步接入,支持公有云与私有云部署,全球多点,保障海外消息实时到达

地址:https://netease.im/

5. 跨国请求网络解决方案调研

5.1 背景

项目需要在国外使用,涉及到跨国网络通信可能会有 网络延迟、数据丢包、网络稳定性、数据安全和隐私等问题

5.2 目标

5.3 调研方法

5.4 技术概述

5.4.1 跨国通讯会产生的问题

5.4.2 解决方案

5.5 云服务供应商解决方案

5.5.1 亚马逊

5.5.2 阿里云

5.5.2 腾讯云

5.5.2 华为云