图传推流学习(敬请期待)

图传推流简介

  • 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服务器(搭建过程)

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

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

相关文章

tiktok批量添加达人怎么弄

在 TikTok 上批量添加达人可以借助一些工具或方法,以下是一些常见的途径: 点我达秘免费体验地址注册 使用达人邀约工具: 功能特点:这类工具专为 TikTok 跨境小店和本土小店提供服务,可以实现多国家、多店铺同时私信和…

重塑重工起重行业未来:网关与云平台携手共创价值新篇章

在重工起重这一传统而关键的工业领域中,技术的每一次革新都意味着生产效率与安全标准的飞跃。随着物联网、大数据、云计算等先进技术的不断渗透,重工起重行业正迎来一场前所未有的智能化变革。其中,网关与云平台的深度融合,正成为…

NPOI 操作详解(操作Excel)

目录 1. 安装 NPOI 2. 使用 NPOI 创建新 Excel 文件 3. 设置列宽和行高 1. 设置列宽 2. 设置行高 3. 同时设置列宽和行高 4. 设置统一的行高 5. 设置统一的列宽 6. 应用统一的行高和列宽 4. 合并单元格 5. 设置单元格样式(字体、边框、背景色等&#xf…

CMS getshell

进入前台 漏洞为前台任意用户密码修改和前台用户文件上传然后getshell 1. 弱口令进入前台用户admin123/admin123 2. 进入会员用户后点击内容中心 点击发布文章 存在文件上传,发现后缀和MIME类型都是白名单 但是在原文件的基础上继续添加随意后缀,发现成功…

教你用python实现自动化文本识别

目录 步骤1:安装依赖 安装Tesseract 安装pytesseract和Pillow(用于图像处理) 扩展功能 实现自动化文本识别(Optical Character Recognition, OCR)通常使用Python的OCR库,例如Tesseract。Tesseract是一个…

逻辑磁盘管理 附实验:逻辑卷的组成与划分

分区类型: 1、系统引导分区 就是存放系统的引导文件和Linux的内核文件 2、swap分区 交换分区,系统的物理内存不足时,从一些长时间未运行的程序当中释放一部分内存释放出来的保存到swap分区,这些未运行的程序一旦运行还要从swap空…

讲讲 kafka 维护消费状态跟踪的方法?

大家好,我是锋哥。今天分享关于【讲讲 kafka 维护消费状态跟踪的方法?】面试题?希望对大家有帮助; 讲讲 kafka 维护消费状态跟踪的方法? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Kafka 中&#x…

Flutter-Engine 的定制实践:Text 绘制流程浅析及自定义underline的间距

前言 最近工作中处理的文本相关的内容较多,不论是刁钻的需求还是复杂的问题,最终都会引向一点“Flutter中的文本是如何绘制的?”。 这里我将以“调整下划线与文字的间距”为切入点并结合自定义Engine,记录一下我的个人分析和实践…

[A-14]ARMv8/ARMv9-Memory-内存模型的类型(Device Normal)

ver0.1 [看前序文章有惊喜。] 前言 前面花了很大的精力把ARM构建的VMSA中的几个核心的议题给大家做了介绍,相信大家已经能够理解并掌握ARM的内存子系统的工作原理大致框架。接下来我们会规划一些文章,对ARM内存子系统的一些细节做一下介绍,使ARM的内存子系统更加的丰满。本…

可编辑31页PPT | 智慧业务中台规划建设与应用总体方案

荐言分享:随着数字化转型的深入,企业面临着前所未有的挑战与机遇。为了高效整合内外部资源,快速响应市场变化,提升业务创新能力,智慧业务中台应运而生。智慧业务中台作为企业数字化转型的核心基础设施,旨在…

深入理解Docker,从入门到精通-Part1(基础使用)

一、Docker基本概念 Docker架构 基本组件的介绍 Docker Client 是用户界面,它支持用户与Docker Daemon之间通信 Docker Daemon Docker最核心的后台进程,运行于主机上,处理服务请求 Docker registry是中央registry,支持拥有公有与…

在macOS的多任务处理环境中,如何平衡应用的性能与用户体验?这是否是一个复杂的优化问题?如何优化用户体验|多任务处理|用户体验|应用设计

目录 一 多任务处理与应用性能 1. macOS中的多任务处理机制 2. 性能优化的基本策略 二 用户体验的关键要素 1. 响应速度 2. 界面友好性 3. 功能的直观性 三 平衡性能与用户体验的策略 1. 资源管理 2. 优化数据加载 3. 使用合适的线程模型 4. 实时监测和调整 四 使…

lvm逻辑卷管理

分区类型: 主分区扩展分区逻辑分区系统引导分区:存放系统的引导文件和linux的内核文件swap分区:交换分区,系统的物理内存不足时,从一些长时间未运行的程序当中释放一部分内存,释放出来的内存保存到swap分区…

openai api 文件分析/联网/画图代码示例

目的 使用https://4o.zhangsan.shop的API进行文件分析等功能。 完整代码 # pip install openai0.28 # 注意下方代码必须使用该版本 import openaidef query_gpt4(question):openai.api_key "sk-aQR1wbTsLpySgJDq3fFb026c225a44C8924750C1B67bCeD5"openai.api_ba…

Android编译环境构建(二)(可用于物理机、虚拟机、容器化Jenkins环境)

文章目录 需求环境要求文件下载Gradle Version:7.5cmdline-tools至此普通物理环境的Android编译环境已部署完毕 部署maven(可选)Jenkins配置Android构建环境 说明: 物理环境:物理机、虚拟机等 容器化环境:docker等 需求 Gradle Version:7.5 …

WPF+MVVM案例实战(十)- 水波纹按钮实现与控件封装

文章目录 1、运行效果1、封装用户控件1、创建文件2、依赖属性实现2、使用封装的按钮控件1.主界面引用2.按钮属性设置3 总结1、运行效果 1、封装用户控件 1、创建文件 打开 Wpf_Examples 项目,在 UserControlLib 用户控件库中创建按钮文件 WaterRipplesButton.xaml ,修改 Us…

Spring Boot解决 406 错误之返回对象缺少Getter/Setter方法引发的问题

目录 前言1. 问题背景2. 问题分析2.1 检查返回对象 3. 解决方案3.1 确保Controller返回Result类型3.2 测试接口响应 4. 原理探讨5. 常见问题排查与优化建议结语 前言 在Spring Boot开发中,接口请求返回数据是系统交互的重要环节,尤其在开发RESTful风格的…

FineReport 单元格的特殊应用场景

1、实现鼠标点击的行变色 创建报表 1.1、鼠标点击某行时该行高亮显示 JavaScript 代码如下: _g().addEffect(highlightRow, {color: red,trigger: mousedown, });结果 1.2、鼠标悬浮某行时该行变色,离开时恢复 其他一样,就改代码 JavaScr…

MacOS的powermetrics命令查看macbook笔记本的耗能情况,附带查看ANE的工作情况

什么是 powermetrics? powermetrics 是 macOS 系统自带的一个命令行工具,用于收集和分析系统能源消耗数据。通过它,我们可以深入了解 Mac 的硬件性能、软件行为以及能源使用情况,从而优化系统配置,提高电池续航时间。…

系统架构师-一文搞定架构风格

架构风格分类 五大架构风格简介子风格数据流风格面向数据流,按照一定的顺序从前向后执行程序批处理、管道-过滤器调用/返回风格构件与构件之间存在相互调用的关系,一般是显示的调用主程序/子程序、面向对象、层次结构(层次型架构风格&#x…