【音视频第17天】RTSP、RTMP协议初识

news2025/2/25 1:05:22

被叫去搞直播了,悲喜交加。先学习一下基本的技术栈,RTSP RTMP HTTP
先简单随便看看吧。

目录

    • 什么是流媒体协议
    • RTMP
      • RTMP 工作原理
    • RTSP
      • RTSP 工作原理
    • RTMP 与 RTSP 区别
    • 详细看看RTSP
      • 简介
      • RTSP交互流程
        • OPTIONS
        • DESCRIBE
        • SETUP
        • PLAY
        • PAUSE
        • SET_PARAMETER
        • GET_PARAMETER
        • ANNOUNCE
        • TEARDOWN

什么是流媒体协议

流媒体协议,英文学名Streaming Protocol,用一句人话来解释:流媒体协议是一种用于通过 Web 传递多媒体的协议。
RTMP 和 RTSP 是两种不同的视频传输协议,它们的主要区别在于应用场景和传输方式。
在这里插入图片描述

RTMP

英文全称:Real Time Messaging Protocol
中文意思:实时消息协议
底层协议:TCP
应用级视频流协议
视频编解码器:H.264
音频编解码器:AAC
延迟:3 - 30 秒
RTMP 2005 年诞生,由 Macromedia 开发,后来被 Adobe 收购。最初用于在 RTMP 服务器和用户设备上的 Flash 播放器之间传输数据。是闭源的。RTMP 的最大优点是可以在服务器和客户端服务器之间保持稳定的连接,无论用户的互联网连接质量如何,它都可以无缝低延迟进行流媒体传输。这个技术主要通过将数据流分成相等的小部分(音频数据默认为 64 字节,视频数据默认为 128 字节)并将它们顺序传输到接收设备,然后将它们重新组合成视频流来实现的。
先切开,然后传输,然后再组合起来。
RTMP 最大的缺点是它与 HTML5 播放器不兼容,这样的话必须使用另一种协议,例如 HLS来传输视频文件到达用户的设备,此外,RTMP 容易受到带宽问题的影响。
在这里插入图片描述

RTMP 工作原理

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

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

在视频从摄像头到服务器的过程中,RTMP将大量数据分割成小块并跨多个虚拟通道传输,在视频源和 RTMP 服务器之间提供了稳定和流畅的视频流。
RTMP就简单看看就好了。重点关注一下RTSP协议。

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协议进行分解视频块 的,使用TCP 收发控制命令(例如播放或停止请求),使用UDP 传送音频、视频和数据。
TCP可靠传输,比如用户按下播放或者停止播放的时候,这个是个准确的请求,这个需要保证可靠性,这个时候TCP作用就体现了。
UDP是低延迟的协议,那么用于传送音频、视频和数据可以达到非常高效的效果。

RTSP 工作原理

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

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 不兼容、依赖于其他协议

详细看看RTSP

简介

用于Internet上针对多媒体数据流的一种传输协议,是应用层协议。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输RTSP默认使用554端口(服务器的端口)
在这里插入图片描述

RTSP交互流程

在这里插入图片描述
RTSP的消息有两大类:请求消息(request)、响应消息(response)
在这里插入图片描述

OPTIONS

Options 是客户端用来向服务器查询支持的方法之用
Options不是所有的Server都支持的
在Options的回复报文中返回支持的方法
Options可用作客户端与服务器的心跳
请求消息:
OPTIONS rtsp://10.137.13.70:554/88888888/16/20200708/268435616/268435616.ts RTSP/1.0CSeq: 1
Content-Length: 0User-Agent: CTC RTSP
响应消息:
RTSP/1.0 200 OKServer: HMS_V1R2CSeq: 1
Date: Fri, 11 Sep 2020 02:07:36GMTSession: 2954565955
Timeshift-Status: 0
Public: DESCRIBE,SETUP, PLAY PAUSE,GET_PARAMETER,SET_PARAMETER TEARDOWN

DESCRIBE

Describe主要用于客户端向服务器查询会话描述信息
如果不存在则返回404或者重定向
如果存在则返回媒体的描述信息。
它可能使用同意头部(Accept)来指出客户端能理解的描述格式。服务器以所请求的资源的描述作为回应
请求消息:
DESCRIBE rtsp://10.137.13.70:554/88888888/16/20200708/268435616/268435616.ts RTSP/1.0CSeq: 2
Content-Length: oUser-Agent: CTC RTSPSession: 2954565955Accept: application/sdp
响应消息:
RTSP/1.0 200 OKServer: HMS_V1R2CSeq: 2
Date: Fri,11 Sep 2020 02:07:36 GMTSession: 2954565955
Content-Length: 134
Content-Type: application/sdp
Content-Base: rtsp://10.137.13.70:554/88888888/16/20200708/268435616/268435616.ts/

SETUP

请求消息:
SETUP rtsp://10.137.13.70:554/88888888/16/20200708/268435616/268435616.ts RTSP/1.0
CSeq: 3
Transport: MP2T/RTP/UDP;unicast;client_port=1234-1235;destination=10.137.13.71;
User-Agent: CTC RTSP
Session: 2954565955
响应消息:
RTSP/1.0 200 OK
Server: HMS_V1R2
CSeq: 3
Date: Fri, 11 Sep 2020 02:07:36 GMT
Session: 2954565955
Timeshift-Status: 0
Transport: MP2T/RTP/UDP;unicast;client_port=1234-1235;destination=10.137.13.71;source=10.137.13.70;server_port=8046-8047;ssrc=4

PLAY

PAUSE

SET_PARAMETER

GET_PARAMETER

ANNOUNCE

TEARDOWN

MRF上发布直播组播放频道,组播流转发到承载网,并提供频道的组播地址

MRF(Multicast Routing Protocol) 是一种用于在 IP 网络中传输组播数据的协议。在这里,MRF 被用来发布直播组播放频道,并将组播流转发到承载网。

承载网 (Transport Network) 是指用于传输数据的网络,通常是指光纤网络、铜线网络或其他类型的网络,这些网络可以传输不同类型的数据,例如 IP 数据包、ATM 数据包或 Frame Relay 数据包。

频道 (Channel) 是指一组相关的数据流,这些数据流可以是由同一媒体传输的,也可以是由不同的媒体传输的。在直播组播频道中,一组数据流被打包成一组,这些数据流可以来自不同的源,也可以来自不同的媒体。

组播地址 (Multicast Address) 是指用于标识组播源和接收者之间的通信的 IP 地址。在直播组播频道中,频道的组播地址被提供给用户,以便他们可以加入该频道并接收直播数据流。

发布直播组播频道 (Publish a Multicast Channel) 是指将一组相关的数据流打包成一组,并将其发布给特定的组播地址,以便感兴趣的用户可以加入该频道并接收这些数据流。

可以看看live555,那个代码里面有rtsp,流程很清晰,很好理解如果要做流媒体客户端的话,可能会用到directshow。这里面live555和directshow是什么意思?

live555 是一个开源的基于 C++ 的流媒体服务器软件,它支持多种流媒体协议,包括 RTMP、RTSP、HTTP 和 TCP。live555 提供了丰富的功能,如视频流加密、压缩、流媒体协议转换等,可以用于制作流媒体服务器。

DirectShow 是 Windows 操作系统中用于处理视频和音频的 API,它支持多种流媒体协议,包括 RTMP、RTSP、HTTP 和 TCP。DirectShow 提供了丰富的函数和工具,用于制作流媒体服务器和客户端。使用 DirectShow,开发人员可以方便地实现视频和音频的流式传输,包括视频解码、音频解码、流加密和压缩等功能。

如果要开发流媒体客户端,使用 live555 和 DirectShow 是非常有帮助的。live555 提供了 RTMP 和 RTSP 协议的支持,而 DirectShow 提供了多种流媒体协议的解析和处理功能,可以帮助开发人员更方便地实现流媒体接收和播放功能。

今天就到这吧,累了,回家

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

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

相关文章

代码随想录算法训练营第四十一天|343. 整数拆分、96.不同的二叉搜索树

文章目录 343. 整数拆分96.不同的二叉搜索树:star: 343. 整数拆分 题目链接:代码随想录 本题就是一个个递推,通过将dp[i]定义为第i个值的最大乘积 然后最大乘积有两种来源,一个是(i - j) * j 还有一种是dp[i - j] * j; 解题思路:…

Nautilus Chain :基于模块化架构的Layer3正在走向成熟

Nautilus Chain是一个基于Eclipse和Celestia构建的模块化Layer3链。作为定位在Layer0的链基建概念,Eclipse和Celestia为面向未来的区块链扩容技术提供了一套开发工具和基础框架。尽管这种前沿技术过去一直处于概念验证阶段,尚未推出适用于大规模应用的成…

【消息队列】Kafka请求如何被处理的

前言 对于Kafka来说,分为几个阶段,一个是消息的生产请求,以及对应的消息的消费请求。一个是生产者发送到Broker,另一个是消费者通过pull的方式 请求Broker,那么Broker是如何处理这几个请求的。细分下来主要常见的是如…

OFDM-LS信道估计 MMSE信道估计公式推导

假设ofdmN个子载波之间是完全正交的,即不考虑ICI影响,通过发送训练序列来实现信道估计。 其中,在推导6.8的时候,需要将6.6先拆解一下。 X − 1 Y X − 1 ( X H Z ) X − 1 X H X − 1 Z H X − 1 Z X^{-1}Y X^{-1}(XHZ)…

【难学易用c++ 之 继承】

目录: 前言一、继承的概念及定义(一)概念(二)继承定义继承关系和访问限定符继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七…

TiDB实战篇-常用的高可用架构

简介 TiDB实战篇-常用的高可用架构。 高可用要考虑的问题 同城三中心 RTO<35秒 RPO0(因为一个数据中心挂点了&#xff0c;还有其他两个可以提供服务) (优点)数据副本不能在同一个数据中心&#xff08;raft多数存活&#xff09;&#xff08;PD的label标签能够解决这个问题…

OpenCV基础之常见的图像梯度算子

文章目录 OpenCV基础之常见的图像梯度Roberts交叉算子Prewitt算子Sobel算子Laplacian算子 OpenCV基础之常见的图像梯度 梯度是一个向量&#xff0c;梯度方向指向函数变化最快的方向&#xff0c;大小就是它的模&#xff0c;也是最大的变化率。 图像梯度是指在图像中某个位置处沿…

关于容器(Docker)的形象比喻

1 将容器比喻为样板间 容器是一种特殊的进程 容器依赖与Linux操作系统内核的几项技术&#xff1a;namespace、cgroup、chroot namespace 与编程语言里的 namespace 有点类似&#xff0c;它可以创建出独立的文件系统、主机名、进程号、网络等资源空间&#xff0c;相当于给进程…

回归问题(Regression)

Regression 前言Dependent vs. Explanatory VariablesHandle Numerical Labelssquared error和variance什么区别 Linear RegressionLinear Regression in 1 Dimension Least Squares &#xff08;最小二乘&#xff0c;重点&#xff09;Least Squares ObjectiveMinimizing a Dif…

确保软件项目成功——验收测试指南

确保软件项目成功——验收测试指南 在软件项目验收测试中&#xff0c;软件测试报告是非常重要的一部分&#xff0c;需要准备和提交。以山东省在2021印发的《政府采购履约验收管理办法》为例&#xff1a; 省级各国家机关、事业单位和团体组织&#xff08;以下统称“采购人”&…

会话跟踪——JWT令牌

会话指的是浏览器与服务器之间的一次连接&#xff0c;我们称之为一次会话。 在用户打开浏览器第一个访问服务器的时候&#xff0c;这个会话就建立了&#xff0c;只要有任何一方断开连接&#xff0c;此时会话就结束了。再一次会话中是可以包含多次请求和相应。那什么是会话跟踪呢…

动力节点springsecurity笔记14~18SpringSecurity 集成thymeleaf

15 SpringSecurity 集成thymeleaf 此项目是在springsecurity-12-database-authorization-method 的基础上进行 复制springsecurity-12-database-authorization-method 并重命名为springsecurity-13-thymeleaf 15.1 添加thymeleaf依赖 | <groupId>org.springframewor…

vue3+vite3+typescript使用wangEditor编辑器

文章目录 ⭐写在前面⭐步入正题&#x1f680;1.安装&#x1f680;2.配置2.1 存数据2.2 读数据 &#x1f680;3.跨域及其他问题3.1 跨域3.2 其他问题 &#x1f680;4.写在最后 ⭐写在前面 &#x1f680; 框架Vue3 Vite3 TypeScript&#xff1a; &#x1f449; Vue3&#xff…

地铁站人流检测硬件部分

目录 一、概述 二、驱动程序 2.1debug串口 2.2体重传感器HX711 2.3滴答定时器 2.4ESP8266 2.5人体检测 2.6 IIC的GPIO 2.7 OLED的IIC 2.8 LED 三、应用 四、中断 一、概述 使用STM32C8T6作为主控 A9 ---> tx&#xff08;调试串口&#xff09; A10 ---> …

算法训练 Day41 | 动态规划

343. 整数拆分 思路&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i]&#xff1a;分拆数字i&#xff0c;可以得到的最大乘积为dp[i]。 确定递推公式&#xff1a;dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j)) 可以想 dp[i]最…

【python装饰器:看懂这10个例子你就掌握了!】

基本说明 Python 装饰器是一种函数&#xff0c;它可以用来修改其他函数的功能。它是 Python 中的一项高级编程技术&#xff0c;也是 Python 中比较重要的语法之一。 简单来说&#xff0c;装饰器就是一个函数&#xff0c;它可以接受一个函数作为参数&#xff0c;并返回一个函数…

Obsidian+坚果云+FolderSync解决电脑端和安卓端同步方案

目录1.Obsidian电脑端准备 2.Obsidian安卓端准备 3.坚果云电脑端准备 4.坚果云手机端准备 5.FolderSync手机端准备 6.百度云冗余备份 1.Obsidian电脑端准备 这里以windows版本为例&#xff0c;下载后安装 1.Obsidian官网&#xff1a;https://obsidian.md/ 官网下载有时候…

电力电网行业IT运维方案

智能电网背景下&#xff0c;电力、电网企业信息化逐渐渗透到其业务链的各个环节&#xff0c;云计算、物联网、移动互联网等新技术的应用&#xff0c;更驱动信息化与业务创新深度融合。电力、电网企业集团信息系统群逐渐朝着一体化方向发展&#xff0c;信息链越来越长&#xff0…

银行数字化转型导师坚鹏:宏观经济趋势与资本行业机遇和挑战

2023年宏观经济趋势与资本行业机遇和挑战 课程背景&#xff1a; 很多学员存在以下问题&#xff1a; 不知道我国目前的宏观经济形势&#xff1f; 不清楚宏观环境对我国经济的影响&#xff1f; 不知道资本行业未来主要发展趋势&#xff1f; 课程特色&#xff1a; 精彩解…

基于php的校园校园兼职网站的设计与实现

摘要 近年来&#xff0c;信息技术在大学校园中得到了广泛的应用&#xff0c;主要体现在两个方面&#xff1a;一是学校管理系统&#xff0c;包括教务管理、行政管理和分校管理&#xff0c;是我国大学管理和信息传递的主要渠道。二是学生生活服务平台。而随着大学生毕业人数的年…