图传推流学习(敬请期待)
图传推流简介
- 1.RTSP、RTP与RTCP
- 2.搭建rtsp服务器(资源下载)
- 3.搭建rtsp服务器(搭建过程)
1.RTSP、RTP与RTCP
RTSP(Real Time Streaming Protocol)、RTP(Real-time Transport Protocol)和RTCP(Real-time Transport Control Protocol)是流媒体传输中常用的三个协议,它们各自有不同的功能和用途:
(1)RTSP(Real Time Streaming Protocol)
RTSP 是一种应用层协议,用于控制流媒体的播放,如暂停、快进等。它本身并不传输媒体数据,而是作为流媒体服务器的远程控制协议。RTSP 允许客户端与服务器之间建立和控制会话,其语法和运作类似于 HTTP 1.1,但强调的是实时性。
RTSP 基于 TCP 协议进行传输,负责流媒体通道参数的协商以及具体的控制信息,如播放、暂停、停止等。
(2)RTP(Real-time Transport Protocol)
RTP 是一个网络传输协议,用于在互联网上传递音频和视频的标准数据包格式。它提供端到端的实时传输服务,包括时间戳(用于同步)、序列号(用于丢包和重排序检测)以及负载格式(用于说明数据的编码格式)。
RTP 用于实时传输数据,如音频和视频数据,它建立在 UDP 上,与 RTCP 协议一起使用,以提供服务质量(QoS)反馈和同步媒体流。
(3)RTCP(Real-time Transport Control Protocol)
RTCP 是 RTP 的配套控制协议,用于传输控制信息和统计数据,并不直接传输媒体数据。它以周期性的方式发送,提供了传输质量反馈、参与者统计、会话控制等功能
。
RTCP 与 RTP 一起工作,用于监测保证传输的 QoS 和传输统计数据。RTCP 通常包括发送方和接收方的报告,而 RTP 协议包含有效载荷类型、时间戳、序列号等信息
。
在流媒体传输中,RTSP、RTP 和 RTCP 这三个协议协同工作,以确保媒体数据能够实时、高效且可靠地传输。以下是它们如何协同工作的详细说明:
1.RTSP(控制层):
- 会话建立:客户端通过 RTSP 向服务器发送请求,建立会话。这包括请求媒体流的 URL、指定传输协议(通常是RTP/RTCP)和传输参数。
- 会话控制:一旦会话建立,客户端可以使用 RTSP 命令(如PLAY、PAUSE、STOP)来控制媒体流的播放。RTSP 服务器响应这些命令,并控制媒体流的传输。
- 会话终止:当客户端不再需要媒体流时,可以通过 RTSP 发送 TEARDOWN 命令来终止会话。
2.RTP(数据传输层):
- 数据封装:服务器将媒体数据封装成 RTP 包。每个 RTP 包包含一个头部,其中包含时间戳、序列号等信息,用于同步和顺序传输。
- 数据传输:RTP 包通过 UDP 发送到客户端。UDP 是无连接的,适合实时传输,因为它减少了延迟。
- 数据接收:客户端接收 RTP包,并根据时间戳和序列号重新组装和同步媒体数据。
3.RTCP(控制和反馈层):
- 质量反馈:RTCP 定期从发送方和接收方发送控制包,包含传输统计信息,如丢包率、延迟和抖动等。
- 同步:RTCP还用于同步不同的媒体流,例如,确保音频和视频流同步播放。
- 参与者统计:RTCP 报告还可以提供参与者统计信息,如参与者数量和身份。
4.协同工作流程:
- 初始化:客户端通过 RTSP 请求媒体流,服务器响应并建立 RTSP 会话。
- 媒体流传输:服务器开始通过 RTP 发送媒体数据,同时通过RTCP 发送控制和统计信息。
- 实时控制:客户端可以通过 RTSP 命令实时控制媒体流,如暂停或调整播放速度。
- 质量监控:客户端和服务器通过 RTCP 交换传输质量反馈,以便调整传输参数或采取错误恢复措施。
- 会话结束:客户端通过 RTSP 发送TEARDOWN 命令,服务器停止发送 RTP/RTCP 数据,会话结束。
通过这种协同工作,RTSP、RTP 和 RTCP 共同确保了流媒体的实时性、同步性和传输质量,为用户提供流畅的媒体播放体验。
2.搭建rtsp服务器(资源下载)
推荐开源项目:SmolRTSP —— 轻量级嵌入式RTSP服务器库
3.搭建rtsp服务器(搭建过程)
相关文章:
图传推流学习(敬请期待)
图传推流简介 1.RTSP、RTP与RTCP2.搭建rtsp服务器(资源下载)3.搭建rtsp服务器(搭建过程) 1.RTSP、RTP与RTCP RTSP(Real Time Streaming Protocol)、RTP(Real-time Transport Protocol࿰…...

【JavaGuide】十大经典排序算法总结
冒泡排序 算法步骤 不断的两两比较,这样当前最大的元素总是会排在最后面。所以称为冒泡。 图解算法 代码实现 public static int[] bubbleSort(int[] arr) {// i是排好了几个数for (int i 1; i < arr.length; i) {// flag标记当前循环是否调整了顺序,…...

程序中怎样用最简单方法实现写excel文档
很多开发语言都能找到excel文档读写的库,但是在资源极其受限的环境下开发,引入这些库会带来兼容性问题。因为一个小功能引入一堆库,我始终觉得划不来。看到有项目引用的jar包有一百多个,看着头麻,根本搞不清谁依赖谁。…...
《机器学习与人类学习:比较、融合与未来展望》
《机器学习与人类学习:比较、融合与未来展望》 一、引言二、机器学习的概念与发展(一)机器学习的定义与分类(二)机器学习的发展历程(三)机器学习的应用领域 三、人类学习的本质与过程࿰…...

Mysql 8.4.3LTS 的离线部署
文章目录 一、部署环境资源配置 二、下载地址版本选择 三、部署详情1. 上传安装包2. 解压软件包3. 安装mysql3.3.1 创建mysql用户与用户组3.3.2 授权安装文件夹3.3.3 安装libaio依赖 (坑)ubuntu24.04 中关于libaio的坑 3.3.4 初始化Mysql数据库3.3.5 编辑…...

h5项目打包上线报错404文件找不到
配置一下路由就可以了 1.找到项目里的这个文件 2.滑到最下面‘源码视图’ 3.找到base,没有的话写上一个,保存后打包就可以了 "h5" : {"router" : {"base" : "./"}}...

mysql上课总结(5)(MySQL的完整性约束(详细介绍))
目录 一、完整性约束。 (1)概念与目的。 <1>概念。 <2>目的。 (2)各个约束的详细(表格) (3)各个约束的简要总结。 <1>主键约束。 <2>唯一约束。 <3>非…...
复原IP地址
分割字符串的姐妹题 题目:93. 复原 IP 地址 - 力扣(LeetCode) 题解:代码随想录 代码: class Solution {List<String> resnew ArrayList<>();public List<String> restoreIpAddresses(String s) …...

Effective C++ 学习笔记二
Effective C 学习笔记二 文章目录 Effective C 学习笔记二别让异常逃离析构函数绝不在构造和析构的过程中调用virtual函数令operator 返回一个reference to *this在operator中处理"自我赋值"C四种转换 别让异常逃离析构函数 C 并不禁止析构函数吐出异常,…...

以「JIMUMETA元宇宙体验馆」为例,探讨有哪些元宇宙场景?
让我们以「JIMUMETA元宇宙体验馆」为例,深入探讨元宇宙场景中提供的产品与服务。该体验馆由视创云展精心打造,集成了企业主展馆、元宇宙虚拟活动分会场、品牌展示分会场、线上论坛会场以及会议室接待会客等多重功能,旨在全方位满足企业发布会…...

RHCE的练习(8)
动态网站 lnmp(LAMP) 解析index.php界面 (1)预配,确保服务能够被访问 systemctl stop firewalld setenforce 0 (2)安装nginx服务 mount /dev/sr0 /mnt cat /etc/yum.repos.d/base.repo dnf …...

yocto是如何收集recipes,如何加入现有的bb文件
yocto通常是如何收集recipes: 在Yocto中,通过以下方式收集recipes: 层(Layers) Yocto项目使用层来组织recipes。层是包含配置文件、recipes和其他相关文件的目录结构。每个层有自己的目录,其中 recipes-* 目录用于存…...
[运维] 服务器本地网络可用性检查脚本
引言 在日常活动中,我遇到过一个令人头疼的问题。测试使用的远程终端在第二天继续使用时可能就发生无法与外网通信的情况,往往连上终端后在拉取资源时才能发现。这导致每次使用前都需要手动检查网络状况,增加了不必要的麻烦。为了简化这一过…...
MYSQL-显示信息关于服务器插件语法(二十五)
13.7.5.25 SHOW PLUGINS 语句 SHOW PLUGINSSHOW PLUGINS 显示信息 关于服务器插件。 SHOW PLUGINS 输出示例: mysql> SHOW PLUGINS\G *************************** 1. row ***************************Name: binlogStatus: ACTIVEType: STORAGE ENGINE Librar…...

【线下培训】龙信受邀参加开封市公安局举办的电子数据取证培训班
文章关键词:电子数据取证、手机取证、云取证、国产化取证 为了提升开封市公安机关在互联网电子数据取证分析方面的专业能力,龙信为开封市公安机关量身打造了一场高质量的电子数据取证分析技能培训课程。 本次培训课程不仅涵盖了电子数据取证的基础理论、…...

软件测试工程师面试整理 —— 编程与自动化!
在软件测试领域,编程与自动化是提升测试效率、覆盖率和可靠性的关键因素。掌握编程技术和自动化测试框架,能够帮助测试人员有效地执行大量重复性测试任务,并迅速反馈软件的质量状况。以下是编程与自动化在测试中的主要应用及相关技术介绍&…...

【鸿蒙新闻】10月29日警用鸿蒙开发者大会在北京胜利召开,开启智慧应用新时代!
10月29日,在公安部科技信息化局、公安部装备财务局指导下,由公安部第一研究所主办,鼎桥通信技术有限公司、OpenHarmony生态委员会及公共安全专委会协办的警用鸿蒙开发者大会在北京胜利召开。会议以“拥抱警鸿创新生态 开启智慧应用新时代”为…...

java.io.IOException: Too many open files
java.io.IOException: Too many open files 前言: 项目最近报 java.io.IOException: Too many open files 问题,大概意思是:意味着你的应用程序尝试打开的文件描述符数量超过了系统允许的最大数量,在linux中每个进程打开的文件描…...

ElementUI el-form表单多层数组的校验
问题描述 提示:这里描述项目中遇到的问题: ElementUI el-form表单多层数组的校验 页面效果: 数据结构: addform: {code: ,type: ,value: ,state: 1,remark: ,fieldList: [{fieldCode: ,resolverEntities: [{resolverType: , re…...
常见的向量范数、矩阵范数和对偶范数-对偶范数详细证明过程
文章目录 对偶范数一般定义: p p p-范数和 q q q-范数的对偶性特例 1:无穷范数和 1 范数的对偶性特例 2:2 范数的对偶是自身特例 3:有限范数与 0 范数的对偶关系(稀疏性)特例 4:核范数ÿ…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...