也不知什么时候,直播行业异军突起,周边的小伙伴们都开始玩直播了。对于锄头哥这种老码农来说,与其说愿意关注直播带来的娱乐快感,还不如说更愿意花时间去研究直播背后的技术实现。去年下半年,锄头哥也是出于好奇,对直播的技术做了一番研究,略有斩获。最近趁着手头项目稍微空闲,把锄头哥所了解的直播技术内容做了一个整理,分享给各位读者朋友。

为了便于理解,先放上一张直播的整体框架:

可以看到,当主播在进行直播的时候,视频内容在主播客户端进行采集,然后进行一定的视频处理后,推流到云端,观众客户端进行视频拉流、解码后,再进行观看。当然在采集、推流、拉流的过程中涉及到很多的技术内容,锄头哥会针对性的作出解释。

本篇是基础普及篇,直播的名词是最基础的内容:

1.推流

将直播内容推送至服务器的过程。

2.拉流

服务器已有直播内容,用指定地址进行拉取的过程。

3.RTMP协议

Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

4.编码:

H.264编码 是 高性能的视频编码技术,最大的优势是具有很高的数据压缩比率,能以较低的数据速率传送基于联网协议(IP)的视频流.

5.码率:

码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。

6.FPS:

帧率(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)

小结:
锄头哥调研了目前市面上主流的两款直播平台:云豹直播平台和方维直播平台,经过了多次的尝试和优化,在原来的源码基础上进行了bug改良,使得系统更加稳定,卡顿现象得到了较好的解决。
现在想来,要把直播系统做稳定,其实最难的难点是提高首播时间、服务质量即Qos。要想在技术上把别的直播站PK下去,提供几种方案:
1. gop缓存,为加快首播时间
2. gop丢帧,为解决延时,为什么会有延时,网络抖动、网络拥塞导致的数据发送不出去,丢完之后所有的时间戳都要修改,切记要不客户端就会卡一个 gop的时间,是由于 dts 和 pts 的原因,或者播放器修正 dts 和 pts 也行(推流端丢gop更复杂,丢 p 帧之前的 p 帧会花屏)
3. 纯音频丢帧,要解决音视频不同步的问题,要让视频的 delta增量到你丢掉音频的delta之后,再发音频,要不就会音视频不同步 
4. 源站主备切换和断线重连。
5. 根据TCP拥塞窗口做智能调度,当拥塞窗口过大说明节点服务质量不佳,需要切换节点和故障排查。
6. 增加上行、下行带宽探测接口,当带宽不满足时降低视频质量,即降低码率。
7. 定时获取最优的推流、拉流链路IP,尽可能保证提供最好的服务。
8. 监控必须要,监控各个节点的Qos状态,来做整个平台的资源配置优化和调度。
9. 如果你家产品从推流端、CDN、播放器都是自家的,保障 Qos 优势非常大.
10. 当直播量非常大时,要加入集群管理和调度,保障 Qos。
本篇的基础普及篇到此搁笔,后续的详细分析也会尽快更新,欢迎大家指正。
如果有直播相关探讨,欢迎关注锄头哥的官微进行交流。

锄头哥直播技术探讨----基础普及篇相关推荐

  1. 深度学习+语音,基础普及篇笔记(一)

    深度学习应用领域,可以分为3大块:图像,语音,文字.最近有时间,研究下语音: (一)定义 语音是一个连续的音频流,它是由大部分的稳定态和部分动态改变的状态混合构成. 一个单词的发声(波形)实际上取决于 ...

  2. 鸟哥-Linux私房菜-基础学习篇-习题解答-第0章

    写在前面 现如今,接触人工智能行业,或者相关行业的非计算机专业人员,都有对Linux系统的学习有一定的需求.关于Linux系统的学习网上有很多的教程,大部分的教程都是直接使用shell来敲命令行,好其 ...

  3. 鸟哥-Linux私房菜-基础学习篇-习题解答-第1章

    习题解答 第一章 实践题部分: 请上网找出目前Linux内核的最新稳定版与开发中版本的版本号码,请注明查询的日期与对应的版本. Linux的内核版本有两种:稳定版与开发版: Linux内核版本号是由3 ...

  4. 鸟哥Linux私房菜基础学习篇 第二部分 Linux 文件、目录与磁盘格式_Linux文件权限与 目录配置_Linux文件与目录管理...

    2019独角兽企业重金招聘Python工程师标准>>> 1.相对路径相对某目录比较灵活方便(如安软件时候指定目录),绝对路径一般不会因为环境变化而产生错误. 2.目录变化时的切换 - ...

  5. 【游戏开发】多人游戏网络同步相关技术(基础原理篇)

    常见网络同步模型 1.C/S 模型 (Client-Server) : 状态同步 2.对等网络模型(Peer-To-Peer): 帧同步 网络同步数据类型 将数据分为四个类型 非保障数据(可丢弃) 保 ...

  6. 未来的直播技术将会有哪些新的进化形式?

    近5.6年间,直播几乎每一年都在发生着非常大的变化,诞生了不同的玩法.不同的场景,直播形态在持续地丰富.那么未来,直播技术又会有着什么样的"进化"呢? 近日,火山引擎直播技术负责人 ...

  7. 拒绝从入门到放弃_《鸟哥的 Linux 私房菜 — 基础学习篇(第三版)》必读目录

    目录 目录 前言 关于这本书 必看知识点 最后 前言 相信部分刚进入这个行业的新同学会对一个问题感到疑惑,为什么从培训学校出来的学员不被欢迎? 这里记录下一些我个人的看法(博主也曾有面试新员工的经历) ...

  8. [网络安全提高篇] 一〇二.Metasploit技术之基础用法万字详解及防御机理

    当您阅读到该篇文章时,作者已经将"网络安全自学篇"设置成了收费专栏,首先说声抱歉.感谢这一年来大家的阅读和陪伴,这100篇安全文章记录了自己从菜鸡到菜鸟的成长史,该部分知识也花了很 ...

  9. 鸟哥的linux私房菜-基础学习篇 读书笔记

    从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...

最新文章

  1. python 对指定URL获取其子链接
  2. 1、win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现)
  3. [转帖]Mootools源码分析-49 -- Asset
  4. JavaScript——变量与基本数据类型
  5. scrollTop 用法说明
  6. SQL Server 2005导入导出存储过程
  7. 内存cgroup---CGroup中参数由来篇
  8. 【spring bean】bean的配置和创建方式
  9. Ubuntu 14.04 安装Octave
  10. 在向服务器发送请求时发生传输级错误。
  11. 离线地图瓦片下载工具
  12. Google Code注册方法详解 Google Code网盘申请方法
  13. linux系统安装wine关关采集,在Ubuntu 20.04系统上安装和使用Wine 5的方法
  14. python语音验证码识别_Python验证码识别
  15. nc oracle 导入工具,Oracle Instanc Client安装命令工具
  16. Exoplayer的缓存 二 下载服务DownloadService
  17. 美团充电宝负责人已离职, 或与美团二号人物王慧文的退休有关
  18. 终于在12306上订到火车票了
  19. java字母反过来_java实现字符串(数字、字母、汉字)的反向输出
  20. HBuilder 按F11退出免打扰模式失效

热门文章

  1. 【Linux 0.11】第六章 引导启动程序
  2. Android开发中EventLog分析
  3. Vue学习之基础大全
  4. Debian 命令行配置网络并切国内源
  5. 看见她力量丨中国铁建地产铁姐,内外多面,绽放光彩!
  6. JAVA通过tcp通信劳易测BCL 308i扫码枪获取数据
  7. 微信开挂怎么防止封号_越狱过的手机怎样避免外挂微信被封
  8. 【学习笔记】SQL数据库
  9. 前端国密加解密使用方法SM2、SM3、SM4
  10. hdu1512 Monkey King