当前位置: 首页 > news >正文

同样数据源走RTMP播放延迟低还是RTSP低?

背景

在比较同一个数据源,是RTMP播放延迟低还是RTSP延迟低之前,我们先看看RTMP和RTSP的区别,我们知道,RTMP(Real-Time Messaging Protocol)和RTSP(Real Time Streaming Protocol)是两种在实时流媒体传输中常用的网络协议。

功能定位

  • RTMP:RTMP是一种实时消息传递协议,主要用于实时流媒体数据的传输。它最初由Adobe Systems设计,用于在Flash播放器和流媒体服务器之间传输音频、视频和数据。RTMP以二进制形式传输数据,具有低延迟和高效传输的特点。
  • RTSP:RTSP则是一种控制流媒体会话的协议,它不直接传输媒体数据本身,而是负责描述流媒体会话,并指示客户端如何获取流媒体数据。RTSP基于文本,使用TCP进行通信,通常用于控制流媒体服务器之间的会话,允许客户端对实时媒体流进行播放、暂停、快进等操作。

传输方式

  • RTMP:RTMP通常使用TCP连接来传输数据。RTMP的传输是单向的,信息主要从服务器端传输到客户端。RTMP允许多个音视频数据流在单个TCP连接上进行传输,并支持分包传输和时间戳机制,以确保数据可以按正确的顺序和时间播放。
  • RTSP:RTSP虽然也使用TCP进行通信,但它支持双向传输,允许服务器端和客户端之间进行实时通信。然而,RTSP本身并不传输媒体数据,而是指示客户端如何从其他协议(如RTP/RTCP)中获取这些数据。RTSP的传输方式更加灵活,可以根据需要选择TCP或UDP进行数据传输。

应用范围

  • RTMP:RTMP因其低延迟和高效传输的特点,广泛应用于需要高性能实时流媒体传输的场景,如直播、视频聊天等。随着HTML5的发展和Flash技术的逐渐淘汰,RTMP的使用虽然有所减少,但在直播领域仍占据重要地位。
  • RTSP:RTSP因其控制功能丰富,广泛应用于需要管理媒体流播放、暂停、定位等操作的场景,如视频监控、视频点播等。它更多地用于控制流媒体服务器之间的会话,确保媒体流能够按需传输和播放。

安全性

  • RTMP:RTMP提供了相对较低的安全性,因为它主要依赖于TCP协议进行传输,容易受到中间人攻击等安全威胁。然而,通过加密和认证等措施,可以在一定程度上提高RTMP传输的安全性。
  • RTSP:RTSP在安全性方面表现较好,因为它支持使用加密和认证等机制来保护媒体流的传输。此外,RTSP还允许客户端和服务器之间进行双向通信,这有助于在传输过程中及时发现和解决安全问题。

其他特点

  • RTMP:RTMP还支持音视频同步传输、优先级设置等功能,以确保播放时的音视频同步性和在带宽受限时合理分配传输资源。
  • RTSP:RTSP具有良好的可扩展性和网络适应性,能够支持多种媒体格式和编码方式,并适应不同网络环境下的流媒体传输需求。

实际测试

为了便于同时测试RTSP和RTMP播放实验,我们通过Android终端采集屏幕数据,然后,同时推RTMP服务和启动轻量级RTSP服务,对外提供RTSP拉流的url,实际看到的实验结果如下:

可以看到,用我们的RTMP推送、轻量级RTSP服务、RTMP|RTSP播放器,延迟基本上相差无几,可见,配好的推拉流服务模块,尤其关键。

总结

RTMP和RTSP在功能定位、传输方式、应用范围、安全性和其他特点等方面存在显著差异。选择使用哪种协议取决于具体的应用需求和场景。单就延迟来看,如果好的RTMP或RTSP播放,二者差异不大,主要是看实际场景。以上是大概的比较,感兴趣的开发者,可以单独跟我沟通探讨。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis的设计哲学和实现方式
  • Maven创建项目中的groupId, artifactId, 和 version的意思
  • Docker 的安装和使用
  • Day-04-QFile打开文件的两种方式
  • UNIX IPC方法的分类
  • 进程+线程+协程
  • Rust的常数、作用域与所有权
  • 如何将图表数据拟合为函数
  • EmguCV学习笔记 C# 9.3 移动检测类
  • flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位
  • 轻松上手,高效产出:音频剪辑工具年度精选
  • Ubuntu 24.04上卸载LibreOffice
  • 怎样在日常生活中避免泄露个人信息
  • pycharm如何安装selenium
  • Linux 开机自动启动服务
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【node学习】协程
  • cookie和session
  • Fabric架构演变之路
  • Golang-长连接-状态推送
  • GraphQL学习过程应该是这样的
  • java小心机(3)| 浅析finalize()
  • leetcode46 Permutation 排列组合
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL-事务管理(基础)
  • NSTimer学习笔记
  • spring security oauth2 password授权模式
  • 给github项目添加CI badge
  • 如何优雅地使用 Sublime Text
  • 微服务核心架构梳理
  • 我是如何设计 Upload 上传组件的
  • 一个项目push到多个远程Git仓库
  • ​2021半年盘点,不想你错过的重磅新书
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • "无招胜有招"nbsp;史上最全的互…
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #NOIP 2014# day.1 T2 联合权值
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (3)(3.5) 遥测无线电区域条例
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Python) SOAP Web Service (HTTP POST)
  • (TOJ2804)Even? Odd?
  • (web自动化测试+python)1
  • (备忘)Java Map 遍历
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)springcloud实战之config配置中心
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (十三)Flask之特殊装饰器详解
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .NET CLR基本术语
  • .NET Core 2.1路线图
  • .NET Core 版本不支持的问题
  • .NET/C# 的字符串暂存池