diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index b0011af..4129177 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -159,24 +159,24 @@ sip: alarm: false ##zlm 默认服务器配置 -#media: -# id: haoxin-zlm-1 -# # [必须修改] zlm服务器的内网IP -# ip: 192.168.158.199 -# # [必须修改] zlm服务器的http.port -# http-port: 8092 -# # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip -# hook-ip: 192.168.158.199 -# # [必选选] zlm服务器的hook.admin_params=secret -# secret: haoxin -# # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试 -# rtp: -# # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输 -# enable: true -# # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功 -# port-range: 30000,30500 # 端口范围 -# # [可选] 国标级联在此范围内选择端口发送媒体流, -# send-port-range: 30000,30500 # 端口范围 +media: + id: haoxin-zlm-1 + # [必须修改] zlm服务器的内网IP + ip: 192.168.158.199 + # [必须修改] zlm服务器的http.port + http-port: 8092 + # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip + hook-ip: 192.168.158.199 + # [必选选] zlm服务器的hook.admin_params=secret + secret: haoxin + # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试 + rtp: + # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输 + enable: true + # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功 + port-range: 40000,40300 # 端口范围 + # [可选] 国标级联在此范围内选择端口发送媒体流, + send-port-range: 40000,40300 # 端口范围 ##zlm 默认服务器配置 #media: @@ -199,24 +199,24 @@ sip: # send-port-range: 30000,30500 # 端口范围 #zlm 默认服务器配置 -media: - id: hxkj_zlm - # [必须修改] zlm服务器的内网IP - ip: 192.168.158.39 - # [必须修改] zlm服务器的http.port - http-port: 8092 - # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip - hook-ip: 192.168.158.39 - # [必选选] zlm服务器的hook.admin_params=secret - secret: hxkj_zlm - # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试 - rtp: - # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输 - enable: true - # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功 - port-range: 30000,30500 # 端口范围 - # [可选] 国标级联在此范围内选择端口发送媒体流, - send-port-range: 30000,30500 # 端口范围 +#media: +# id: hxkj_zlm +# # [必须修改] zlm服务器的内网IP +# ip: 192.168.158.39 +# # [必须修改] zlm服务器的http.port +# http-port: 8092 +# # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip +# hook-ip: 192.168.158.39 +# # [必选选] zlm服务器的hook.admin_params=secret +# secret: hxkj_zlm +# # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试 +# rtp: +# # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输 +# enable: true +# # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功 +# port-range: 30000,30500 # 端口范围 +# # [可选] 国标级联在此范围内选择端口发送媒体流, +# send-port-range: 30000,30500 # 端口范围 # [根据业务需求配置] diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 511842b..23bca6b 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -23,7 +23,7 @@ import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; /** * spring security配置 - * + * * @author ruoyi */ @EnableMethodSecurity(prePostEnabled = true, securedEnabled = true) @@ -35,7 +35,7 @@ public class SecurityConfig */ @Autowired private UserDetailsService userDetailsService; - + /** * 认证失败处理类 */ @@ -53,7 +53,7 @@ public class SecurityConfig */ @Autowired private JwtAuthenticationTokenFilter authenticationTokenFilter; - + /** * 跨域过滤器 */ @@ -111,7 +111,7 @@ public class SecurityConfig .authorizeHttpRequests((requests) -> { permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); // 对于登录login 注册register 验证码captchaImage 允许匿名访问 - requests.antMatchers("/login", "/register", "/captchaImage").permitAll() + requests.antMatchers("/login", "/register", "/captchaImage", "/api/**").permitAll() // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() diff --git a/ruoyi-ui-vue3/src/api/wvp/channel.js b/ruoyi-ui-vue3/src/api/wvp/channel.js index 153c037..c92536b 100644 --- a/ruoyi-ui-vue3/src/api/wvp/channel.js +++ b/ruoyi-ui-vue3/src/api/wvp/channel.js @@ -49,3 +49,11 @@ export function updateChannelData(data) { data: data, }) } + +// 通知设备上传媒体流 +export function sendDevicePush(params) { + return request({ + url: `/api/play/start/${params.deviceId}/${params.channelId}`, + method: 'get', + }) +} diff --git a/ruoyi-ui-vue3/src/views/wvp/channel/index.vue b/ruoyi-ui-vue3/src/views/wvp/channel/index.vue index 9055df0..4e658ce 100644 --- a/ruoyi-ui-vue3/src/views/wvp/channel/index.vue +++ b/ruoyi-ui-vue3/src/views/wvp/channel/index.vue @@ -92,9 +92,9 @@ @@ -493,7 +499,7 @@ import { subChannels, updateChannelStreamIdentification } from "../../../api/wvp/device.js"; -import {getCommonChannel, resetChannel, updateChannelData} from "../../../api/wvp/channel.js"; +import {getCommonChannel, resetChannel, updateChannelData, sendDevicePush} from "../../../api/wvp/channel.js"; import {recordApi} from "../../../api/wvp/control.js"; import router from "@/router"; const route = useRoute(); @@ -506,6 +512,7 @@ const parentChannelId = ref(''); const device = ref({}); const showTree = ref(false); const open = ref(false); +const openPlay = ref(false); const deviceChannelList = ref([]) const showSearch = ref(true); const loadSnap = ref({}); @@ -513,6 +520,7 @@ const channelListTable = ref(null); const channelCode = ref(null); const chooseCivilCodeRef = ref(null); const chooseGroupRef = ref(null); +const vUrl = ref(''); const data = reactive({ form: {}, @@ -528,6 +536,16 @@ const data = reactive({ const {queryParams, form, rules} = toRefs(data); +async function start(itemData){ + const params = { + deviceId: deviceId.value, + channelId: itemData.deviceId + } + const res = await sendDevicePush(params); + console.log(res); + +} + /** 搜索按钮操作 */ function handleQuery() { queryParams.value.pageNum = 1; @@ -689,7 +707,6 @@ function getDeviceChannelList() { channelType: queryParams.value.channelType, } ).then(response => { - console.log(response) channelList.value = response.rows; total.value = response.total; loading.value = false; @@ -866,4 +883,9 @@ onMounted(() => { display: flex; align-items: center; } + +.player { + width: 1000px; + height: 600px; +} diff --git a/ruoyi-ui-vue3/src/views/wvp/device/index.vue b/ruoyi-ui-vue3/src/views/wvp/device/index.vue index b462948..232f568 100644 --- a/ruoyi-ui-vue3/src/views/wvp/device/index.vue +++ b/ruoyi-ui-vue3/src/views/wvp/device/index.vue @@ -110,16 +110,16 @@