支持JT1078和GB28181的流媒体服务器-LKM启动配置文件参数说明
流媒体服务器地址:https://github.com/lkmio/lkm
GB28181信令,模拟多个国标设备工具:https://github.com/lkmio/gb-cms
文章目录
- gop_cache
- gop_buffer_size
- probe_timeout
- write_timeout
- mw_latency
- listen_ip
- public_ip
- idle_timeout
- receive_timeout
- debug
- hls
- segment_duration
- playlist_length
- dir
- rtsp
- port
- password
- transport
- webrtc.transport
- gb28181
- port
- transport
- 1078.port
- record
- format
- dir
- hook
- timeout
- on_started
- on_publish
- on_publish_done
- on_play
- on_play_done
- on_record
- on_idle_time
- on_receive_timeout
- log
- file_logging
- level
- name
- max_size
- max_backup
- max_age
- compress
{"gop_cache": true,"gop_buffer_size": 8192000,"probe_timeout": 2000,"write_timeout": 5000,"mw_latency": 350,"listen_ip" : "0.0.0.0","public_ip": "192.168.2.148","idle_timeout": 60,"receive_timeout":60,"debug": false,"http": {"port": 8080},"rtmp": {"enable": true,"port": 1935},"hls": {"enable": true,"segment_duration": 2,"playlist_length": 10,"dir": "../tmp"},"rtsp": {"enable": true,"port": [554,20000,30000],"password": "123456","transport": "UDP|TCP"},"webrtc": {"enable": true,"port": 8000,"transport": "UDP"},"gb28181": {"enable": true,"port": [50000,60000],"transport": "UDP|TCP"},"jt1078": {"enable": true,"port": 1078},"record": {"enable": false,"format": "flv","dir": "../record"},"hooks": {"enable": false,"timeout": 10,"on_started": "http://localhost:9000/api/v1/hook/on_started","on_publish": "http://localhost:9000/api/v1/hook/on_publish","on_publish_done": "http://localhost:9000/api/v1/hook/on_publish_done","on_play" : "http://localhost:9000/api/v1/hook/on_play","on_play_done" : "http://localhost:9000/api/v1/hook/on_play_done","on_record": "http://localhost:9000/api/v1/hook/on_record","on_idle_timeout": "http://localhost:9000/api/v1/hook/on_idle_timeout","on_receive_timeout": "http://localhost:9000/api/v1/hook/on_receive_timeout"},"log": {"file_logging": false,"level": -1,"name": "./logs/lkm.log","max_size": 10,"max_backup": 100,"max_age": 7,"compress": false}
}
gop_cache
GOP缓存开关,是实现拉流秒开
的关键所在,目前代码里面强制开启。WebRtc和RTSP输出流中不使用GOP缓存。
gop_buffer_size
GOP缓存区大小初始值,单位Bytes,取值范围512KB-20MB(4Mb码率-160Mb码率区间)。 合理的初始值可以有效降低因内存不足,造成重新扩容的可能性。
probe_timeout
解析推流Track的超时时间,单位毫秒。如果该计时器触发,Track数量不为0,以当前Track数量为准, 后续解析出来的Track都将丢弃,否则(Track数量为0)关闭Source。
write_timeout
针对TCP拉流Sink的发包超时时间,超过该时间会强制关闭该连接。
mw_latency
合并写延迟大小,单位毫秒,目前强制开启。 针对RTMP/FLV输出流,将缓存指定时长的传输流,一次性发送给Sink。可有效降低用户态和内核态交互频率, 大幅提升服务器性能。
listen_ip
监听地址。
public_ip
公网IP。
idle_timeout
空闲超时,单位秒。如果Source没有一路拉流,将在该计时器触发时,决定是否关闭Source。
receive_timeout
收流超时, 单位秒。如果Source没有收到推流数据包,将在该计时器触发时,决定是否关闭Source。
debug
如果开启,将保存推流数据包。
hls
segment_duration
单个TS切片时长。
playlist_length
最大TS切片数量。
dir
TS切片存放目录。
rtsp
port
[554,20000,30000]
第一个RTSP Server监听端口, 第二个和第三个指定UDP拉流的端口范围。如果只开启TCP拉流,只需要配置一个554
端口。
password
鉴权密码。
transport
UDP|TCP
同时开启TCP和UDP拉流,可以只配置一项。
webrtc.transport
目前仅支持UDP拉流。
gb28181
port
[50000,60000]
GB28181收流端口范围, 如果只有一个元素则表示单端口收流。
transport
UDP|TCP
同时开启TCP和UDP推流,可以只配置一项。
1078.port
目前仅支持TCP单端口推流。
record
format
录制格式,目前仅支持FLV录制。
dir
录制文件存放的目录。
hook
timeout
发送http请求的超时时间,单位秒。
on_started
lkm启动通知。
on_publish
推流通知。
on_publish_done
推流结束通知。
on_play
拉流通知。
on_play_done
拉流结束通知。
on_record
推流的录制文件通知。
on_idle_time
空闲超时通知。
on_receive_timeout
收流超时通知。
log
file_logging
日志是否保存到文件,默认不保存。
level
日志级别,-1-5级别,详情如下:
const (// DebugLevel logs are typically voluminous, and are usually disabled in// production.DebugLevel Level = iota - 1// InfoLevel is the default logging priority.InfoLevel// WarnLevel logs are more important than Info, but don't need individual// human review.WarnLevel// ErrorLevel logs are high-priority. If an application is running smoothly,// it shouldn't generate any error-level logs.ErrorLevel// DPanicLevel logs are particularly important errors. In development the// logger panics after writing the message.DPanicLevel// PanicLevel logs a message, then panics.PanicLevel// FatalLevel logs a message, then calls os.Exit(1).FatalLevel_minLevel = DebugLevel_maxLevel = FatalLevel// InvalidLevel is an invalid value for Level.//// Core implementations may panic if they see messages of this level.InvalidLevel = _maxLevel + 1
)
name
日志文件名称,同时可指明存放的目录。
max_size
单个日志文件最大大小,单位MB。
max_backup
最多允许保留多少个日志文件。
max_age
最多允许保留多少天的日志文件。
compress
是否压缩日志文件,默认不压缩。
相关文章:
支持JT1078和GB28181的流媒体服务器-LKM启动配置文件参数说明
流媒体服务器地址:https://github.com/lkmio/lkm GB28181信令,模拟多个国标设备工具:https://github.com/lkmio/gb-cms 文章目录 gop_cachegop_buffer_sizeprobe_timeoutwrite_timeoutmw_latencylisten_ippublic_ipidle_timeoutreceive_timeo…...
什么是隐式类型转换?隐式类型转换可能带来哪些问题? 显式类型转换(如强制类型转换)有哪些风险?
C 中的隐式类型转换 定义:在 C 中,隐式类型转换是指由编译器自动执行的类型转换,不需要程序员显式地进行操作。这种转换在很多情况下会自动发生,比如在表达式求值、函数调用传参等过程中。常见场景 算术运算中的转换:…...
量化交易新利器:阿布量化(AbuQuant)——金融研究者的得力助手
🚀 量化交易新利器:阿布量化(AbuQuant)——金融研究者的得力助手 🚀 文章目录 🚀 量化交易新利器:阿布量化(AbuQuant)——金融研究者的得力助手 🚀dz…...
UI设计从入门到进阶,全能实战课
课程内容: ├── 【宣导片】从入门到进阶!你的第一门UI必修课!.mp4 ├── 第0课:UI知识体系梳理 学习路径.mp4 ├── 第1课:IOS设计规范——基础规范与切图.mp4 ├── 第2课:IOS新趋势解析——模块规范与设计原则(上).mp4…...
Uniapp自动调整元素高度
获取设备的像素 如果你想让元素的高度相对于整个屏幕的高度占用一定的比例,可以通过获取屏幕的高度,然后计算出你想要的比例来设置元素的高度。以下是如何实现的示例: <script setup> import { ref, onMounted } from vue;// 定义一个…...

软考高项经验分享:我的备考之路与实战心得
软考,尤其是信息系统项目管理师(高项)考试,对于众多追求职业提升与专业认可的人士来说,是一场充满挑战与机遇的征程。我在当年参加软考高项的经历,可谓是一波三折,其中既有成功的喜悦࿰…...

安全关系型数据库查询新选择:Rust 语言的 rust-query 库深度解析
在当今这个数据驱动的时代,数据库作为信息存储和检索的核心组件,其重要性不言而喻。然而,对于开发者而言,如何在保证数据安全的前提下,高效地进行数据库操作却是一项挑战。传统的 SQL 查询虽然强大,但存在诸…...
《C++ 模型训练之早停法:有效预防过拟合的关键策略》
在 C 模型开发的复杂世界里,过拟合犹如一个潜藏的陷阱,常常使我们精心构建的模型在实际应用中表现大打折扣。而早停法(Early Stopping)作为一种行之有效的策略,能够帮助我们及时察觉模型训练过程中的异常,避…...

5.11【数据库】第一次实验
民宿预定,至少有不同的民宿,民宿下面有不同的房间(面积,房间编号) 房间类型,单价, 可预订以及不可预订 游客信息 订单信息 公司有很多课程, 学生,课程 每位学生每期…...

【CSS in Depth 2 精译_062】第 10 章 CSS 中的容器查询(@container)概述 + 10.1 容器查询的一个简单示例
当前内容所在位置(可进入专栏查看其他译好的章节内容) 【第十章 CSS 容器查询】 ✔️ 10.1 容器查询的一个简单示例 ✔️ 10.1.1 容器尺寸查询的用法 ✔️ 10.2 深入理解容器10.3 与容器相关的单位10.4 容器样式查询的用法10.5 本章小结 文章目录 第 10…...

蓝桥杯每日真题 - 第23天
题目:(直线) 题目描述(12届 C&C B组C题) 解题思路: 题目理解: 在平面直角坐标系中,从给定的点集中确定唯一的直线。 两点确定一条直线,判断两条直线是否相同,可通过…...
# Vue 入门级教程三
在前两篇 Vue 入门教程中,我们已经熟悉了 Vue 的基础语法、数据绑定、指令以及组件化开发等核心概念。在本教程中,我们将进一步探索 Vue 的高级特性,包括过滤器、自定义指令、过渡效果以及 Vue 与后端数据交互等内容,让你能够构建…...

hint: Updates were rejected because the tip of your current branch is behind!
问题 本地仓库往远段仓库推代码时候提示: error: failed to push some refs to 192.168.2.1:java-base/java-cloud.git hint: Updates were rejected because the tip of your current branch is behind! refs/heads/master:refs/heads/master [rejected] (…...

PHP 方头像转为圆图
业务需要把创建海报上的用户头像由方形转为圆形,前端的样式设置不能用。 故采用GD的函数来对方图进行裁剪处理为圆图。 目录 裁剪函数 本地图片 远程图片 效果 参考文章 总结 裁剪函数 从网上找的一个裁剪图片的函数。 代码如下: /* * 将图片切…...

centos 7 离线安装postgis插件
前一段时间记录了下如何在centos7中离线安装postgresql,因为工作需要,我不仅要安装postgresql,还需要安装postgis插件,这篇文章记录下postgis插件的安装过程。 1. 安装前的参考 如下的链接都是官网上的链接,对你安装p…...
pyinstaller打包的时候将ffmpeg也加进包中(包括打包文件夹的方法)
在使用 PyInstaller 打包包含 pydub 的 Python 应用程序时,由于 pydub 需要依赖 ffmpeg,你需要确保 ffmpeg 被正确包含进打包后的程序。以下是操作步骤: 1. 准备 ffmpeg 首先,确保你已经下载并安装了 ffmpeg。可以通过以下方式获取…...

JVM面试知识点1
内存结构(掌握内存结构划分、熟知各区域结构功能) 经典的JVM内存结构: 按照线程是否共享来划分: Heap (堆区) 1. 堆区的介绍 堆是 OOM 故障最主要的发生区域。它是内存区域中最大的一块区域,被所有线程共…...
wordpress
2024年自己建网站的步骤,新手自学建站教程 – 奶爸建站笔记 超详细图解:从 0 搭建一个个人网站,也太简单了吧 - 王一白 - 博客园 如何使用插件或者自定义页面创建一个WordPress着陆页 - 闪电博...
Day33 动态规划part02
62.不同路径 本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。 代码随想录 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili class Solution {public int uniquePaths(int m, int n) {int dp[][] = new int[m][n];//初…...

渗透测试之Web基础之Linux病毒编写——泷羽sec
声明: 学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 (bilibili.com)https://space.bilibili.com/350329294 导读: 时刻…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...