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

news/2024/4/20 12:59:19/文章来源:https://blog.csdn.net/Magic_o/article/details/130327961

被叫去搞直播了,悲喜交加。先学习一下基本的技术栈,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.luyixian.cn/news_show_102903.aspx

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

相关文章

春招,进阿里了....

个人背景是东北某 985 科班本硕,做的 测试开发,有两个自己写的小项目。下面是一些印象比较深刻的面试题 阿里一面 什么是软件测试? 软件测试过程中会面向哪些群体? 开发一个软件都要经过哪些阶段? 什么是黑盒测试&…

八年软件测试生涯,是时候做出改变了

五年前,我在南方的大城市:广州,做着一个快乐的游戏测试,工作不太忙,对一切技术充满了好奇心。测试工作不专业,也不受重视。但我有自己的快乐。工作不忙的时候,我今天学学Python,明天…

什么是客户服务平台?

在社交媒体和智能手机出现之前,品牌主要通过单向广告渠道与客户互动。社交媒体打破了这种自上而下的动态,以前所未有的方式打开了对话,将客户包括在内。 品牌不再控制客户对人们分享公司内容的行为。人们可以点击离开,向左滑动&a…

Python-pyppeteer解决微软Microsoft的登录机器人验证(8)

前言 本文是该专栏的第8篇,结合优质项目案例,让你精通使用Pyppeteer,后面会持续分享Pyppeteer的干货知识,记得关注。 在注册微软Microsoft账号或者注册outlook邮箱账号的时候,会遇到如下机器人验证: 是的,你可能第一眼看到这个验证页面,首先会想到是定位它的页面元素N…

非常详细的阻抗测试基础知识

编者注:为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字&#…

Vue CLI 服务

使用命令 在一个 Vue CLI 项目中,vue/cli-service 安装了一个名为 vue-cli-service 的命令。你可以在 npm scripts 中以 vue-cli-service、或者从终端中以 ./node_modules/.bin/vue-cli-service 访问这个命令。 这是你使用默认 preset 的项目的 package.json&…

电脑突然变成绿屏错误代码无法使用怎么办?

电脑突然变成绿屏错误代码无法使用怎么办?有用户使用电脑的时候,电脑桌面变成了绿屏的显示,所有的操作无法继续进行。遇到这个问题要怎么去进行解决呢?来看看详细的解决方法教学吧。 准备工作: 1、U盘一个(…

(原创)Flutter基础入门:手把手教你搭建Flutter混合项目

前言 Flutter是Google开源的构建用户界面(UI)工具包 支持在不同平台构建一致的ui效果 但在实际业务中,一般不会整个APP都用纯Flutter开发 尤其一些老的项目,会采用接入Flutter的方式来混合开发 那么今天就主要讲一下如何搭建一个…

SQLServer:Win/Linux环境安装及一键部署脚本

1. Win安装SQLServer CSDN已有完整安装流程,亲测可用。----》Windows安装SQLServer流程 2. Linux安装 SQLServer 2.1 设置镜像 curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo > /etc/yum.repos.d/mssql-server.repo 2.2 通过y…

深度学习模型参数量与训练数据量的平衡对泛化性能的影响

一、引言 深度学习模型在计算机视觉、自然语言处理等领域取得了显著的成果。为了获得泛化性能良好的模型,研究者需要在模型复杂度和训练数据量之间找到合适的平衡。本文将探讨这两者之间的关系以及如何在实际应用中实现最佳效果。 二、模型复杂度与训练数据量的关…

史上最严宝宝口粮新国标出台,DHA和维生素D可能无需额外补充了

自2023年2月22日起,我国婴幼儿配方食品(以下简称配方奶)新国标开始实施。这意味着2023年2月22日以后在中国上架销售的配方奶必须符合新国标,重新取得国家市场监督管理总局食品评审中心(CFE-SAMR)的注册。这…

改变思想,拥抱毒瘤,让公司走的更远

牛B的人物,早已经厌倦了中英文混杂,他们更进一步,使用中英文缩写,对普通人进行降维打击。更厉害的,造就新的名词,并科普出去。 有几项技术,我从心底里鄙视和厌恶,但每次在技术方案中…

【MCAL_Uart】-1.1-图文详解Uart串口协议

目录 1 什么是UART 2 UART的电平 3 UART的波特率 4 UART帧格式 4.1 start bit起始位 4.2 data bit数据位 4.3 parity bit奇偶校验位 4.4 stop bit停止位 5 什么是8-N-1 6 UART总线负载率计算 结尾 优质博文推荐阅读(单击下方链接,即可跳转&am…

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 (1&a…

功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面

道路车辆 功能安全审核及评估方法 第3部分:软件层面 Road vehicles - Functional Safety Audit and Assessment Method - Part 3: Software Level (工作组草案) 2022.4.15 前  言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分…

Pytorch深度学习笔记(十)多分类问题

课程推荐:09.多分类问题_哔哩哔哩_bilibili 目录 1. 多分类模型 2. softmax函数模型 3. Loss损失函数 4.实战MNIST Dataset 之前,在逻辑斯蒂回归中我们提到了二分类任务,现在我们讨论多分类问题。 1. 多分类模型 与二分类不同的是多分…

Hive基础和使用详解

文章目录 一、启动hive1. hive启动的前置条件2. 启动方式一: hive命令3. 方式二:使用jdbc连接hive 二、Hive常用交互命令1. hive -help 命令2. hive -e 命令3. hive -f 命令4. 退出hive窗口5. 在hive窗口中执行dfs -ls /; 三、Hive语法1.DDL语句1.1 创建数据库1.2 两…

Redis 数据存储原理

核心模块如图 1-10。 图1-10 图 1-10 Client 客户端,官方提供了 C 语言开发的客户端,可以发送命令,性能分析和测试等。 网络层事件驱动模型,基于 I/O 多路复用,封装了一个短小精悍的高性能 ae 库,全称是 …

【人工智能】遗传算法

人工智能算法---遗传算法(基础篇) 知识导图:遗传算法(概念)1.初始化种群二进制编码与解码 2.选择操作3.交叉操作4.评估操作5.终止操作 知识导图: 遗传算法(概念) 可以把遗传算法类比…