图传推流学习(敬请期待)
图传推流简介
- 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:核范数ÿ…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...