随着直播行业大火,游戏、乐秀、教育、发布会等直播类产品层出不穷,能够满足各方人员的需求。在直播中,总能在其中找到适合自己的产品内容。喜欢玩游戏的可以看游戏直播,想学点工作技能的,也可以观看大牛现场授课,甚至你能通过直播跟各大主播实时互动。看了这么多直播,你好像发现了一个小秘密,不同类型的直播延时有所不同,像与主播实时互动的一般延迟比较短,而相对的,在线教育这一类就比较长了。这就是我今天想给大家讲解的一些东西,除了网络环境以外,对延时影响较大的就是直播架构中选择的直播协议。接下来,我就给大家简单介绍下常见的直播协议吧。

常见的直播协议

国内常见的直播协议有几个:RTMP、HLS、HTTP-FLV,下面我们来一一介绍。

RTMP,全称 Real Time Messaging Protocol,即实时消息传送协议。Adobe 公司为 Flash 播放器和服务器之间音视频数据传输开发的私有协议。工作在 TCP 之上的明文协议,默认使用端口 1935。协议中的基本数据单元成为消息(Message),传输的过程中消息会被拆分为更小的消息块(Chunk)单元。最后将分割后的消息块通过 TCP 协议传输,接收端再反解接收的消息块恢复成流媒体数据。

RTMP 主要有以下几个优点:RTMP 是专为流媒体开发的协议,对底层的优化比其它协议更加优秀,同时它 Adobe Flash 支持好,基本上所有的编码器(摄像头之类)都支持 RTMP 输出。现在 PC 市场巨大,PC 主要是 Windows,Windows 的浏览器基本上都支持 Flash。另外RTMP适合长时间播放,曾经有过测试,联系 100 万秒,即 10 天多连续播放没有出现问题。最后 RTMP 的延迟相对较低,一般延时在 1-3s 之间,一般的视频会议,互动式直播,完全是够用的。

当然 RTMP 并没有尽善尽美,它也有不足的地方。一方面是它是基于 TCP 传输,非公共端口,可能会被防火墙阻拦;另一方面,也是比较坑的一方面是 RTMP 为 Adobe 私有协议,很多设备无法播放,特别是在 iOS 端,需要使用第三方解码器才能播放。

FLV (Flash Video) 是 Adobe 公司推出的另一种视频格式,是一种在网络上传输的流媒体数据存储容器格式。其格式相对简单轻量,不需要很大的媒体头部信息。整个 FLV 由 The FLV Header, The FLV Body 以及其它 Tag 组成。因此加载速度极快。采用 FLV 格式封装的文件后缀为 .flv。

而我们所说的 HTTP-FLV 即将流媒体数据封装成 FLV 格式,然后通过 HTTP 协议传输给客户端。

HTTP-FLV 依靠 MIME 的特性,根据协议中的 Content-Type 来选择相应的程序去处理相应的内容,使得流媒体可以通过 HTTP 传输。相较于 RTMP 协议,HTTP-FLV 能够好的穿透防火墙,它是基于 HTTP/80 传输,有效避免被防火墙拦截。除此之外,它可以通过 HTTP 302 跳转灵活调度/负载均衡,支持使用 HTTPS 加密传输,也能够兼容支持 Android,iOS 的移动端。

说了这么多优点,也来顺便说下 HTTP-FLV 的缺点,由于它的传输特性,会让流媒体资源缓存在本地客户端,在保密性方面不够好。因为网络流量较大,它也不适合做拉流协议。

上述两个协议都是有Adobe公司推出的,而下面要讲的 HLS (HTTP Live Streaming) 则是苹果公司基于 HTTP 的流媒体传输协议。主要应用于 iOS 设备,包含(iPhone, iPad, iPod touch) 以及 Mac OSX 提供音视频直播服务和录制内容(点播)等服务。

相对于常见的流媒体协议,HLS 最大的不同在于它并不是一下请求完整的数据流。它会在服务器端将流媒体数据切割成连续的时长较短的 ts 小文件,并通过 M3U8 索引文件按序访问 ts 文件。客户端只要不停的按序播放从服务器获取到的文件,从而实现播放音视频。

相较 RTMP 而言,使用 HLS 在 HTML5 页面上实现播放非常简单:

直接:

或者:

HLS 的优势:

  • Apple 的全系列产品支持:由于 HLS 是苹果提出的,所以在 Apple 的全系列产品包括 iPhone、 iPad、safari 都不需要安装任何插件就可以原生支持播放 HLS, 现在 Android 也加入了对 HLS 的支持。
  • 穿透防火墙。基于 HTTP/80 传输,有效避免防火墙拦截
  • 性能高。通过 HTTP 传输, 支持网络分发,CDN 支持良好,且自带多码率自适应,Apple 在提出 HLS 时,就已经考虑了码流自适应的问题。

HLS 的劣势:

  • 实时性差,延迟高。HLS 的延迟基本在 10s+ 以上
  • 文件碎片。特性的双刃剑,ts 切片较小,会造成海量小文件,对存储和缓存都有一定的挑战

流媒体协议 RTMP, HTTP-FLV, HLS 简单对比

RTMP 协议为流媒体而设计,在推流中用的比较多,同时大多 CDN 厂商支持RTMP 协议。

HTTP-FLV 使用类似 RTMP流式的 HTTP 长连接,需由特定流媒体服务器分发的,兼顾两者的优点。以及可以复用现有 HTTP 分发资源的流式协议。它的实时性和 RTMP 相等,与 RTMP 相比又省去了部分协议交互时间,首屏时间更短,可拓展的功能也更多。

HLS 作为苹果提出的直播协议,在 iOS 端占据了不可撼动的地位,Android 端也同时提供相应的支持。

又拍云一站式直播解决方案基于又拍云 CDN,支持 RTMP、HTTP-FLV 和 HLS 三大直播协议,并且通过智能调度、链路保障、追帧处理、丢帧处理以及业界首创的 HLS+ 技术,将 RTMP、HTTP-FLV 直播延迟控制在1秒内,将 HLS 直播延时控制在 4 秒左右。

推荐阅读:

战旗石硕:直播的用户体验体系与质量监控方案

和女朋友视频对话时,视频到底经历了哪些处理步骤?

转载于:https://www.cnblogs.com/upyun/p/9881865.html

RTMP、HTTP-FLV、HLS,你了解常见的三大直播协议吗相关推荐

  1. RTMP、HTTP-FLV、HLS,常见的三大直播协议

    随着直播行业大火,游戏.乐秀.教育.发布会等直播类产品层出不穷,能够满足各方人员的需求.在直播中,总能在其中找到适合自己的产品内容.喜欢玩游戏的可以看游戏直播,想学点工作技能的,也可以观看大牛现场授课 ...

  2. RTMP、HTTP-FLV、HLS三大直播协议

    RTMP.HTTP-FLV.HLS,你了解常见的三大直播协议吗 随着直播行业大火,游戏.乐秀.教育.发布会等直播类产品层出不穷,能够满足各方人员的需求.在直播中,总能在其中找到适合自己的产品内容.喜欢 ...

  3. 直播协议的选择:RTMP vs. HLS

    直播协议的选择:RTMP vs. HLS SamirChen2016-07-1761 阅读 前言 随着直播业务的兴起,越来越多的直播平台开始涌现,这火热的程度好像一个应用不带上直播业务出来都不好意思跟 ...

  4. 直播协议HLS技术要点分析:分段生成与m2u8文件

    1.概述: HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPh ...

  5. VUE--播放视频(RTMP、FLV、HLS、Webrtc)

    一.RTMP(需要Flash支持) VLC media player用于检测rtmp是否可以正常播放 链接:官方下载:VLC media player,最棒的开源播放器 - VideoLAN npm ...

  6. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )

    文章目录 安卓直播推流专栏博客总结 一. RTMP 格式解析 二. 文件头 Header 分析 三. 标签 Tag 分析 四. 视频标签 Tag 数据分析 安卓直播推流专栏博客总结 Android R ...

  7. 【Vue】直播流m3u8,rtsp,rtmp,flv,mp4测试地址

    原作者地址:m3u8,rtsp,rtmp,flv,mp4直播流在线测试地址(2022年8月) 前端做直播视频展示的时候,很多时候播放不出来,不是因为自己代码的问题,而是因为网上很多源视频流现在已经播放 ...

  8. m3u8,rtsp,rtmp,flv,mp4直播流在线测试地址(2022年8月)

    前端做直播视频展示的时候,很多时候播放不出来,不是因为自己代码的问题,而是因为网上很多源视频流现在已经播放不出来了,所以源头都有问题,那自己的前端肯定就放不出来. 今天是2022.08.12,刚好有做 ...

  9. 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现.可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施 ...

最新文章

  1. Java_重载与重写
  2. fdisk命令非交互模式及parted的mkpart命令第一个参数说明
  3. 后台服务显示右下角弹窗 -- system权限创建用户权限进程
  4. MYSQL交通系统查询,城市公交查询系统的设计与实现(SSH,MySQL)(含录像)
  5. ###Fedora下安装Retext
  6. mysql 学习笔记10 常用数学函数
  7. 【ActiveReports 大数据分析报告】用数据分析的手段告诉你,复联4有多火爆?
  8. 力扣-387 字符串中的第一个唯一字符
  9. C语言编译过程总结简版
  10. 临床基因组分析相关数据库汇总
  11. 前端开发需要学习的技术:
  12. 手机与电脑大文件无线传输方案
  13. 点歌系统源码 android,安卓盒子点歌系统代码
  14. JS学习笔记之内置对象 4.21
  15. Swin-Unet跑自己的数据集(Transformer用于语义分割)
  16. Your build settings specify a provisioning profile with the UUID, no provisioni(没多大用)
  17. 什么是软连接,以及软连接在linux系统中的用法
  18. LeetCode--574. 当选者
  19. 腾讯安全【数实融合 安全共赢】圆桌栏目,精彩来袭
  20. Android如何打开未安装的apk,android获取未安装的APK文件的信息

热门文章

  1. 维修服务行业薪酬体系设计案例
  2. 异常检测 and GAN网络(1)
  3. 【PMP】三点估算法
  4. 几种查看Matlab函数源代码的方法
  5. 暑假到了,如何有效保护眼睛?盘点保护视力的护眼台灯
  6. python 卡方分布值_饱和模型与偏差计算R方与p值
  7. Elementui+Vue 后台主页面布局
  8. DockWidget
  9. UE4-编辑器脚本之资产批量重命名
  10. VB.NET CHART