热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

No.181#点直播简要架构梳理走查

引言直播带货、潮流电商、短视频不断融合,本文走查下音视频直播的简要架构和角色。选择UDP,注重传输实时性,在线教育、音视频会议等。选择TC

引言

直播带货、潮流电商、短视频不断融合,本文走查下音视频直播的简要架构和角色。

选择UDP,注重传输实时性,在线教育、音视频会议等。

选择TCP,注重画面质量、是否卡顿等,娱乐直播、直播带货等。

本文主要内容有:

  • 音视频直播架构

  • 点直播服务器搭建

  • CDN内容分发网络

一、音视频直播架构

下图为音视频直播架构简图。

29bdfff37242f0bc99ee0670bef726b5.png


1、涉及的角色

直播客户端(主播)

  • 功能主要包括音视频数据的采集、编码、推流

  • 从摄像头、麦克风采集数据,并对数据进行编码后通过RTMP协议发送给CDN源节点

直播客户端(观众)

  • 功能主要包括拉流、解码、播放

  • 从直播系统获取房间流媒体地址

  • 通过RTMP协议从CDN边缘节点获取数据、解码、渲染

信令服务器

  • 接受指令并处理业务逻辑,创建房间、加入房间、送礼物等

CND网络

  • 内容分发网络(Content Delivery Network)

  • 利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序等发送给用户来提供高性能

  • 提供异地备援,100%的高可用性

2、传输协议

RTMP协议

  • 实时消息传输协议,Real Time Messaging Protocol的缩写

  • 最初由Macromedia为通过互联网在Flash播放器与一个服务器之间传输流媒体音频、视频和数据而开发的一个专有协议

  • 基于TCP,默认使用1935端口的“明文”协议

HLS协议

  • 苹果公司提出基于HTTP的流媒体网络传输协议,HTTP Live Streaming的缩写

  • 工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些

  • HLS只请求基本的HTTP报文,与实时传输协议(RTP)不同,HLS可以穿过任何允许HTTP数据通过的防火墙或者代理服务器

  • 根据客户端带宽情况自适应调整码率,例如使用FFmpeg可以将视屏文件转换为HLS切片

3、整体流程

  • 直播客户端(主播)向信令服务器发起信令创建直播间

  • 信令服务器收到指令后返回CDN源站推流地址

  • 直播客户端(主播)通过音/视频采集设备采集数据后编码、通过RTMP协议发送给CDN网络

  • 直播客户端(观众)向信令服务器发起信令加入直播间

  • 信令服务器收到指令后向客户端(观众)推送其附近的CND边缘节点地址

  • 直播客户端(观众)收到地址后使用RTMP/HLS协议拉取直播数据

二、点直播服务器搭建

下面两种方式比较快速搭建点直播服务器。

方式一

  • 使用Nginx+RTMP 推拉流插件

  • Nginx RTMP Module支持RTMP/HLS/MPEG-DASH 协议

https://github.com/arut/nginx-rtmp-module
https://nginx.org/download/

方式二

  • 使用开源SRS服务器

  • SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181

https://ossrs.net/lts/zh-cn/docs/v4/doc/introduction

三、CDN内容分发网络

CDN内容分发网络(Content Distribution Network)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

  • 提高网页加载速度

  • 提高文件下载速度

  • 提高视频播放速度

f8a7e6f7fff52520ef45e12d569dcddb.png


云厂商提供的CDN服务

阿里云:https://www.aliyun.com/product/cdn
腾讯云:https://cloud.tencent.com/product/cdn
华为云:https://www.huaweicloud.com/product/cdn.html
七牛云:https://www.qiniu.com/products/qcdn#scene




推荐阅读
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 介绍一款好用的内网穿透工具FRP
    本文介绍了一款好用的内网穿透工具FRP,它是一个使用Go语言开发的高性能的反向代理应用。FRP支持多种协议类型,并且可以根据域名进行路由转发。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • Project2019安装及激活软件
    1.官网软件下载以下是微软官网网站正版安装包http:officecdn.microsoft.compr492350f6-3a01-4f97-b9c0-c7c6ddf67d60me ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
author-avatar
877762833_166d01
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有