秒懂流媒体协议 RTMP 与 RTSP

简介: RTMP 与 RTSP 是比较常见的两种流媒体协议,那么什么是RTMP?什么是RTSP?它们两之间有什么区别?使用的时候应该如何选择?

你好,这里是网络技术联盟站。

RTMP 与 RTSP 是比较常见的两种流媒体协议,那么什么是RTMP?什么是RTSP?它们两之间有什么区别?使用的时候应该如何选择?

今天瑞哥就用人话好好和大家聊聊,如果觉得对您有帮助,可以收藏。

什么是流媒体协议?

流媒体协议,英文学名Streaming Protocol,用一句人话来解释:流媒体协议是一种用于通过 Web 传递多媒体的协议。

每次观看直播或点播视频时,背后的技术就是 流媒体协议

流媒体协议有很多,主要分为三大类:

  • 传统视频流协议
  • 基于 HTTP 的自适应协议
  • 新技术
传统视频流协议

传统视频流协议主要有:

  • RTMP
  • RTSP
基于 HTTP 的自适应协议

基于 HTTP 的自适应协议主要有:

  • Apple HLS
  • Low-Latency HLS
  • MPEG-DASH
  • Adobe HDS
新技术

新技术主要有:

  • SRT
  • WebRTC

而我们今天着重要介绍和比较的就是传统视频流协议:RTMP和RTSP

TCP 和 UDP

在探讨RTMP和RTSP前,我们有必要先了解一下TCP 和 UDP,因为 RTMP 是基于 TCP 开发的,那么 RTSP 使用到了 UDP

TCP

TCP 英文全称:Transmission Control Protocol,中文意思:传输控制协议

TCP协议是位于应用层和网络层之间的传输控制协议,用于提供可靠的流传输服务,即以字节流的形式传输数据和以字节流的形式接收数据。TCP 使用确认机制来检查数据是否安全可靠地到达,在发送端进行复用,在接收端进行解复用。TCP 使用三个阶段来实现连接定向功能,如连接建立、数据传输和连接终止。

UDP

UDP 英文全称:User Datagram Protocol ,中文意思:用户数据报协议

UDP是一种无连接协议,即将数据从一端传输到另一端;无需建立连接。UDP 也位于应用层和网络层之间。它还以数据包的形式传递数据或信息;这些数据包称为用户数据报。UDP 使用多路复用来处理来自多个进程的传出用户数据报,并使用解复用来处理进入同一主机上不同进程的传入用户数据报。

TCP 与 UDP 区别

  • TCP 是面向连接的,而 UDP 是无连接的
  • TCP 是重量级的,而 UDP 是轻量级的
  • TCP 提供可靠的服务,而 UDP 不提供可靠的服务
  • TCP 支持重传机制,而 UDP 不支持
  • TCP 数据包按顺序到达接收器,而 UDP 无序
  • TCP 不支持广播,而 UDP 支持广播
  • TCP 连接是一个字节流,而 UDP 连接是消息流

以上就是最基础的部分,下面我切入今天的主题:RTMP 和 RTSP 协议。

RTMP

  • 英文全称:Real Time Messaging Protocol
  • 中文意思:实时消息协议
  • 底层协议:TCP
  • 应用级视频流协议
  • 视频编解码器:H.264
  • 音频编解码器:AAC
  • 延迟:3 - 30 秒

RTMP 2005 年诞生,由 Macromedia 开发,后来被 Adobe 收购,在流媒体市场上有着悠久的历史。最初用于在 RTMP 服务器和用户设备上的 Flash 播放器之间传输数据,不过Flash 于 2020 年正式结束了。

RTMP 的最大优点是可以在服务器和客户端服务器之间保持稳定的连接,无论用户的互联网连接质量如何,它都可以无缝低延迟进行流媒体传输。这个技术主要通过将数据流分成相等的小部分(音频数据默认为 64 字节,视频数据默认为 128 字节)并将它们顺序传输到接收设备,然后将它们重新组合成视频流来实现的。

RTMP 工作原理 ⭐

一般来说视频流是这样工作的:

  1. 摄像头捕获视频
  2. 通过编码器将视频流传输到视频平台服务器
  3. 视频平台处理视频流
  4. 通过CDN分发到离用户最近的服务器上
  5. 最后视频流就能成功的到达用户设备

那么这个环节中RTMP就起到了非常重要的作用,在视频从摄像头到服务器的过程中,RTMP将大量数据分割成小块并跨多个虚拟通道传输,在视频源和 RTMP 服务器之间提供了稳定和流畅的视频流。

RTMP 最大的缺点是它与 HTML5 播放器不兼容,这样的话必须使用另一种协议,例如 HLS来传输视频文件到达用户的设备,此外,RTMP 容易受到带宽问题的影响。

RTSP

  • 英文全称:Real Time Streaming Protocol
  • 中文意思:实时流协议
  • 底层协议:TCP 和 UDP
  • 网络控制协议
  • 视频编解码器:H.265
  • 音频编解码器:AAC
  • 延迟:2 秒

RTSP 1996年诞生,由 RealNetworks、Netscape 和哥伦比亚大学的专家联合开发,用于控制 VHS 式视频流的娱乐和通信系统,RTSP 使用高效的 RTP 协议,将流数据分解成更小的块,这样可以更快地传递。

RTSP 支持可靠的分段流,这意味着用户可以在仍在下载流的同时继续观看流。

Android 和 iOS 设备没有开箱即用的 RTSP 兼容播放器,所以普及度并不高,但 RTSP 在许多监控 和闭路电视 (CCTV) 应用非常广泛,远程摄像头、在线教育和互联网直播等,都用的比较频繁。

上面提到RTSP使用RTP协议进行分解视频块的,这里我们来讲一下RTP协议。

RTP协议,英文全称:Real-time Transport Protocol,中文就是实时传输协议,它的底层其实就是UDP,这样一来就可以实现低延迟

除了RTP协议,为确保流畅和一致的流传输,RTSP 还使用另外两种网络通信协议:

  • TCP 收发控制命令(例如播放或停止请求)
  • UDP 传送音频、视频和数据。

这个怎么理解呢?

TCP可靠传输,比如用户按下播放或者停止播放的时候,这个是个准确的请求,这个需要保证可靠性,这个时候TCP作用就体现了。

UDP是低延迟的协议,那么用于传送音频、视频和数据可以达到非常高效的效果。

RTSP 工作原理 ⭐

  1. 用户设备向视频流平台发送 RTSP 请求
  2. 视频流平台返回可以操作的请求列表,比如播放、暂停等
  3. 用户设备向视频流平台发送具体的请求,比如播放
  4. 视频流平台解析请求并调用指定机制启动视频流处理

由于 RTSP 依赖于专用服务器,并且依赖于 RTP,因此该协议不支持加密视频内容或重传丢失的数据包。

RTMP 与 RTSP 区别

1、延迟

  • RTMP:3-30秒
  • RTSP:2-5秒

2、音频编解码器

  • RTMP:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis
  • RTSP:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis

3、视频编解码器

  • RTMP:H.264, VP8, VP6, Sorenson Spark®, Screen Video v1 & v2
  • RTSP:H.265 (preview), H.264, VP9, VP8

4、优点

  • RTMP:

    • 低延迟
    • 适应性
    • 灵活性
    • 不需要缓冲
  • RTSP:

    • 低延迟
    • 分段流式传输

5、缺点

  • RTMP:

    • 带宽问题
    • HTML5 不支持
    • 某些浏览器和设备的兼容性问题
    • 安全性有点低
  • RTSP:
  • HTTP 不兼容
  • 依赖于其他协议

RTMP 与 RTSP 该如何选择?

其实看完RTMP 与 RTSP 区别,应该对于使用场景有见解式的认识了。

  • IP 摄像机、物联网设备,那么选择 RTSP准不会错

  • 第三方流媒体应用,那么选择RTMP准不会错

总结

本文主要介绍了流媒体协议、TCP与UDP协议、RTMP与RTSP协议,RTMP 和 RTSP 流媒体协议都有各自的优势。

RTMP 提供与不同摄取设备的兼容性和低延迟流媒体的稳定性,但是,您需要一个特定的 Flash Media Server 来使用 RTMP 分发您的内容,所以RTMP 适用于主要的第三方流应用程序和较旧的硬件编码器;

RTSP 最适用于 IP 摄像机和运行 IP 摄像机的设备,例如无人机。

朋友们,你们明白了吗?

目录
相关文章
|
监控 物联网 编解码
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
|
监控 物联网 应用服务中间件
流媒体方案之Nginx——实现物联网视频监控项目
流媒体方案之Nginx——实现物联网视频监控项目
流媒体方案之Nginx——实现物联网视频监控项目
|
4月前
|
存储 Web App开发 监控
在AlmaLinux或CentOS 8上编译安装ZLMediaKit流媒体服务器
以上就是在AlmaLinux或CentOS 8上从头开始手动构建和部署 ZLMeida Kit 流媒体服务器框架所需执行一系列命令与步骤概览。务必注意,在实际部署时还需要考虑网络配置(如防火墙规则)、持久化存储(用于存放日志和用户数据)以及服务监控与管理策略等因素。
263 10
|
网络协议 网络安全 流计算
【流媒体】RTMP、RTSP、HLS、HTTP协议的介绍与对比
【流媒体】RTMP、RTSP、HLS、HTTP协议的介绍与对比
1488 0
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
3074 0
|
监控 网络协议 网络安全
【专栏】RTMP和RTSP是流媒体传输常用的协议:秒懂
【4月更文挑战第28天】RTMP和RTSP是流媒体传输常用的协议。RTMP由Adobe开发,适合低延迟的实时通信,常用于网络直播和在线游戏;而RTSP是IETF定义的协议,侧重于流媒体播放控制,适用于视频监控和VoD服务。RTMP在业界普及度高,RTSP则在专业领域更常见。选择时需考虑延迟、应用场景和安全性等因素。
2586 1
|
Web App开发 编解码 监控
直播协议
【10月更文挑战第26天】不同的直播协议具有不同的特点和应用场景。在选择直播协议时,需要根据直播的需求、目标受众、网络环境等因素进行综合考虑,以选择最适合的直播协议,确保直播的流畅性、稳定性和高质量。
|
缓存 视频直播 Linux
FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务
《FFmpeg开发实战》书中介绍了轻量级流媒体服务器MediaMTX,适合测试但不适用于生产环境。SRS是一款国产开源服务器,支持RTMP、SRT等协议,适合生产使用。要启用SRS的SRT推流,需配置`srt.conf`,开启SRT服务并配置端口。在确保FFmpeg集成libsrt后,拉流则使用类似但带有`m=request`的地址。在Windows上,同样需要集成libsrt的FFmpeg来使用ffplay拉流。SRS的日志确认了推拉流的成功。书中提供更深入的FFmpeg开发知识。
794 2
FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务
|
Web App开发 移动开发 前端开发
web端实现rtsp实时推流视频播放可行性方案
总之,要在Web端实现RTSP实时推流视频播放,需要使用适当的前端技术(如HTML5 Video或WebRTC),以及媒体服务器或流转换器来处理RTSP流。这需要一些开发和配置工作,但是可以实现实时视频流的播放。具体的实现方案可能会根据您的需求和技术栈而有所不同,所以需要仔细评估和选择适合您的解决方案。
2397 0
|
存储 监控 网络协议
什么是RTSP
RTSP,即实时流传输协议,英文全称为Real-Time Streaming Protocol
1834 0

热门文章

最新文章