当前位置: 首页 > news >正文

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

图传推流简介

  • 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.lryc.cn/news/474431.html

相关文章:

  • 【JavaGuide】十大经典排序算法总结
  • 程序中怎样用最简单方法实现写excel文档
  • 《机器学习与人类学习:比较、融合与未来展望》
  • Mysql 8.4.3LTS 的离线部署
  • h5项目打包上线报错404文件找不到
  • mysql上课总结(5)(MySQL的完整性约束(详细介绍))
  • 复原IP地址
  • Effective C++ 学习笔记二
  • 以「JIMUMETA元宇宙体验馆」为例,探讨有哪些元宇宙场景?
  • RHCE的练习(8)
  • yocto是如何收集recipes,如何加入现有的bb文件
  • [运维] 服务器本地网络可用性检查脚本
  • MYSQL-显示信息关于服务器插件语法(二十五)
  • 【线下培训】龙信受邀参加开封市公安局举办的电子数据取证培训班
  • 软件测试工程师面试整理 —— 编程与自动化!
  • 【鸿蒙新闻】10月29日警用鸿蒙开发者大会在北京胜利召开,开启智慧应用新时代!
  • java.io.IOException: Too many open files
  • ElementUI el-form表单多层数组的校验
  • 常见的向量范数、矩阵范数和对偶范数-对偶范数详细证明过程
  • Android 滴滴面经
  • angular登录按钮输入框监听
  • 硅谷甄选(10)用户管理
  • Unity XR Interaction Toolkit 开发教程(2):导入 SDK【3.0 以上版本】
  • element-plus校验单个form对象合法性
  • Linux常见命令合集
  • __init__.py __all__和 __name__的作用及其用法
  • js操作数组的方法 / js操作字符串的方法
  • Docker 部署RocketMQ
  • Linux(Cent OS)环境离线安装mkfontscale mkfontdir命令 解决java项目在linux系统下无法获取中文字体问题
  • 计算堆栈中的剩余数字