添加文档

This commit is contained in:
fengcheng
2025-04-16 17:59:47 +08:00
parent 726036a715
commit 8988deadbb
47 changed files with 561 additions and 37 deletions

View File

@@ -159,10 +159,10 @@ public interface CommonGBChannelMapper {
"UPDATE wvp_device_channel SET gb_status = #{status} WHERE id = #{item.gbId}" +
"</foreach> " +
"</script>")
int updateStatusForListById(List<CommonGBChannel> commonGBChannels, @Param("status") String status);
int updateStatusForListById(@Param("commonGBChannels") List<CommonGBChannel> commonGBChannels, @Param("status") String status);
@SelectProvider(type = ChannelProvider.class, method = "queryInListByStatus")
List<CommonGBChannel> queryInListByStatus(List<CommonGBChannel> commonGBChannelList, @Param("status") String status);
List<CommonGBChannel> queryInListByStatus(@Param("commonGBChannelList") List<CommonGBChannel> commonGBChannelList, @Param("status") String status);
@Insert(" <script>" +

View File

@@ -2,7 +2,14 @@ export const redirects = JSON.parse("{}")
export const routes = Object.fromEntries([
["/get-started.html", { loader: () => import(/* webpackChunkName: "get-started.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/get-started.html.js"), meta: {"title":"Get Started"} }],
["/doc/kslj.html", { loader: () => import(/* webpackChunkName: "doc_kslj.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/kslj.html.js"), meta: {"title":"1"} }],
["/", { loader: () => import(/* webpackChunkName: "index.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/index.html.js"), meta: {"title":"首页"} }],
["/doc/device.html", { loader: () => import(/* webpackChunkName: "doc_device.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/device.html.js"), meta: {"title":"接入设备"} }],
["/doc/donate.html", { loader: () => import(/* webpackChunkName: "doc_donate.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/donate.html.js"), meta: {"title":"捐赠支持"} }],
["/doc/faq.html", { loader: () => import(/* webpackChunkName: "doc_faq.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/faq.html.js"), meta: {"title":""} }],
["/doc/gxrz.html", { loader: () => import(/* webpackChunkName: "doc_gxrz.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/gxrz.html.js"), meta: {"title":"更新日志"} }],
["/doc/", { loader: () => import(/* webpackChunkName: "doc_index.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/index.html.js"), meta: {"title":"介绍"} }],
["/doc/kslj.html", { loader: () => import(/* webpackChunkName: "doc_kslj.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/kslj.html.js"), meta: {"title":"快速开始"} }],
["/doc/spjc.html", { loader: () => import(/* webpackChunkName: "doc_spjc.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/spjc.html.js"), meta: {"title":""} }],
["/404.html", { loader: () => import(/* webpackChunkName: "404.html" */"C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/404.html.js"), meta: {"title":""} }],
]);
@@ -22,13 +29,3 @@ if (import.meta.hot) {
__VUE_HMR_RUNTIME__.updateRedirects(redirects)
})
}
ts(redirects)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ routes, redirects }) => {
__VUE_HMR_RUNTIME__.updateRoutes(routes)
__VUE_HMR_RUNTIME__.updateRedirects(redirects)
})
}

View File

@@ -42,6 +42,99 @@ export const SEARCH_INDEX = [
"pathLocale": "/",
"extraFields": []
},
{
"title": "接入设备",
"headers": [
{
"level": 2,
"title": "1.国标28181设备接入",
"slug": "_1-国标28181设备接入",
"link": "#_1-国标28181设备接入",
"children": []
},
{
"level": 2,
"title": "大华摄像头配置信息",
"slug": "大华摄像头配置信息",
"link": "#大华摄像头配置信息",
"children": []
},
{
"level": 2,
"title": "大华NVR配置信息",
"slug": "大华nvr配置信息",
"link": "#大华nvr配置信息",
"children": []
},
{
"level": 2,
"title": "宇视科技配置信息",
"slug": "宇视科技配置信息",
"link": "#宇视科技配置信息",
"children": []
},
{
"level": 2,
"title": "水星摄像头配置信息",
"slug": "水星摄像头配置信息",
"link": "#水星摄像头配置信息",
"children": []
},
{
"level": 2,
"title": "海康摄像头配置信息",
"slug": "海康摄像头配置信息",
"link": "#海康摄像头配置信息",
"children": []
},
{
"level": 2,
"title": "直播推流设备",
"slug": "直播推流设备",
"link": "#直播推流设备",
"children": []
},
{
"level": 2,
"title": "接入非国标IPC设备或者其他流地址形式的设备",
"slug": "接入非国标ipc设备或者其他流地址形式的设备",
"link": "#接入非国标ipc设备或者其他流地址形式的设备",
"children": []
}
],
"path": "/doc/device.html",
"pathLocale": "/",
"extraFields": []
},
{
"title": "捐赠支持",
"headers": [],
"path": "/doc/donate.html",
"pathLocale": "/",
"extraFields": []
},
{
"title": "",
"headers": [],
"path": "/doc/faq.html",
"pathLocale": "/",
"extraFields": []
},
{
"title": "更新日志",
"headers": [
{
"level": 2,
"title": "v1.0.0",
"slug": "v1-0-0",
"link": "#v1-0-0",
"children": []
}
],
"path": "/doc/gxrz.html",
"pathLocale": "/",
"extraFields": []
},
{
"title": "介绍",
"headers": [],
@@ -50,12 +143,62 @@ export const SEARCH_INDEX = [
"extraFields": []
},
{
"title": "1",
"headers": [],
"title": "快速开始",
"headers": [
{
"level": 2,
"title": "1.准备工作",
"slug": "_1-准备工作",
"link": "#_1-准备工作",
"children": []
},
{
"level": 2,
"title": "2.运行ZLMediaKit",
"slug": "_2-运行zlmediakit",
"link": "#_2-运行zlmediakit",
"children": []
},
{
"level": 2,
"title": "3.修改配置文件",
"slug": "_3-修改配置文件",
"link": "#_3-修改配置文件",
"children": []
},
{
"level": 2,
"title": "4.运行后端系统",
"slug": "_4-运行后端系统",
"link": "#_4-运行后端系统",
"children": []
},
{
"level": 2,
"title": "5.运行前端系统",
"slug": "_5-运行前端系统",
"link": "#_5-运行前端系统",
"children": []
},
{
"level": 2,
"title": "6.遇到问题",
"slug": "_6-遇到问题",
"link": "#_6-遇到问题",
"children": []
}
],
"path": "/doc/kslj.html",
"pathLocale": "/",
"extraFields": []
},
{
"title": "",
"headers": [],
"path": "/doc/spjc.html",
"pathLocale": "/",
"extraFields": []
},
{
"title": "",
"headers": [],

View File

@@ -1,4 +1,4 @@
export const themeData = JSON.parse("{\"logo\":\"https://vuejs.press/images/hero.png\",\"navbar\":[\"/\",{\"text\":\"文档\",\"link\":\"/doc/index\"}],\"sidebar\":[{\"text\":\"文档\",\"children\":[{\"text\":\"介绍\",\"link\":\"/doc/index\"},{\"text\":\"快速开始\",\"link\":\"/doc/kslj\"}]}],\"locales\":{\"/\":{\"selectLanguageName\":\"English\"}},\"colorMode\":\"auto\",\"colorModeSwitch\":true,\"repo\":null,\"selectLanguageText\":\"Languages\",\"selectLanguageAriaLabel\":\"Select language\",\"sidebarDepth\":2,\"editLink\":true,\"editLinkText\":\"Edit this page\",\"lastUpdated\":true,\"contributors\":true,\"contributorsText\":\"Contributors\",\"notFound\":[\"There's nothing here.\",\"How did we get here?\",\"That's a Four-Oh-Four.\",\"Looks like we've got some broken links.\"],\"backToHome\":\"Take me home\",\"openInNewWindow\":\"open in new window\",\"toggleColorMode\":\"toggle color mode\",\"toggleSidebar\":\"toggle sidebar\"}")
export const themeData = JSON.parse("{\"logo\":\"/images/logo/logo.png\",\"navbar\":[\"/\",{\"text\":\"文档\",\"link\":\"/doc/index\"}],\"sidebar\":[{\"text\":\"文档\",\"children\":[{\"text\":\"介绍\",\"link\":\"/doc/index\"},{\"text\":\"快速开始\",\"link\":\"/doc/kslj\"},{\"text\":\"视频教程\",\"link\":\"/doc/spjc\"},{\"text\":\"更新日志\",\"link\":\"/doc/gxrz\"}]},{\"text\":\"功能和使用\",\"children\":[{\"text\":\"接入设备\",\"link\":\"/doc/device\"}]},{\"text\":\"其他\",\"children\":[{\"text\":\"常见问题\",\"link\":\"/doc/faq\"},{\"text\":\"捐赠支持\",\"link\":\"/doc/donate\"}]}],\"locales\":{\"/\":{\"selectLanguageName\":\"English\"}},\"colorMode\":\"auto\",\"colorModeSwitch\":true,\"repo\":null,\"selectLanguageText\":\"Languages\",\"selectLanguageAriaLabel\":\"Select language\",\"sidebarDepth\":2,\"editLink\":true,\"editLinkText\":\"Edit this page\",\"lastUpdated\":true,\"contributors\":true,\"contributorsText\":\"Contributors\",\"notFound\":[\"There's nothing here.\",\"How did we get here?\",\"That's a Four-Oh-Four.\",\"Looks like we've got some broken links.\"],\"backToHome\":\"Take me home\",\"openInNewWindow\":\"open in new window\",\"toggleColorMode\":\"toggle color mode\",\"toggleSidebar\":\"toggle sidebar\"}")
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()

View File

@@ -0,0 +1,16 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/device.html.vue"
const data = JSON.parse("{\"path\":\"/doc/device.html\",\"title\":\"接入设备\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/device.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,36 @@
<template><div><h1 id="接入设备" tabindex="-1"><a class="header-anchor" href="#接入设备"><span>接入设备</span></a></h1>
<h2 id="_1-国标28181设备接入" tabindex="-1"><a class="header-anchor" href="#_1-国标28181设备接入"><span>1.国标28181设备接入</span></a></h2>
<p>设备接入主要是需要在设备上配置28181上级也就是ruoyi-wvp的信息只有信息一致的情况才可以注册成功设备注册成功后打开国标管理-&gt;国标设备,可以看到新增加的设备设备使用
主要有以下字段需要配置</p>
<ol>
<li>sip-&gt;port:28181服务监听的端口</li>
<li>sip-&gt;domain:domain宜采用ID统一编码的前十位编码</li>
<li>sip-&gt;id:28181服务ID</li>
<li>sip-&gt;password:28181服务密码</li>
<li>配置信息在如下位置
<img src="/images/device/1.png" alt="VuePress Logo"></li>
</ol>
<h2 id="大华摄像头配置信息" tabindex="-1"><a class="header-anchor" href="#大华摄像头配置信息"><span>大华摄像头配置信息</span></a></h2>
<p><img src="/images/device/2.png" alt="VuePress Logo"></p>
<h2 id="大华nvr配置信息" tabindex="-1"><a class="header-anchor" href="#大华nvr配置信息"><span>大华NVR配置信息</span></a></h2>
<p><img src="/images/device/3.png" alt="VuePress Logo"></p>
<h2 id="宇视科技配置信息" tabindex="-1"><a class="header-anchor" href="#宇视科技配置信息"><span>宇视科技配置信息</span></a></h2>
<p><img src="/images/device/4.png" alt="VuePress Logo"></p>
<h2 id="水星摄像头配置信息" tabindex="-1"><a class="header-anchor" href="#水星摄像头配置信息"><span>水星摄像头配置信息</span></a></h2>
<p><img src="/images/device/5.png" alt="VuePress Logo"></p>
<h2 id="海康摄像头配置信息" tabindex="-1"><a class="header-anchor" href="#海康摄像头配置信息"><span>海康摄像头配置信息</span></a></h2>
<p><img src="/images/device/6.png" alt="VuePress Logo"></p>
<h2 id="直播推流设备" tabindex="-1"><a class="header-anchor" href="#直播推流设备"><span>直播推流设备</span></a></h2>
<p>这里以obs推流为例,很多无人机也是一样的,设置下推流地址就可以接入了</p>
<ol>
<li>从ruoyi-wvp获取推流地址, 选择节点管理菜单,查看要推流的节点;
<img src="/images/device/7.png" alt="VuePress Logo"></li>
<li>拼接推流地址 得到的rtsp地址就是: rtsp://{流IP}:{RTSP PORT}/{app}/{stream} 得到的rtmp地址就是: rtsp://{流IP}:{RTMP PORT}/{app}/{stream} 其中流IP是设备可以连接到zlm的IP,端口是对应协议的端口号, app和stream自己定义就可以.</li>
<li>增加推流鉴权信息 wvp默认开启推流鉴权,拼接好的地址是不能直接推送的,会被返回鉴权失败,参考推流规则</li>
<li>推流成功后可以再推流列表中看到推流设备,可以播放 此方式只支持设备实时流的播放,无其他功能, 推流信息在推流结束后会自动移除,在列表里就看不到了,如果需要推流信息需要为设备配置国标编号,这样才可以作为wvp的一个永久通道存在.</li>
</ol>
<h2 id="接入非国标ipc设备或者其他流地址形式的设备" tabindex="-1"><a class="header-anchor" href="#接入非国标ipc设备或者其他流地址形式的设备"><span>接入非国标IPC设备或者其他流地址形式的设备</span></a></h2>
<p>这类设备的接入主要通过拉流代理的方式接入,原理就是zlm主动像播放器一样拉取这个流缓存在自己服务器供其他人播放.可以解决源设备并发访问能力差的问题. 在拉流代理/添加代理后可以直接播放, 拉流代理也是同样只支持播放当前配置的流.</p>
</div></template>

View File

@@ -0,0 +1,16 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/donate.html.vue"
const data = JSON.parse("{\"path\":\"/doc/donate.html\",\"title\":\"捐赠支持\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/donate.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,5 @@
<template><div><h1 id="捐赠支持" tabindex="-1"><a class="header-anchor" href="#捐赠支持"><span>捐赠支持</span></a></h1>
<p>如果你觉得这个项目帮助到了你你可以请作者喝杯咖啡表示鼓励 </p>
</div></template>

View File

@@ -0,0 +1,16 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/faq.html.vue"
const data = JSON.parse("{\"path\":\"/doc/faq.html\",\"title\":\"\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/faq.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,3 @@
<template><div></div></template>

View File

@@ -0,0 +1,16 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/gxrz.html.vue"
const data = JSON.parse("{\"path\":\"/doc/gxrz.html\",\"title\":\"更新日志\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/gxrz.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,8 @@
<template><div><h1 id="更新日志" tabindex="-1"><a class="header-anchor" href="#更新日志"><span>更新日志</span></a></h1>
<h2 id="v1-0-0" tabindex="-1"><a class="header-anchor" href="#v1-0-0"><span>v1.0.0</span></a></h2>
<ul>
<li>1.0.0版本正式发布</li>
</ul>
</div></template>

View File

@@ -1,5 +1,5 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/index.html.vue"
const data = JSON.parse("{\"path\":\"/doc/\",\"title\":\"介绍\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/index.md\"}")
const data = JSON.parse("{\"path\":\"/doc/\",\"title\":\"介绍\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{\"updatedTime\":1744792144000,\"contributors\":[{\"name\":\"fengcheng\",\"username\":\"\",\"email\":\"2929004360@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"523782997b11cd935d2edad45314a3be3c7e47d0\",\"time\":1744792144000,\"email\":\"2929004360@qq.com\",\"author\":\"fengcheng\",\"message\":\"添加文档\"}]},\"filePathRelative\":\"doc/index.md\"}")
export { comp, data }
if (import.meta.webpackHot) {

View File

@@ -41,6 +41,7 @@
<li><a href="https://blog.csdn.net/qq_43463507?type=blog" target="_blank" rel="noopener noreferrer">个人CSDN</a></li>
<li><a href="https://juejin.cn/user/434635074828914/posts" target="_blank" rel="noopener noreferrer">个人掘金</a></li>
</ul>
<h1 id="_7-赞助" tabindex="-1"><a class="header-anchor" href="#_7-赞助"><span>7.赞助</span></a></h1>
</div></template>

View File

@@ -1,5 +1,5 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/kslj.html.vue"
const data = JSON.parse("{\"path\":\"/doc/kslj.html\",\"title\":\"1\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/kslj.md\"}")
const data = JSON.parse("{\"path\":\"/doc/kslj.html\",\"title\":\"快速开始\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{\"updatedTime\":1744792144000,\"contributors\":[{\"name\":\"fengcheng\",\"username\":\"\",\"email\":\"2929004360@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"523782997b11cd935d2edad45314a3be3c7e47d0\",\"time\":1744792144000,\"email\":\"2929004360@qq.com\",\"author\":\"fengcheng\",\"message\":\"添加文档\"}]},\"filePathRelative\":\"doc/kslj.md\"}")
export { comp, data }
if (import.meta.webpackHot) {

View File

@@ -1,4 +1,89 @@
<template><div><h1 id="_1" tabindex="-1"><a class="header-anchor" href="#_1"><span>1</span></a></h1>
<template><div><h1 id="快速开始" tabindex="-1"><a class="header-anchor" href="#快速开始"><span>快速开始</span></a></h1>
<h2 id="_1-准备工作" tabindex="-1"><a class="header-anchor" href="#_1-准备工作"><span>1.准备工作</span></a></h2>
<ul>
<li>JDK &gt;= 1.8</li>
<li>MySQL &gt;= 5.7</li>
<li>Maven &gt;= 3.0</li>
<li>Redis &gt;= 3.0</li>
<li>ZLMediaKit 建议使用稳定版本</li>
</ul>
<h2 id="_2-运行zlmediakit" tabindex="-1"><a class="header-anchor" href="#_2-运行zlmediakit"><span>2.运行ZLMediaKit</span></a></h2>
<ul>
<li>参考<a href="https://docs.zlmediakit.com/zh/" target="_blank" rel="noopener noreferrer">ZLMediaKit</a></li>
</ul>
<h2 id="_3-修改配置文件" tabindex="-1"><a class="header-anchor" href="#_3-修改配置文件"><span>3.修改配置文件</span></a></h2>
<ul>
<li>修改application-druid.yml</li>
</ul>
<div class="language-yaml" data-highlighter="prismjs" data-ext="yml"><pre v-pre><code><span class="line"><span class="token key atrule">spring</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">datasource</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">type</span><span class="token punctuation">:</span> com.alibaba.druid.pool.DruidDataSource</span>
<span class="line"> <span class="token key atrule">driverClassName</span><span class="token punctuation">:</span> com.mysql.cj.jdbc.Driver</span>
<span class="line"> <span class="token key atrule">druid</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token comment"># 主库数据源</span></span>
<span class="line"> <span class="token key atrule">master</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">url</span><span class="token punctuation">:</span> jdbc<span class="token punctuation">:</span>mysql<span class="token punctuation">:</span>//127.0.0.1<span class="token punctuation">:</span>3306/ry<span class="token punctuation">-</span>wvp<span class="token punctuation">?</span>useUnicode=true<span class="token important">&amp;characterEncoding=utf8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=true&amp;serverTimezone=GMT%2B8&amp;rewriteBatchedStatements=true&amp;allowMultiQueries=true</span></span>
<span class="line"> <span class="token key atrule">username</span><span class="token punctuation">:</span> root</span>
<span class="line"> <span class="token key atrule">password</span><span class="token punctuation">:</span> 自己密码</span>
<span class="line"></span></code></pre>
</div><ul>
<li>修改application.yml</li>
</ul>
<div class="language-yaml" data-highlighter="prismjs" data-ext="yml"><pre v-pre><code><span class="line"><span class="token comment">##zlm 默认服务器配置</span></span>
<span class="line"><span class="token key atrule">media</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token key atrule">id</span><span class="token punctuation">:</span> zlmediakit<span class="token punctuation">-</span>local</span>
<span class="line"> <span class="token comment"># [必须修改] zlm服务器的内网IP</span></span>
<span class="line"> <span class="token key atrule">ip</span><span class="token punctuation">:</span> 127.0.0.1</span>
<span class="line"> <span class="token comment"># [必须修改] zlm服务器的http.port</span></span>
<span class="line"> <span class="token key atrule">http-port</span><span class="token punctuation">:</span> <span class="token number">8092</span></span>
<span class="line"> <span class="token comment"># [必选选] zlm服务器的hook.admin_params=secret</span></span>
<span class="line"> <span class="token key atrule">secret</span><span class="token punctuation">:</span> TWSYFgYJOQWB4ftgeYut8DW4wbs7pQnj</span>
<span class="line"> <span class="token comment"># 启用多端口模式, 多端口模式使用端口区分每路流兼容性更好 单端口使用流的ssrc区分 点播超时建议使用多端口测试</span></span>
<span class="line"> <span class="token key atrule">rtp</span><span class="token punctuation">:</span></span>
<span class="line"> <span class="token comment"># [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输</span></span>
<span class="line"> <span class="token key atrule">enable</span><span class="token punctuation">:</span> <span class="token boolean important">true</span></span>
<span class="line"> <span class="token comment"># [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性不然自动配置此属性可能不成功</span></span>
<span class="line"> <span class="token key atrule">port-range</span><span class="token punctuation">:</span> <span class="token number">40000</span><span class="token punctuation">,</span><span class="token number">40300</span> <span class="token comment"># 端口范围</span></span>
<span class="line"> <span class="token comment"># [可选] 国标级联在此范围内选择端口发送媒体流,</span></span>
<span class="line"> <span class="token key atrule">send-port-range</span><span class="token punctuation">:</span> <span class="token number">40000</span><span class="token punctuation">,</span><span class="token number">40300</span> <span class="token comment"># 端口范围</span></span>
<span class="line"></span></code></pre>
</div><h2 id="_4-运行后端系统" tabindex="-1"><a class="header-anchor" href="#_4-运行后端系统"><span>4.运行后端系统</span></a></h2>
<ul>
<li>前往Gitee下载页面<a href="https://doc.ruoyi.vip/" target="_blank" rel="noopener noreferrer">ruoyi-vue</a>下载解压到工作目录</li>
<li>导入到IDEA中菜单 File -&gt; Open选择下载的文件解压后的文件夹</li>
<li>创建数据库ry-wvp并导入数据脚本ry-wvp.sql</li>
<li>运行<code v-pre>RuoYiApplication.java</code>启动项目</li>
<li>项目运行访问地址http://localhost:8080</li>
</ul>
<div class="language-java" data-highlighter="prismjs" data-ext="java"><pre v-pre><code><span class="line"><span class="token punctuation">(</span><span class="token punctuation">)</span>ノ゙ 若依启动成功 <span class="token punctuation">(</span>´ڡ`ლ<span class="token punctuation">)</span>゙ </span>
<span class="line"> <span class="token punctuation">.</span>-<span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token punctuation">.</span> ____ __ </span>
<span class="line"> <span class="token operator">|</span> _ _ \ \ \ <span class="token operator">/</span> <span class="token operator">/</span> </span>
<span class="line"> <span class="token operator">|</span> <span class="token punctuation">(</span> ' <span class="token punctuation">)</span> <span class="token operator">|</span> \ _<span class="token punctuation">.</span> <span class="token operator">/</span> ' </span>
<span class="line"> <span class="token operator">|</span><span class="token punctuation">(</span>_ o _<span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token function">_</span><span class="token punctuation">(</span> <span class="token punctuation">)</span>_ <span class="token punctuation">.</span>' </span>
<span class="line"> <span class="token operator">|</span> <span class="token punctuation">(</span>_<span class="token punctuation">,</span>_<span class="token punctuation">)</span><span class="token punctuation">.</span>' __ <span class="token function">___</span><span class="token punctuation">(</span>_ o _<span class="token punctuation">)</span>' </span>
<span class="line"> <span class="token operator">|</span> <span class="token operator">|</span>\ \ <span class="token operator">|</span> <span class="token operator">||</span> <span class="token operator">|</span><span class="token punctuation">(</span>_<span class="token punctuation">,</span>_<span class="token punctuation">)</span>' </span>
<span class="line"> <span class="token operator">|</span> <span class="token operator">|</span> \ `' <span class="token operator">/</span><span class="token operator">|</span> `<span class="token operator">-</span>' <span class="token operator">/</span> </span>
<span class="line"> <span class="token operator">|</span> <span class="token operator">|</span> \ <span class="token operator">/</span> \ <span class="token operator">/</span> </span>
<span class="line"> '<span class="token char">'-'</span> `<span class="token char">'-'</span> `<span class="token operator">-</span><span class="token punctuation">.</span><span class="token punctuation">.</span>-' </span>
<span class="line"></span></code></pre>
</div><h2 id="_5-运行前端系统" tabindex="-1"><a class="header-anchor" href="#_5-运行前端系统"><span>5.运行前端系统</span></a></h2>
<div class="language-javascript" data-highlighter="prismjs" data-ext="js"><pre v-pre><code><span class="line"># 进入项目目录</span>
<span class="line">cd ruoyi<span class="token operator">-</span>ui<span class="token operator">-</span>vue3</span>
<span class="line"></span>
<span class="line"># 安装依赖</span>
<span class="line">npm i <span class="token operator">--</span>registry<span class="token operator">=</span>https<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>registry<span class="token punctuation">.</span>npmmirror<span class="token punctuation">.</span>com</span>
<span class="line"></span>
<span class="line"># 启动服务</span>
<span class="line">npm run dev</span>
<span class="line"></span>
<span class="line"># 构建测试环境 npm run build<span class="token operator">:</span>stage</span>
<span class="line"># 构建生产环境 npm run build<span class="token operator">:</span>prod</span>
<span class="line"># 前端访问地址 http<span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>localhost<span class="token operator">:</span><span class="token number">80</span></span>
<span class="line"></span></code></pre>
</div><h2 id="_6-遇到问题" tabindex="-1"><a class="header-anchor" href="#_6-遇到问题"><span>6.遇到问题</span></a></h2>
<ul>
<li>加微信<code v-pre>zlmkit</code>备注<code v-pre>ruoyi-wvp</code></li>
</ul>
</div></template>

View File

@@ -0,0 +1,16 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/spjc.html.vue"
const data = JSON.parse("{\"path\":\"/doc/spjc.html\",\"title\":\"\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/spjc.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,3 @@
<template><div></div></template>

View File

@@ -0,0 +1,16 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/doc/use.html.vue"
const data = JSON.parse("{\"path\":\"/doc/use.html\",\"title\":\"\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"doc/use.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,3 @@
<template><div></div></template>

View File

@@ -1,5 +1,5 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/get-started.html.vue"
const data = JSON.parse("{\"path\":\"/get-started.html\",\"title\":\"Get Started\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{},\"filePathRelative\":\"get-started.md\"}")
const data = JSON.parse("{\"path\":\"/get-started.html\",\"title\":\"Get Started\",\"lang\":\"en-US\",\"frontmatter\":{},\"git\":{\"updatedTime\":1744792144000,\"contributors\":[{\"name\":\"fengcheng\",\"username\":\"\",\"email\":\"2929004360@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"523782997b11cd935d2edad45314a3be3c7e47d0\",\"time\":1744792144000,\"email\":\"2929004360@qq.com\",\"author\":\"fengcheng\",\"message\":\"添加文档\"}]},\"filePathRelative\":\"get-started.md\"}")
export { comp, data }
if (import.meta.webpackHot) {

View File

@@ -1,5 +1,5 @@
import comp from "C:/Users/17988/Desktop/ruoyi/RuoYi-Wvp/vuepress/docs/.vuepress/.temp/pages/index.html.vue"
const data = JSON.parse("{\"path\":\"/\",\"title\":\"首页\",\"lang\":\"en-US\",\"frontmatter\":{\"home\":true,\"title\":\"首页\",\"heroImage\":\"https://vuejs.press/images/hero.png\",\"actions\":[{\"text\":\"快速开始\",\"link\":\"/doc/kslj.md\",\"type\":\"primary\"}],\"features\":[{\"title\":\"各类协议支持\",\"details\":\"支持国标SIP(2016,2022),支持ONVIF协议,支持ZLM,SRS(计划),后续支持RTMP+ISUP(计划)\"},{\"title\":\"基础功能完善\",\"details\":\"视频数据传输标准化,增强的安全性,灵活的设备接入,实时监控和回放,标准化接口\"},{\"title\":\"多平台支持\",\"details\":\"您可以用平台作为您的业务基础框架,您也可以用此平台作为监控平台多选择多支持。\"},{\"title\":\"新技术新组件\",\"details\":\"才用后端springboot+element plus+前端vue3,从零搭建视频平台,上手容易并且提升快,多模块架构,充分考虑开发者\"},{\"title\":\"新平台新UI设计\",\"details\":\"稳定高并发,秉承包容、多元、进化、连接的价值观,动态布局,具有完善目录结构和代码规范配置,拥有良好开发体验和设计感\"},{\"title\":\"特性\",\"details\":\"实现标准的28181信令兼容常见的品牌设备比如海康、大华、宇视、水星等品牌的IPC、NVR以及平台。\"}],\"footer\":\"基于ruoyi-wvp的流媒体平台开箱即用。 完全开源且使用MIT许可协议。可以在保留版权信息的基础上商用。\"},\"git\":{},\"filePathRelative\":\"README.md\"}")
const data = JSON.parse("{\"path\":\"/\",\"title\":\"首页\",\"lang\":\"en-US\",\"frontmatter\":{\"home\":true,\"title\":\"首页\",\"heroImage\":\"/images/logo/logo.png\",\"actions\":[{\"text\":\"快速开始\",\"link\":\"/doc/kslj.md\",\"type\":\"primary\"}],\"features\":[{\"title\":\"各类协议支持\",\"details\":\"支持国标SIP(2016,2022),支持ONVIF协议,支持ZLM,SRS(计划),后续支持RTMP+ISUP(计划)\"},{\"title\":\"基础功能完善\",\"details\":\"视频数据传输标准化,增强的安全性,灵活的设备接入,实时监控和回放,标准化接口\"},{\"title\":\"多平台支持\",\"details\":\"您可以用平台作为您的业务基础框架,您也可以用此平台作为监控平台多选择多支持。\"},{\"title\":\"新技术新组件\",\"details\":\"才用后端springboot+element plus+前端vue3,从零搭建视频平台,上手容易并且提升快,多模块架构,充分考虑开发者\"},{\"title\":\"新平台新UI设计\",\"details\":\"稳定高并发,秉承包容、多元、进化、连接的价值观,动态布局,具有完善目录结构和代码规范配置,拥有良好开发体验和设计感\"},{\"title\":\"特性\",\"details\":\"实现标准的28181信令兼容常见的品牌设备比如海康、大华、宇视、水星等品牌的IPC、NVR以及平台。\"}],\"footer\":\"基于ruoyi-wvp的流媒体平台开箱即用。 完全开源且使用MIT许可协议。可以在保留版权信息的基础上商用。\"},\"git\":{\"updatedTime\":1744792144000,\"contributors\":[{\"name\":\"fengcheng\",\"username\":\"\",\"email\":\"2929004360@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"523782997b11cd935d2edad45314a3be3c7e47d0\",\"time\":1744792144000,\"email\":\"2929004360@qq.com\",\"author\":\"fengcheng\",\"message\":\"添加文档\"}]},\"filePathRelative\":\"README.md\"}")
export { comp, data }
if (import.meta.webpackHot) {

View File

@@ -5,12 +5,20 @@ import {searchPlugin} from '@vuepress/plugin-search'
export default defineUserConfig({
lang: 'en-US',
port: '12999',
plugins: [
searchPlugin({
locales: {
'/': {
placeholder: '搜索文档',
},
}
}),
],
title: 'ruoyi-wvp',
description: '为简化对接监控而生',
theme: defaultTheme({
logo: 'https://vuejs.press/images/hero.png',
logo: '/images/logo/logo.png',
navbar: ['/', {
text: '文档',
@@ -27,21 +35,40 @@ export default defineUserConfig({
{
text: '快速开始',
link: '/doc/kslj'
},
{
text: '视频教程',
link: '/doc/spjc'
},
{
text: '更新日志',
link: '/doc/gxrz'
}
]
},
{
text: '功能和使用',
children: [
{
text: '接入设备',
link: '/doc/device'
},
]
},
{
text: '其他',
children: [
{
text: '常见问题',
link: '/doc/faq'
},
{
text: '捐赠支持',
link: '/doc/donate'
},
]
}
]
}),
plugins: [
searchPlugin({
locales: {
'/': {
placeholder: '搜索文档',
},
}
}),
],
bundler: viteBundler(),
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

View File

@@ -1,7 +1,7 @@
---
home: true
title: 首页
heroImage: https://vuejs.press/images/hero.png
heroImage: /images/logo/logo.png
actions:
- text: 快速开始
link: /doc/kslj.md

View File

@@ -0,0 +1,30 @@
# 接入设备
## 1.国标28181设备接入
设备接入主要是需要在设备上配置28181上级也就是ruoyi-wvp的信息只有信息一致的情况才可以注册成功。设备注册成功后打开国标管理->国标设备,可以看到新增加的设备;设备使用,
主要有以下字段需要配置:
1. sip->port:28181服务监听的端口
2. sip->domain:domain宜采用ID统一编码的前十位编码。
3. sip->id:28181服务ID
4. sip->password:28181服务密码
5. 配置信息在如下位置
![VuePress Logo](/images/device/1.png)
## 大华摄像头配置信息
![VuePress Logo](/images/device/2.png)
## 大华NVR配置信息
![VuePress Logo](/images/device/3.png)
## 宇视科技配置信息
![VuePress Logo](/images/device/4.png)
## 水星摄像头配置信息
![VuePress Logo](/images/device/5.png)
## 海康摄像头配置信息
![VuePress Logo](/images/device/6.png)
## 直播推流设备
这里以obs推流为例,很多无人机也是一样的,设置下推流地址就可以接入了
1. 从ruoyi-wvp获取推流地址, 选择节点管理菜单,查看要推流的节点;
![VuePress Logo](/images/device/7.png)
2. 拼接推流地址 得到的rtsp地址就是: rtsp://{流IP}:{RTSP PORT}/{app}/{stream} 得到的rtmp地址就是: rtsp://{流IP}:{RTMP PORT}/{app}/{stream} 其中流IP是设备可以连接到zlm的IP,端口是对应协议的端口号, app和stream自己定义就可以.
3. 增加推流鉴权信息 wvp默认开启推流鉴权,拼接好的地址是不能直接推送的,会被返回鉴权失败,参考推流规则
4. 推流成功后可以再推流列表中看到推流设备,可以播放 此方式只支持设备实时流的播放,无其他功能, 推流信息在推流结束后会自动移除,在列表里就看不到了,如果需要推流信息需要为设备配置国标编号,这样才可以作为wvp的一个永久通道存在.
## 接入非国标IPC设备或者其他流地址形式的设备
这类设备的接入主要通过拉流代理的方式接入,原理就是zlm主动像播放器一样拉取这个流缓存在自己服务器供其他人播放.可以解决源设备并发访问能力差的问题. 在拉流代理/添加代理后可以直接播放, 拉流代理也是同样只支持播放当前配置的流.

View File

@@ -0,0 +1,2 @@
# 捐赠支持
如果你觉得这个项目帮助到了你,你可以请作者喝杯咖啡表示鼓励 ☕️

0
vuepress/docs/doc/faq.md Normal file
View File

View File

@@ -0,0 +1,3 @@
# 更新日志
## v1.0.0
- 1.0.0版本正式发布

View File

@@ -39,3 +39,5 @@ ruoyi-wvp 是基于ruoyi-vue和wvp框架开发开箱即用的28181协议视
- [个人码云](https://gitee.com/ruoyi_wvp)
- [个人CSDN](https://blog.csdn.net/qq_43463507?type=blog)
- [个人掘金](https://juejin.cn/user/434635074828914/posts)
# 7.赞助

View File

@@ -1 +1,81 @@
# 1
# 快速开始
## 1.准备工作
- JDK >= 1.8
- MySQL >= 5.7
- Maven >= 3.0
- Redis >= 3.0
- ZLMediaKit 建议使用稳定版本
## 2.运行ZLMediaKit
- 参考[ZLMediaKit](https://docs.zlmediakit.com/zh/)
## 3.修改配置文件
- 修改application-druid.yml
```yml:no-line-numbers
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://127.0.0.1:3306/ry-wvp?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true
username: root
password: 自己密码
```
- 修改application.yml
```yml:no-line-numbers
##zlm 默认服务器配置
media:
id: zlmediakit-local
# [必须修改] zlm服务器的内网IP
ip: 127.0.0.1
# [必须修改] zlm服务器的http.port
http-port: 8092
# [必选选] zlm服务器的hook.admin_params=secret
secret: TWSYFgYJOQWB4ftgeYut8DW4wbs7pQnj
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分 点播超时建议使用多端口测试
rtp:
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
enable: true
# [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性不然自动配置此属性可能不成功
port-range: 40000,40300 # 端口范围
# [可选] 国标级联在此范围内选择端口发送媒体流,
send-port-range: 40000,40300 # 端口范围
```
## 4.运行后端系统
- 前往Gitee下载页面[ruoyi-vue](https://doc.ruoyi.vip/)下载解压到工作目录
- 导入到IDEA中菜单 File -> Open选择下载的文件解压后的文件夹
- 创建数据库ry-wvp并导入数据脚本ry-wvp.sql
- 运行`RuoYiApplication.java`,启动项目
- 项目运行访问地址http://localhost:8080
```java:no-line-numbers
(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙
.-------. ____ __
| _ _ \ \ \ / /
| ( ' ) | \ _. / '
|(_ o _) / _( )_ .'
| (_,_).' __ ___(_ o _)'
| |\ \ | || |(_,_)'
| | \ `' /| `-' /
| | \ / \ /
''-' `'-' `-..-'
```
## 5.运行前端系统
```javascript:no-line-numbers
# 进入项目目录
cd ruoyi-ui-vue3
# 安装依赖
npm i --registry=https://registry.npmmirror.com
# 启动服务
npm run dev
# 构建测试环境 npm run build:stage
# 构建生产环境 npm run build:prod
# 前端访问地址 http://localhost:80
```
## 6.遇到问题
- 加微信:`zlmkit`,备注:`ruoyi-wvp`

View File