流媒体传输基本原理-RTSP

一、相关的基本概念
媒体:信息的载体
多媒体:多种媒体的组合体。
传媒:全称是“传播媒体”,媒体概念中偏重于传播方面的技术组织体系行业。
流媒体:流式地传输媒体,是传播媒体的一种技术,将媒体数据分段,然后经网络发送,使得数据包像流水一样传输。使用流媒体技术,不必等下载完整音视频媒体文件后才能开始欣赏。
A/V(Audio/Video):音视频
RTSP(Real Time Streaming Protocol):实时流媒体传输协议:由RFC2326规范,是一种实现实时流媒体传输与播放的控制协议,可用于流媒体的点播和直播场景。
RTP(Realtime TransportProtocol):针对Internet上多媒体数据流的一个传输协议,工作在一对一或一对多的传输情况下,其目的是提供时间信息和实现流同步。只保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。
RTCP(Realtime Transport Control Protocol):服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。在RTP会话期 间,各参与者周期性地传送RTCP包。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。
TCP(Transmission Control Protoco):传输控制协议,提供面向连接的可靠的传输服务,适用于各种可靠的或不可靠的网络。
UDP(User Datagram Protocol):用户数据报协议,无连接的协议,不需要建立连接就可以传输数据。

二、RTSP传输基本原理
RTSP并非用于传输流媒体数据,它的角色是“多媒体服务网络远程控制”。实际上,多媒体数据的传输通常依赖于RTP/RTCP协议的实现,主要有两个方面的作用:
1、用于协商客户端与服务端之间的实时媒体通道。
2、在建立媒体通道后,通过RTSP协议定义的控制方法,实现流媒体的播放、暂停、停止、快进、倒退等控制操作。
RTSP 基于TCP协议进行传输,负责流媒体通道参数的协商,以及具体的控制信息包括流媒体的播放、暂停、停止、快进、倒退等。RTP/RTCP 通常基于UDP协议进行传输,负责流媒体数据的传输。其中RTP 负责实时媒体数据的传输,将媒体数据进行分组、传输和定时同步。RTCP 负责传输控制信息和统计数据,并不直接传输媒体数据。其以周期性的方式发送,提供了传输质量反馈、参与者统计、会话控制等功能。
在这里插入图片描述
流式传输的过程
1、用户选择某一流媒体服务后,Web Browse与 Web Sever之间使用 HTTP/TCP 交换控制信息,以便把需要传输的实时数据从原始信息中检索出来;
2、客户机上的 Web 浏览器启动 A/VPlayer 程序,使用 HTTP 从 Web Sever检索相关参数对 Player 程序初始化。这些参数可能包括目录信息、A/V 数据的编码类型或与 A/V 检索相关的服务器地址。
 3、A/V Player 程序及 A/V Sever运行实时流控制协议(RTSP),以交换 A/V 传输所需的控制信息。与 CD 播放机或 VCRs 所提供的功能相似,RTSP 提供了操纵播放、快进、快倒、暂停及录制等命令的方法。
 4、A/V Sever使用 RTP/UDP 协议将 A/V 数据传输给 A/V Player ,一旦 A/V 数据抵达客户端,A/V Player 即可播放输出。
注意:在流式传输中,使用 RTP/UDP 和 RTSP/TCP 两种不同的通信协议与 A/V Sever建立联系,是为了能够把服务器的输出重定向到一个不同于运行 A/V Player 程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器。

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

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

相关文章

硬件开发笔记(十七):RK3568底板电路串口、485、usb原理图详解

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139589308 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

ROS IMU航向锁定(Python实现)

ROS IMU航向锁定(Python实现) 实现思路 让大管家rospy发布速度控制话题/cmd_vel设定一个目标朝向角,当姿态信息中的朝向角和目标朝向角不一致时,控制机器人转向目标朝向角 代码示例 要使用Python实现IMU航向锁定的功能&#x…

爬虫案例:建设库JS逆向

爬虫流程 1. 确定目标网址和所需内容 https://www.jiansheku.com/search/enterprise/ 只是个学习案例,所以目标就有我自己来选择,企业名称,法定代表人,注册资本,成立日期 2. 对目标网站,进行分析 动态…

认识Spring 中的BeanPostProcessor

关于BeanPostProcessor和BeanFactoryPostProcessors,将分2篇文章来写,这篇文章是对Spring 中BeanPostProcessor进行了总结 先看下大模型对这个类的介绍,随后再看下这两个类的示例,最后看下这两个类的实现。 这两个类从名字看都很类…

btstack协议栈实战篇--GATT Client - Discover Primary Services

btstack协议栈---总目录-CSDN博客 这个示例展示了如何使用 GATT 客户端 API 来发现第一个其服务的已发现设备的主要服务及其特征。 在 HCI 和 GATT 客户端数据包处理器之间划分逻辑处理。HCI 数据包处理器负责找到远程设备、连接到它,并启动第一个 GATT 客户端…

HTML静态网页成品作业(HTML+CSS)—— 兰蔻化妆品网页(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

vue阶段复习基础知识以及简单的按钮绑定相关的知识!

vue阶段复习 理论练习 请简述Vue、Node.js、Vscode是什么,以及有什么关系 1.vue是一个轻量级、比较灵活的且支持组件开发的网络框架 2.node.js是让JavaScript运行在服务器上的一种环境 3.Vscode是一款有着丰富插件的代码编辑器 4.vscode就如同画布,node…

排查Spring条件注解未能生效的常见原因

在撰写关于排查Spring条件注解未能生效的文章时,可以按照以下结构进行组织: 标题: 解决Spring条件注解不生效的问题:常见原因与解决方案 引言: 简要介绍Spring条件注解(如Conditional)的用途&…

网卡聚合链路配置

创建名为mybond0的绑定,使用示例如下: # nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup添加从属接口,使用示例如下: # nmcli con add type bond-slave ifname enp3s0 master mybond0要添加其他从…

反射...

一、反射的定义 二、获取Class对象三种方式 全类名:包名类名。 public class test {public static void main(String [] args) throws ClassNotFoundException {//第一种方式Class class1Class.forName("test02.Student");//第二种方法Class class2Stud…

【区块链】深入解析Proof of Work (PoW): 区块链技术的核心驱动力

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 深入解析 Proof of Work (PoW): 区块链技术的核心驱动力引言一、PoW基本概念1.1…

C++ 虚函数表 vtable

目录 1.测试代码2.查看虚函数表Widget 虚函数表虚函数表 参考 本篇文章通过小实验来了解了解虚函数表&#xff0c;测试环境 ubuntu16 gcc 5.4.0 1.测试代码 测试代码中定义了两个类&#xff0c;后面将会查看这两个类的虚函数表 #include <iostream> using namespace s…

C++ 判断目标文件是否被占用(独占)(附源码)

在IM软件中发起文件发送时,如果要发送的是某word文件,并且该word文件被office打开,则会提示文件正在被占用无法发送,如下所示: 那文件被占用到底是如何判断出来的呢?其实很简单,调用系统API函数CreateFile,打开该文件(OPEN_EXISTING),传入FILE_SHARE_READ共享读标记…

探索Chrome DevTools的高级技巧与隐藏功能

Chrome DevTools是网页开发者不可或缺的调试工具&#xff0c;它提供了丰富的功能&#xff0c;帮助开发者快速诊断和解决问题。然而&#xff0c;除了常见的功能&#xff0c;如元素检查、网络监控和JavaScript调试之外&#xff0c;DevTools还有许多不为人知的强大功能和技巧。本文…

SAP乘云而上

上周四参加了SAP原厂组织的“SAP乘云而上私享会”&#xff0c;由德勤赞助。活动主要的内容是介绍了RISE with SAP的上云服务包并且参观了SAP Labs。 现阶段对于大中型企业客户&#xff0c;SAP力推的是S/4HANA PCE(Private Cloud Edition)私有云版本&#xff0c;这个版本我在之…

Windows Docker Desktop 安装 postgres

Docker Desktop安装 postgres 12.6 数据库 step docker pull postgres:12.6提前创建F:/D-dockerData/postgres-12.6/data 文件夹用于bind mountdocker run docker run --name postgres-12.6 \-e POSTGRES_PASSWORD123456 \-p 5432:5432 \-v F:/D-dockerData/postgres-12.6/d…

react 0至1 【jsx】

1.函数调用 // 项目的根组件 // App -> index.js -> public/index.html(root)const count 100function getName () {return test }function App () {return (<div className"App">this is App{/* 使用引号传递字符串 */}{this is message}{/* 识别js变…

Androidstudio项目加载不出来,显示Connect timed out

Android studio加载不出来所需要的环境依赖,99%的问题都是网络原因 解决办法有两个: 1.科学上网 2.使用国内的镜像 方法一自行解决,下面重点介绍方法二 在项目目录下找到gradle->wrapper->gradle-wrapper.properties 将项目的distributionUrl改为https://mirrors.cl…

http网络服务器

wwwroot(目录)/index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>比特就业课</title>…

从零到发布:npm插件包终极指南

在JavaScript和Node.js的生态系统中&#xff0c;npm&#xff08;Node Package Manager&#xff09;是最重要的包管理工具之一。通过npm&#xff0c;开发者可以共享代码、复用他人的工作成果以及协作开发。本指南将详细介绍如何通过npm发布自己的插件包&#xff0c;以便其他开发…