SRT协议学习
SRT(Secure Reliable Transport)协议是一种开源的视频传输协议,旨在提供安全,可靠,低延迟的视频流传输。以下是SRT协议的一些关键的工作原理。
1 安全传输,SRT通过使用AES加密和数据完整性验证来确保数据的安全传输。它可以在不信任的网络环境中提供端到端的安全性。
2 可靠传输,SRT使用ARQ 技术来实现可靠传输。它通过在发送端和接受端之间进行反馈循环来检测和纠正数据包的丢失和损坏,从而确保数据的可靠传输。
3 低延迟:SRT通过使用最小的数据包大小和最少的协议开销来实现低延迟传输,通过优化数据包的大小和发送时间来降低传输延迟。
4 流控制:SRT提供了灵活的流控制机制,可以根据网络状况和带宽限制来动态调整传输速率,以确保最佳的传输性能。
5 带宽自适应: SRT支持带宽自适应功能,可以根据网络带宽的变化来自动调整传输参数,以最大程度的利用可用带宽。
6 跨平台支持: SRT可以在各种操作系统平台上运行
7 链接建立:发送端和接收端通过SRT握手协议建立连接。在握手过程中,交换协商参数,包括加密密钥,传输参数,缓冲区大小等。
8 数据传输:发送端讲视频流分成数据包,并加密,打包成SRT数据包发送到接收端。接收端收到数据包后,进行解密和解包,并通过ARQ技术检测和纠正丢失或损坏的数据包。
9 流控制:发送端根据的反馈信息来动态调整发送速率,确保流量控制和带宽自适应。
10 连接维护:发送端和接收端定期发送心跳包来维护连接,并根据需要进行连接重连。
SRT协议的数据包二进制格式主要分为两种类型:数据包Data Packet和控制包Control Packet 以下是SRT数据包的结构细节。
Data Packet数据包
数据包用于承载实际的媒体数据,其结构如下:
1 Packet Sequence Number 数据包序列号,占31位,用于确保数据包的顺序传输。
2 PP 数据包位置标识位;占2位,表示数据包在消息中的位置,10代表第一个数据包,00代表中间的数据包,01代表最后一个数据包,11代表单个数据包。
3 O(顺序标志位):占1位,用于标识数据包的顺序。
4 KK加密密钥标志位:占2位,表示使用的加密密钥,“00”代表不用加密,“01”代表偶数密钥,“10”代表奇数密钥。
Control Packet(控制包)
控制包用于协议控制,如握手、ACK/NAK等,其结构如下:
- PH_SEQNO(Packet Header Sequence Number,数据包序列号):用于确保数据包的顺序传输。
- PH_MSGNO(Packet Header Message Number,消息号):表示消息的编号,用于标识数据包属于哪个消息。
- PH_TIMESTAMP(Packet Header Timestamp,时间戳):用于记录数据包的发送时间,接收端可以利用这个时间戳来计算传输延迟。
- PH_ID(Packet Header ID,标识符):用于区分不同类型的包(如数据包、控制包等)。
控制数据包又包含了握手(Handshake)、肯定应答(ACK)、否定应答(NAK)、对肯定应答的应答(ACKACK),保持连接(Keepalive)、关闭连接(Shutdown)等多种类型。
SRT数据包的首部长度为16字节,最高位为标志位,0代表信息数据包,1代表控制数据包。
这些数据包结构的设计使得SRT协议能够有效地处理多媒体数据的实时传输,确保数据的顺序、完整性和安全性。
SRT 数据包结构示例
+-------+------+----------+----------+--------+--------+----------+
| Magic | Fam | SeqNo | MsgNo | TS/TSC | Flags | Payload |
+-------+------+----------+----------+--------+--------+----------+
- Magic(4字节):用于识别SRT协议的魔数(Magic Number),通常是 0x52 0x54 0x6F 0x73(即 "RTos")。
- Fam(1字节):Family字段,用于标识地址族,例如 0x01 表示IPv4。
- SeqNo(4字节):序列号,用于确保数据包的顺序性。
- MsgNo(4字节):消息编号,用于标识数据包属于哪个消息。
- TS/TSC(4字节):时间戳/时间戳和序列号,用于同步和延迟计算。
- Flags(2字节):标志位,包含多种控制位,如是否是最后一个数据包、是否加密等。
- Payload(可变长):实际传输的数据内容。
十六进制表示
52 54 6F 73 01 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 12 34 56 78 ... (Payload)
- 52 54 6F 73:Magic Number,用于识别SRT协议。
- 01:Family字段,表示IPv4。
- 00 00 00 01:SeqNo,序列号为1。
- 00 00 00 00:MsgNo,消息编号为0。
- 00 00 00 00:TS/TSC,时间戳或时间戳和序列号。
- 00 00:Flags,没有特殊标志。
- 12 34 56 78 ...:Payload,数据负载部分。
这个示例展示了一个包含Magic Number的SRT数据包,其中包含了必要的头部信息和一些示例数据。在实际应用中,数据包可能包含更多的头部信息,如源地址、目的地址、扩展头部等,并且数据负载部分会根据实际传输的数据进行变化。
相关文章:
SRT协议学习
SRT(Secure Reliable Transport)协议是一种开源的视频传输协议,旨在提供安全,可靠,低延迟的视频流传输。以下是SRT协议的一些关键的工作原理。 1 安全传输,SRT通过使用AES加密和数据完整性验证来确保数据的安全传输。它可以在不信…...
南昌大学《2024年837自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《南昌大学873自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析
ASP.NET Core 应用程序的启动与配置:Program.cs 文件的全面解析 Program.cs 是 ASP.NET Core 应用程序的入口点,负责应用程序的启动和配置。以下是 Program.cs 文件中完成的主要工作,按逻辑步骤进行总结: 1. 创建和配置主机环境…...
2020-12-02 数字过滤
缘由 C语言 数组:数字过滤-CSDN问答 void chuli(int n15236) {int aa[47]{0},j0,m0;while(n)aa[j]n%10,n/10;while(j)if(aa[--j]%2)m*10,maa[j];cout << m << ends; } void 数字过滤(int n 15236) {int aa[47]{0}, j 0, m 0;while (…...
长短期记忆神经网络(LSTM)介绍
1、应用现状 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸或者梯度消失的问题,导致无法处理较长序列数据,从而无…...
数据结构 ——二叉树转广义表
数据结构 ——二叉树转广义表 1、树转广义表 如下一棵树,转换为广义表 root(c(a()(b()()))(e(d()())(f()(j(h()())())))) (根(左子树)(右子树)) 代码实现 #include<stdio.h> #include<stdlib.h>//保存…...
chattts生成的音频与字幕修改完善,每段字幕对应不同颜色的视频,准备下一步插入视频。
上一节中,实现了先生成一个固定背景的与音频长度一致的视频,然后插入字幕。再合并成一个视频的方法。 但是:这样有点单了,所以: 1.根据字幕的长度先生成视频片断 2.在片段上加上字幕。 3.合并所有片断,…...
数据结构开始——时间复杂度和空间复杂度知识点笔记总结
好了,经过了漫长的时间学习c语言语法知识,现在我们到了数据结构的学习。 首先,我们得思考一下 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素…...
路由策略与策略路由
路由策略 常用有Router-Policy,Filter-Policy等 控制路由是否可达,通过修改路由条目相关参数影响流量的转发 基于控制平面,会影响路由表表项,但只能基于目地址进行策略判定,于路由协议相结合使用 Router-Policy …...
pytorch_fid 安装笔记
目录 torch安装: pytorch_fid安装 torch安装: pip install torch2.5.0 --index-url https://download.pytorch.org/whl/cu121 pytorch_fid安装 pip install pytorch_fid 安装后,torch也会自动安装,导致torch引用报错。...
Qt绘制仪表————附带详细说明和代码示例
文章目录 1 效果2 原理3 编码实践3.1 创建仪表属性类3.2 设置类属性3.3 绘制图案3.3.1 设置反走样3.3.2 绘制背景3.3.3 重新定义坐标原点3.3.4 绘制圆环3.3.5 绘制刻度线3.3.6 绘制刻度线上的描述值3.3.7 绘制指针3.3.8 绘制指针数值和单位3.3.9 控制指针变化 扩展福利参考 1 效…...
百度地图JavaScript API核心功能指引
百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富、交互性强的地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地搜索、路线规划等数据服务。百度地图JavaScript API支持HTTP和HT…...
mp4影像和m4a音频无损合成视频方法
第一步:复制高清视频地址 url 第二步:打开网址粘贴复制的视频url视频下载 第三步:下载-影像.mp4和-音频.m4a 第四步:合并视频; 使用ffmpeg进行无损合成(如果没有安装ffmpeg请自行下载安装下载 FFmpeg (p2hp.com)&…...
Ubuntu下将Julia嵌入Jupyter内核
一.安装 Julia 如果 Julia 尚未安装: 打开终端,下载最新的 Julia 安装包: wget https://julialang-s3.julialang.org/bin/linux/x64/1.9/julia-1.9.3-linux-x86_64.tar.gz 解压并移动到 /opt: tar -xvzf julia-1.9.3-linux-x86_…...
openGauss开源数据库实战二十五
文章目录 任务二十五 openGauss 数据库的物理备份与恢复任务目标实施步骤一、为进行物理备份做准备1.确保数据库工作在归档模式2.创建保存数据库物理备份的目录3.创建保存归档日志备份的目录 二、进行openGauss数据库的物理备份1.备份数据库2.切换WAL3.备份归档日志 三、openGa…...
[C/C++] List相关操作
List相关操作 1 链表二分 目标: (1)对于偶数节点,正好对半分; (2)对于奇数节点,前 后 1 (3)断开链表,方便后期合并 // 使用快慢指针完成中点…...
继电器控制与C++编程:实现安全开关控制的技术分享
在现代生活中,继电器作为一种重要的电气控制元件,在电气设备的安全控制中起到了至关重要的作用。通过低电流控制高电流,继电器能够有效地隔离控制电路与被控设备,从而保障使用者的安全。本项目将介绍如何通过树莓派Pico与继电器模块结合,使用C++编程实现继电器的控制。 一…...
题解 - 找子序列(2024.12上海月赛丙组T4)
题目描述 Dave 有一个长度为 n 的非负整数序列 a1-n, 和一个非负整数 m 。 他希望知道是否有一个 a 的非空子序列,使得子序列中所有元素的按位与(bitwise AND)结果为 m。 换言之,他想知道是否存在一个下标序列 i1-k(k ≥ 1),满足 1 ≤ i1 < i2 < …...
在centos 7.9上面安装mingw交叉编译工具
1.说明 为了在centos上面编译windows的程序,需要安装mingw工具,mingw工具是可以编译windows程序的一些工具链,使用方式和linux一致 2.下载脚本 使用脚本方式编译,github的脚本位置:https://github.com/Zeranoe/ming…...
ubuntu wine mobaxterm找不到串口和解决方案
安装好 打开MobaXterm时发现,没有可供选择的串口 我们再检查wine设备映射 ls -la ~/.wine/dosdevices/ 串口是存在的,我们再来一番神操作,并没有回滚操作,不知是否是必要修改 打开 注册表,在HKEY_LOCAL_MACHINE中的…...
笑不活了!学生自研反外挂系统,结果反手把自己“误封”了|从翻车到封神全过程
笑不活了!学生自研反外挂系统,结果反手把自己“误封”了|从翻车到封神全过程 文章目录笑不活了!学生自研反外挂系统,结果反手把自己“误封”了|从翻车到封神全过程事情起因:我想写个反外挂&…...
【网络层-ARP地址解析协议】
网络层-ARP地址解析协议一、概念二、原理三、其他概念一、概念 1.把已知的IP地址,翻译成对应的MAC地址。 2.网络通信靠IP地址寻址(找哪台设备),局域网内实际传输数据靠MAC地址(网卡物理地址),设…...
2026-04-07 GitHub 热点项目精选
/* 全局样式 */* { margin: 0; padding: 0; box-sizing: border-box; }body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;max-width: 900px; margin: 0 auto; padding: 30px 20px; line-height: 1.7; color: #2d3748;backgro…...
RePKG技术指南:Wallpaper Engine资源文件解析与转换工具深度解析
RePKG技术指南:Wallpaper Engine资源文件解析与转换工具深度解析 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专门为Wallpaper Engine设计的C#开源工具&a…...
工业五官:07 传感器哪家强?五大品牌真实对比
07 传感器哪家强?五大品牌真实对比 今天不讲原理,不画梯形图,就聊聊买传感器时最头疼的事:到底选谁家?Sick、Keyence、IFM、邦纳,还有咱们国产(兰宝当代表),五大品牌拉出来溜溜,看看谁更灵!我在车间帮师傅挑货挑了十几年,亲手换过几百个坏的,总结下来就八个字:没…...
终极指南:如何通过Hook技术破解百度网盘macOS版下载限速
终极指南:如何通过Hook技术破解百度网盘macOS版下载限速 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 在Mac系统上使用百度网盘下载大文件…...
【PHP 8.9类型革命】:从nullable到intersection,从static返回到inferable closures——12个必须掌握的类型语法变更清单
第一章:PHP 8.9类型系统演进全景图PHP 8.9尚未正式发布,但根据PHP开发团队在RFC草案与内部路线图中的持续披露,其类型系统将围绕“静态可推导性”与“运行时契约强化”双主线进行深度重构。该版本并非简单叠加新语法,而是对类型声…...
Qwen3-Reranker-0.6B性能调优:降低显存占用的3种方法
Qwen3-Reranker-0.6B性能调优:降低显存占用的3种方法 1. 引言 如果你正在使用Qwen3-Reranker-0.6B这个重排序模型,可能会遇到显存占用过高的问题。特别是在处理大批量文本对时,显存不足往往成为性能瓶颈。经过实际测试,我发现通…...
面试真题集(五):高级特性与系统优化
引言 本专题聚焦原子操作、动态并行、纹理内存、协作组、CUDA Graph等高级特性,以及系统级优化思维,20道真题助你冲击大厂高薪岗位。 一、选择题(6题) 1.1 关于CUDA原子操作,下列说法错误的是?(⭐⭐) A. 原子操作可以在全局内存和共享内存上执行 B. atomicAdd 是最常…...
深入解析Virtio与Vhost在QEMU中的高效协作架构
1. Virtio与Vhost的前世今生 我第一次接触Virtio是在2013年调试KVM虚拟机网络性能时。当时发现一个奇怪现象:使用传统模拟网卡时虚拟机网络吞吐量只有200Mbps左右,而切换到Virtio-net后直接飙到了1Gbps以上。这个性能差距让我开始深入研究这套架构。 V…...
