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

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

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

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

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. 字符串数组(就自己做个笔记)
  2. threejs 绘制球体_ThreeJs 绘制点、线、面
  3. CRM呼叫中心里interaction record的设计逻辑
  4. mysql5.5.8编译安装_MySQL5.5.8源代码编译安装
  5. JDK 11:发行候选更新和OpenJDK JDK 11 LTS
  6. 典型的DIV+CSS布局(左中右)
  7. 如何开发Linux内核?
  8. 2021数模美赛LaTeX+Word论文模板更新!
  9. 音频信号转为开关控制信号_基于CPCI总线控制卡的信号完整性设计
  10. ZEMAX | 绘图分辨率结果对光线追迹的影响
  11. 架构师的主要职责是什么?
  12. 湖大计算机考研范围,湖大计算机829考研要点提要(来自于湖南历年真题,整理不易)...
  13. 为什么篮球一进游戏就服务器中断,街头篮球手游进不去 进不去游戏无非这两种原因...
  14. Snaker工作流学习(一)
  15. 手机短信验证码收不到怎么办?原因和解决方案全都在这里
  16. Qt小游戏教程之贪吃蛇(带源码)
  17. Java-Spring Boot支付宝扫码支付以及支付回调
  18. Cookie在前端写还是后端?
  19. 币小秘:币圈五度春秋几度忧愁?解读每位投资者心态
  20. 网站首页的设计(转)

热门文章

  1. 通用搜索引擎的垂直化倾向
  2. 单片机定时问题:亮100ms、灭300ms
  3. 微信小程序之日期时间筛选器实现(支持年月日时分)
  4. 网络摄像机-ISP基础一
  5. MATLAB——直方图操作
  6. 解决方法数超65536(java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536)
  7. 早起看CMU15213课程第二天
  8. Intel TBB 介绍
  9. 宽带连接远程计算机691,电脑宽带连接错误691怎么办? 爱问知识人
  10. Oracle数据库服务器端和客服端的安装