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

随着直播业务的兴起,越来越多的直播平台开始涌现,这火热的程度好像一个应用不带上直播业务出来都不好意思跟人打招呼。想要做一个直播业务,主要包括三个部分:采集推流端、流媒体服务端、播放端。这里不多说,就主要结合 iOS 平台,从观看端出发,介绍一下对直播协议的选择。

通常在 iOS 平台做直播业务,会有两种协议可供选择:HLS 和 RMTP。

  • HLS,是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。
  • RTMP,实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

上面是这两种协议的简介,那它们在实际应用中会有什么差异呢?

先说说 HLS。HLS 的基本原理就是当采集推流端将视频流推送到流媒体服务器时,服务器将收到的流信息每缓存一段时间就封包成一个新的 ts 文件,同时服务器会建立一个 m3u8 的索引文件来维护最新几个 ts 片段的索引。当播放端获取直播时,它是从 m3u8 索引文件获取最新的 ts 视频文件片段来播放,从而保证用户在任何时候连接进来时都会看到较新的内容,实现近似直播的体验。相对于常见的流媒体直播协议,例如 RTMP 协议、RTSP 协议等,HLS 最大的不同在于直播客户端获取到的并不是一个完整的数据流,而是连续的、短时长的媒体文件,客户端不断的下载并播放这些小文件。这种方式的理论最小延时为一个 ts 文件的时长,一般情况为 2-3 个 ts 文件的时长。HLS 的分段策略,基本上推荐是 10 秒一个分片,这就看出了 HLS 的缺点:

  • 通常 HLS 直播延时会达到 20-30s,而高延时对于需要实时互动体验的直播来说是不可接受的。
  • HLS 基于短连接 HTTP,HTTP 是基于 TCP 的,这就意味着 HLS 需要不断地与服务器建立连接,TCP 每次建立连接时的三次握手、慢启动过程、断开连接时的四次挥手都会产生消耗。

不过 HLS 也有它的优点:

  • 数据通过 HTTP 协议传输,所以采用 HLS 时不用考虑防火墙或者代理的问题。
  • 使用短时长的分片文件来播放,客户端可以平滑的切换码率,以适应不同带宽条件下的播放。
  • HLS 是苹果推出的流媒体协议,在 iOS 平台上可以获得天然的支持,采用系统提供的 AVPlayer 就能直接播放,不用自己开发播放器。

image

相对于 HLS 来说,采用 RTMP 协议时,从采集推流端到流媒体服务器再到播放端是一条数据流,因此在服务器不会有落地文件。这样 RTMP 相对来说就有这些优点:

  • 延时较小,通常为 1-3s,参考播放器 如ijkplayer、大牛直播播放器。
  • 基于 TCP 长连接,不需要多次建连。

因此业界大部分直播业务都会选择用 RTMP 作为流媒体协议。通常会将数据流封装成 FLV 通过 HTTP 提供出去。但是这样也有一些问题需要解决:

  • iOS 平台没有提供原生支持 RTMP 或 HTTP-FLV 的播放器,这就需要开发支持相关协议的播放器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生命大发的意义 BY 几米

1993年底,我还在广告公司上班。那一年,我在工作上遇到前所未有的低潮。一个寒冷的冬夜,我迷迷煳煳的走进一家位于地下室的命相馆,我还清楚记得,那个纹着两道浓黑夸张柳叶眉毛、声音粗嗄的女相士,用几乎是命…

陌陌怎么发起群活动 陌陌群组发起群活动教程

陌陌是一款好玩的社交类软件,在陌陌上用户可以和好友们组成陌陌群,那么陌陌怎么发起群活动呢,接下来,小编为大家带来陌陌群组发起群活动教程,一起来看看吧! 陌陌怎么发起群活动 陌陌群组发起群活动教程 陌陌发起群活…

Flutter下实现低延迟的跨平台RTSP/RTMP播放

为什么要用Flutter? Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 …

企业微信怎么删除好友 企业微信如何删除成员

1、打开企业微信,点击“通讯录”。 企业微信怎么删除好友 企业微信如何删除成员 2、找到要删除的成员,点击。 企业微信怎么删除好友 企业微信如何删除成员 3、在个人信息页面,点击“⋮”。 企业微信怎么删除好友 企业微信如何删除成员 …

如何推送和播放RTMP H265流 (RTMP HEVC)

rtmp 播放h265 首先要扩展flv协议,国内常用扩展方式是给flv的videotag.codecid增加一个新类型(12)来表示h265(hevc),其他和h264规则差不多,另外和h264不同的地方是要解析HEVCDecoderConfigurationRecord,从HEVCDecoderConfigurationRecord中解…

Win7系统隐藏文件恢复的方法

有不少小伙伴为了自己文件的安全性,选择将自己的文件进行隐藏,但却不知道如何将文件恢复,那么遇到这种问题应该怎么办呢?下面就和小编一起来看看Win7系统隐藏文件恢复的方法吧。 Win7系统隐藏文件恢复的方法 1、首先打开计算机。 Win7系统…

5张图看懂如何实现Windows RTMP实时导播功能

一直以来,好多开发者苦于如何实现RTMP导播数据源实时切换,以下是大牛直播SDK导播切换说明,支持只切换数据源模式,或音视频混音合成输出模式: 数据源: 1. rtmp/rtsp音视频流; 2. 本地屏幕/摄像…

Windows/Android/IOS平台如何在Unity3d播放RTSP/RTMP流

如果基于Unity3d完全重新开发一个播放器,代价大,周期长,不适合快速出产品,最好的方式就是集成现有Native平台上成熟稳定播放器. 集成Navtive播放器可行性分析: 安卓: Unity3d可以调用安卓java接口,这方面的例子很多,搜索能找到一大堆。 IO…

RTMP/RTSP直播播放器的几种选择

播放网络视频,通常解析库我们可以有多个选择,如FFMPEG,Daniulive SDK 或者 vitamio。 1. FFMPEG FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以…

雨林木风win11 64位原版系统v2021.08

雨林木风win11 64位原版系统v2021.08具有很强的兼容性和稳定性,能适配所有型号的电脑并进行安装,绝大部分的硬件驱动也能完美兼容,提供多种装机方式,用户可以自由的选择,非常适合有装机需求的用户。 雨林木风win11 64…

如何实现rtsp h265 转 rtmp (rtsp hevc 转 rtmp)并转发到CDN或自建服务器

rtsp h265 转 rtmp,首先要对rtmp协议做扩展,目前国内已有相应扩展标准,国内开发者基本上都按这个扩展协议做的。协议层问题已解决。剩下关键问题是要实现rtmp h265推送模块, 支持rtmp h265 的server, rtmp h265播放模块。 rtmp h…

萝卜家园win11系统32位微软原版镜像v2021.08

萝卜家园win11系统32位微软原版镜像v2021.08是一款具备了稳定、快速和安全稳定特点的Win11系统,采用了全新的智能安装技术,安装完成后能自动激活,支持全面的驱动,可以完美的兼容各种硬件和软件,且自带安全功能&#xf…

Spydroid还是大牛直播内置RTSP服务SDK

废话不多说,先列二者功能: 1. Spydroid: The stream can be directly read by VLC which is great because VLC is a very powerful tool, for example you can really easily record the stream in a file. [FAQ See the FAQ to find out …

人狠话不多,细说大牛直播SDK之RTMP播放器和RTSP播放器

大牛直播RTSP/RTMP播放器SDK特点: 在没测试过大牛直播SDK的RTMP和RTSP播放器之前,你甚至不相信行业内,RTMP和RTSP播放器(特别是RTMP播放器)延迟可以稳定的做到1秒以内。 无需赘述,全自研内核,…

如何解决Win11开始菜单无法固定的问题

开始菜单很常用,新的 Windows 11 操作系统中最具争议的元素可能是新的开始菜单,它为操作系统带来了更像平板电脑的主屏幕。在我们日常使用Win11系统电脑时,应该有很多用户遇到过需要将运行固定到开始菜单的情况,但是却无法固定这是…

如何在Android推流端内置轻量级RTSP服务

为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务SDK。 内置轻量级RTSP服务后,延迟更低,体验更好(内网环境下,200-400毫秒)。 涉及相关库&#xff…

如何优雅的实现一个靠谱的RTSP播放器?

二话不说,NO 图 NO BB(以大牛直播SDK播放海康摄像机RTSP H.265流为例): 行业的浮躁,好多开发者甚至连rtsp、rtp细节不了解,依葫芦画瓢调用了ffmpeg的一些接口,就实现了个简单版的播放器&#xf…

电脑自带的画图工具怎么使用笔刷

电脑自带的画图工具中有笔刷功能,该怎么使用这个功能涂鸦图片呢?下面我们就来看看详细的教程。 一、书法笔刷1号的方法 电脑自带的画图工具怎么使用笔刷? 1、打开软件。 电脑自带的画图工具怎么使用笔刷? 2、打开图片。 电脑自带的画图工具怎么使用笔刷? …

MQTT代理服务器特性对比

ServerQoS 0QoS 1QoS 2authbridge$SYSSSLdynamic topicsclusterwebsocketsplugin system2lemetry✔✔✔✔✔✔✔✔✔✘Apache ActiveMQ✔✔✔✔✘✘✔✔✔✔✔Apache ActiveMQ Artemis✔✔✔✔✘✘✔✔✔✔✔Bevywise IoT Platform✔✔✔✔rm✔✔✔✔✔rmemitter✔✘✔✘✘✔✔…

foxmail邮箱日历怎么新建事务

我们在日程使用foxmail的时候,很少有邮箱用户知道foxmail是可以创建事务的,该怎么新建事务呢?下面我们就来看看详细的教程。 foxmail邮箱日历怎么新建事务? 1、我们在计算机的桌面内,点击选择foxmail,然后进入到foxmail的主页…