小企业网站建设多少钱/互动网站建设

小企业网站建设多少钱,互动网站建设,做收藏品的网站,番禺人才招聘网SRT(Secure Reliable Transport)是一种开源的视频传输协议,专为高丢包、高延迟网络环境设计,结合了UDP的低延迟和TCP的可靠性,广泛应用于直播、远程制作、视频会议等场景。 定位:SRT协议的官方C/C实现库&am…

        SRT(Secure Reliable Transport)是一种开源的视频传输协议,专为高丢包、高延迟网络环境设计,结合了UDP的低延迟和TCP的可靠性,广泛应用于直播、远程制作、视频会议等场景。

  • 定位:SRT协议的官方C/C++实现库,由Haivision和社区维护,提供高可靠、低延迟的流媒体传输能力。

  • 核心功能

    • 支持SRT协议的全部特性(ARQ重传、FEC、AES加密、自适应码率)。

    • 跨平台(Windows/Linux/macOS),提供C API和C++封装。

    • 与FFmpeg、GStreamer等主流多媒体框架集成。

1. SRT的核心优势

特性描述
低延迟基于UDP,支持端到端延迟可控制在 100ms~500ms(可配置)。
抗丢包通过ARQ(自动重传请求)和FEC(前向纠错)恢复丢包,支持 30%+ 丢包率
安全性内置AES加密(128/256位),防止数据窃听。
自适应码率动态调整发送速率,避免网络拥塞。
多路复用支持单端口多流传输,降低资源占用。

2. SRT的工作原理

(1) ARQ(自动重传请求)
  • 丢包检测:接收端通过序列号检测丢包,发送NACK(丢包重传请求)。

  • 选择性重传:仅重传丢失的包,而非全部数据,减少带宽浪费。

  • 重传超时:可配置超时时间(默认250ms),超时后放弃重传,避免延迟累积。

(2) FEC(前向纠错)
  • 可选功能,在数据包中加入冗余信息,允许接收端直接恢复少量丢包(无需重传)。

(3) 自适应传输
  • 带宽探测:持续监测网络带宽,动态调整发送码率。

  • 延迟控制:通过缓冲区(Latency Buffer)平滑网络抖动,保持稳定延迟。

3. SRT的典型应用场景

场景配置建议
直播推流使用 SRT + FEC,码率自适应(如5Mbps动态调整),延迟设为1秒。
远程制作低延迟模式(200ms),启用AES加密,保证实时性和安全性。
跨国传输启用ARQ和FEC,设置冗余包比例10%~20%,对抗高丢包。
企业视频会议使用SRT多路复用,单端口传输多路视频,降低防火墙配置复杂度。

4. SRT vs. 其他协议

协议延迟可靠性适用场景
SRT高(ARQ+FEC)直播、远程制作、高丢包网络
RTMP中(TCP)传统直播推流
WebRTC极低中(部分丢包)实时通信、P2P场景
QUIC高(多路复用)HTTP/3流媒体

5. SRT的配置与使用

(1) 常用参数
参数说明示例值
latency端到端最大延迟(毫秒)1000
passphraseAES加密密钥(需16/24/32字符)MySecureKey123
fecFEC冗余配置(如rows:10,cols:5rows:10
maxbw最大发送带宽(Mbps)10
(2) 推流示例(FFmpeg)
# 推流端(Publisher)
ffmpeg -i input.mp4 -c:v libx264 -preset fast -f mpegts "srt://接收端IP:9000?latency=500&passphrase=MyKey"# 接收端(Subscriber)
ffplay "srt://0.0.0.0:9000?latency=500&passphrase=MyKey"
(3) 工具支持
  • srt-live-transmit:官方测试工具,用于中继或调试。

  • OBS Studio:支持SRT推流(设置→输出→选择SRT协议)。

  • Haivision Play Pro:SRT播放器,支持加密和低延迟模式。

6. libsrt库编译与配置

(1) 编译安装(Linux)
# 安装依赖
sudo apt-get install cmake tclsh pkg-config# 下载源码
git clone https://github.com/Haivision/srt.git
cd srt
./configure --prefix=/usr/local --enable-shared=ON
make -j4
sudo make install# 验证安装
srt-live-transmit --version
(2) Windows编译

1)使用CMake生成VS工程(比如:VS2019):

cmake -G "Visual Studio 16 2019" -A x64 ..

2)打开生成的.sln文件编译ALL_BUILD目标。

7. libsrt库使用

(1) 创建SRT Socket(C语言)
#include <srt/srt.h>int main() {// 初始化库srt_startup();// 创建SocketSRTSOCKET sock = srt_create_socket();if (sock == SRT_INVALID_SOCK) {fprintf(stderr, "srt_create_socket failed\n");return 1;}// 设置参数:延迟500ms,启用加密srt_setsockflag(sock, SRTO_LATENCY, "500", sizeof(int));srt_setsockflag(sock, SRTO_PASSPHRASE, "MySecretKey123", 13);// 绑定端口(接收端)struct sockaddr_in sa = {0};sa.sin_family = AF_INET;sa.sin_port = htons(9000);sa.sin_addr.s_addr = INADDR_ANY;srt_bind(sock, (struct sockaddr*)&sa, sizeof(sa));// 进入监听模式srt_listen(sock, 5);// 接收连接(省略事件循环)SRTSOCKET client = srt_accept(sock, NULL, NULL);// 数据传输...char buffer[1316];  // SRT最大有效载荷int len = srt_recvmsg(client, buffer, sizeof(buffer));// 清理srt_close(sock);srt_cleanup();return 0;
}
 (2) 发送数据
#include <srt/srt.h>
#include <iostream>int send_data(SRTSOCKET sock, const char* data, size_t len) {int ret = srt_sendmsg(sock, data, len, -1, 0);if (ret == SRT_ERROR) {std::cerr << "Send failed: " << srt_getlasterror_str() << std::endl;return -1;}return ret;  // 返回成功发送的字节数
}
(3)关键参数配置 
参数名(Flag)类型说明推荐值
SRTO_LATENCYint (ms)端到端最大允许延迟直播:1000~2000
SRTO_PASSPHRASEstringAES加密密钥(长度16/24/32字节)强制设置
SRTO_OHEADBWint (%)FEC冗余带宽占比丢包高时:20
SRTO_MAXBWint64最大发送带宽(bytes/sec)根据网络调整
SRTO_RCVSYNbool接收操作是否阻塞非阻塞:false
(4)FFmpeg编译支持libsrt
# 配置FFmpeg时加入--enable-libsrt
./configure --enable-libsrt --extra-ldflags=-lsrt

推流、播流

# 推流端
ffmpeg -i input.mp4 -c:v libx264 -preset fast -f mpegts 'srt://192.168.1.100:9000?latency=500&passphrase=MyKey'# 接收端
ffplay 'srt://0.0.0.0:9000?latency=500&passphrase=MyKey'
 (5)高级功能

   1)多路流复用

// 启用多路复用(需SRT v1.5+)
srt_setsockflag(sock, SRTO_STREAMID, "#!::r=live/stream1", 18);

   2)自适应码率控制

// 动态调整发送带宽(根据网络反馈)
int64_t available_bw = ...;  // 从网络探测获取
srt_setsockflag(sock, SRTO_MAXBW, &available_bw, sizeof(available_bw));

   3)日志启用

// 设置日志级别
srt_setloglevel(srt_logging::LogLevel::debug);// 自定义日志回调
srt_setloghandler(nullptr, [](void* p, int level, const char* file, int line, const char* area, const char* msg) {printf("[SRT] %s:%d %s\n", file, line, msg);
});

   4)关键统计信息

SRT_TRACEBSTATS stats;
srt_bstats(sock, &stats, 1);printf("丢包率: %.2f%%\n", (stats.pktLossTotal * 100.0) / stats.pktSentTotal);
printf("延迟: %d ms\n", stats.msRTT);

8. 调试与优化

  • 监控丢包率:通过srt-logsffmpeg日志查看丢包和重传统计。

  • 调整延迟缓冲区

    • 网络稳定时减少latency(如500ms→200ms)。

    • 高抖动时增大latency(如2000ms)。

  • 带宽自适应:设置maxbw为物理带宽的80%,留出冗余。

9. 注意事项

  1. 防火墙/NAT穿透:确保UDP端口开放(默认10000-65535),或使用SRT的Rendezvous模式。

  2. 加密密钥管理:定期更换passphrase,避免密钥泄露。

  3. 硬件加速:使用支持SRT的硬件编码器(如Haivision Makito X)降低CPU占用。

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

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

相关文章

“征服HTML引号恶魔:“完全解析手册”!!!(quot;表示双引号)

&#x1f6a8;&#x1f4e2; "征服HTML引号恶魔&#xff1a;“完全解析手册” &#x1f4e2;&#x1f6a8; &#x1f3af; 博客引言&#xff1a;当引号变成"恶魔" &#x1f631; 是否遇到过这种情况&#xff1a; 写HTML时满心欢喜输入<div title"他…

npm install 卡在创建项目:sill idealTree buildDeps

参考&#xff1a; https://blog.csdn.net/PengXing_Huang/article/details/136460133 或者再执行 npm install -g cnpm --registryhttps://registry.npm.taobao.org 或者换梯子

Pytorch学习笔记(十二)Learning PyTorch - NLP from Scratch

这篇博客瞄准的是 pytorch 官方教程中 Learning PyTorch 章节的 NLP from Scratch 部分。 官网链接&#xff1a;https://pytorch.org/tutorials/intermediate/nlp_from_scratch_index.html 完整网盘链接: https://pan.baidu.com/s/1L9PVZ-KRDGVER-AJnXOvlQ?pwdaa2m 提取码: …

mysql--socket报错

错误原因分析 MySQL 服务未运行&#xff08;最常见原因&#xff09; 错误中的 (2) 表示 “No such file or directory”&#xff0c;即 /tmp/mysql.sock 不存在这通常意味着 MySQL 服务器根本没有启动 socket 文件路径不匹配 客户端尝试连接 /tmp/mysql.sock但 MySQL 服务器可…

labview加载matlab数据时报错提示:对象引用句柄无效。

1. labview报错提示 labview加载mat数据时报错提示&#xff1a;对象引用句柄无效。返回该引用句柄的节点可能遇到错误&#xff0c;并没有返回有效的引用句柄。该引用句柄所指的存储可能在执行调用之前已关闭。报错提示如下&#xff1a; 这是由于labview缺少matlab MathWorks导…

20250330 Pyflink with Paimon

1. 数据湖 2. 本地安装Pyflink和Paimon 必须安装Python 3.11 Pip install python -m pip install apache-flink1.20.1 需要手动加入这两个jar 测试代码&#xff1a; import argparse import logging import sys import timefrom pyflink.common import Row from pyflink.tab…

-PHP 应用SQL 盲注布尔回显延时判断报错处理增删改查方式

#PHP-MYSQL-SQL 操作 - 增删改查 1 、功能&#xff1a;数据查询(对数据感兴趣&#xff09; 查询&#xff1a; SELECT * FROM news where id$id 2 、功能&#xff1a;新增用户&#xff0c;添加新闻等&#xff08;对操作的结果感兴趣&#xff09; 增加&#xff1a; INSERT INT…

【学习记录】大模型微调之使用 LLaMA-Factory 微调 Qwen系列大模型,可以用自己的数据训练

一、LoRA微调的基本原理 1、基本概念 LoRA&#xff08;Low-Rank Adaptation&#xff09;是一种用于大模型微调的技术&#xff0c;通过引入低秩矩阵来减少微调时的参数量。在预训练的模型中&#xff0c;LoRA通过添加两个小矩阵B和A来近似原始的大矩阵ΔW&#xff0c;从而减少需…

vulntarget_a 训练笔记

win 7 权限 利用任意文件上传 getshell POST /module/ueditor/php/action_upload.php?actionuploadfile HTTP/1.1 User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html) Accept: */* Accept-Language: zh-CN,zh;q0.9 Connectio…

无人机螺旋桨平衡标准

螺旋桨平衡是确保无人机(UAV)平稳运行、可靠性和使用寿命的关键过程。螺旋桨的不平衡会导致振动、噪音&#xff0c;并加速关键部件的磨损&#xff0c;从而对飞行性能产生负面影响。 ISO 21940-11:2016标准为旋翼平衡提供了一个广泛引用的框架&#xff0c;定义了可接受的不平衡…

既生瑜何生亮?Nginx RTMP 模块与 SRS RTMP服务器技术对比

在实时视频流的场景中&#xff0c;RTMP 协议作为一种传统且高效的流媒体传输协议&#xff0c;广泛应用于各类直播和点播系统。两款流行的开源 RTMP 服务器分别是基于 Nginx 的 Nginx RTMP 模块 和 SRS&#xff08;Simple Real-Time Server&#xff09;。这两者都在流媒体行业有…

MATLAB 批量移动 TIF 文件至分类文件夹

文章目录 前言一、步骤二、代码 前言 本代码用于从指定的源文件夹 (sourceFolder) 中筛选所有 .tif 文件&#xff0c;并根据文件名的特定关键词&#xff08;Daynight 和 FDI&#xff09;将其分类移动到相应的目标文件夹 (targetDaynightFolder 和 targetFDIFolder)。 一、步骤…

基于Kubernetes部署Prometheus监控平台

#作者&#xff1a;stackofumbrella 文章目录 prometheus和k8s集群版本对照表架构Prometheus Operator简介kube-prometheus下载地址 安装修改镜像地址修改Prometheus的service修改Grafana的service修改Alertmanager的service数据持久化执行安装 Prometheus验证Grafana验证解决C…

STM32基础教程——输入捕获模式测量PWM频率

目录 前言 技术实现 原理图 连线图 代码实现 内容要点 PWM基本结构 开启外设时钟 配置GPIO端口 配置时基单元 初始化输出比较单元 输出比较通道重映射 输入捕获功能初始化 计算捕获PWM的频率 实验结果 问题记录 前言 IC&#xff08;Input Capture&#xff09;输…

基于网启PXE服务器的批量定制系统平台(详细版)

项目说明 该项目共分为2个子项目&#xff0c;由iventoy和定制安装两部分组成 该项目旨在复习巩固系统服务部署使用、shell编程等知识&#xff0c;旨在让学生增加知识面&#xff0c;提高项目实习经历&#xff0c;充实简历 项目背景&#xff1a; 公司新购了一批服务器和台式机…

旅游CMS选型:WordPress、Joomla与Drupal对比

内容概要 在旅游行业数字化转型进程中&#xff0c;内容管理系统&#xff08;CMS&#xff09;的选择直接影响网站运营效率与用户体验。WordPress、Joomla和Drupal作为全球主流的开源CMS平台&#xff0c;其功能特性与行业适配性存在显著差异。本文将从旅游企业核心需求出发&…

el-table下的复选框关联勾选

效果展示&#xff1a; <el-table style"height: 500px;" :data"tableData" border empty-text"暂无数据" v-loading"loading":header-cell-style"{ text-align: center }" :cell-style"{ text-align: center }"…

解决Cubemx生产的 .ioc文件不能外部打开的方法

正常来说&#xff0c;cubemx生成的文件会有图标 但是当图标白色的时候&#xff0c;无法通过直接点击这个文件进入cubemx 1.首先检查java环境是不是装的JAVA8&#xff0c;如果是的话进行第二步操作&#xff1b; 2.重新安装一次cubemx&#xff0c;在安装的时候选择为我安装&…

从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.1.3分布式数据加载与并行处理(PyTorch DataLoader优化)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 3.1.3 分布式数据加载与并行处理(`PyTorch DataLoader`优化)1. 大规模数据加载的挑战与瓶颈分析1.1 数据加载流程的时间分解2. PyTorch DataLoader的深度优化策略2.1 核心参数调优2.2 分布式数据分片策…

K8S学习之基础五十七:部署代码扫描工具sonarqube

部署代码扫描工具sonarqube 拉取postgres、sonarqube镜像&#xff0c;在harbor上创建postgres、sonarqube项目&#xff0c;将镜像上传至harbordocker pull postgres docker pull sonarqube docker tat postgres:latest 172.16.80.140/postgres/postgres:latest docker tat sona…