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

常见的直播协议

国内常见的直播协议有几个: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 秒左右。

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. 直播协议服务器,p2p直播服务器和流媒体协议有关系吗?

    P2p直播服务器顾名思义使用P2P技术.目前,P2P技术可实现共享文件.流媒体播放.点对点通信软件等等,比如下载站常见的迅雷和视频站常见的爱奇艺.P2P技术属于分布式系统的应用,通常表现为客户端直接交 ...

  6. LiveNVR配置拉转RTSP传统海康大华安防摄像机直播流输出RTSP/RTMP/HLS/HTTP-FLV如何获取直播流地址

    LiveNVR配置拉转RTSP传统海康大华安防摄像机直播流输出RTSP/RTMP/HLS/HTTP-FLV如何获取直播流地址 1. Onvif/RTSP流媒体服务 2.配置拉转直播流 2.1 RTSP ...

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

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

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

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

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

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

最新文章

  1. WebStack-Hugo | 一个静态响应式网址导航主题
  2. Kapacitor安装及使用
  3. TypeError: only integer scalar arrays can be converted to a scalar index
  4. where条件中等值连接使用双竖杠影响SQL性能
  5. Java电子发票管理系统
  6. 解决npm 下载速度慢的问题
  7. linux上java设置内存,linux 设置java内存
  8. 数据库表结构及索引设计
  9. 破局:技术视野与规划
  10. jQuery fadeIn() 方法
  11. CF1633D Make Them Equal(bfs + 01背包)
  12. 互联网+大赛作品_“颂中国力量 绘美好梦想”全市中小学生互联网+书画大赛作品展示(四)...
  13. 信息学奥赛一本通 1359:围成面积
  14. 牛客——小a与星际探索
  15. 戴尔服务器无视频信号,开启电脑 显示器提示无视频信号
  16. QQ界面技术(DirectUI)
  17. java 生成txt文档 指定编码格式
  18. [何以解忧唯有颓废]老舒
  19. laravel Carbon函数
  20. 测试游戏cpu和显卡占用软件,什么软件能检测游戏频数和cpu占有率?

热门文章

  1. 春花秋月何时了,互联网广告系统知多少?
  2. 关于Node.js后端架构的一点后知后觉
  3. [小黄书后台]文件上传到CDN
  4. vmware卸载后有残留,无法重新安装
  5. MS08067 WEB高级攻防实战班第一期 开班啦~(附最新授课目录)
  6. linux mysql命令
  7. ubuntu linux0.12,ubuntu Linux 安装 jdk1.6.0_12和 Netbean 6.5
  8. 自动化测试框架cucumber_10分钟学会自动化测试框架--Cucumber + Watir
  9. 为Adobe Reader添加书签功能
  10. 【Try to Hack】john哈希破解工具