Commit 0bb46f35a4c7d5730278b485f6ae945c552dde6d
Merge branch 'perf/camera-manage' into 'main_dev'
perf: 优化手动输入流地址携带参数时无法获取视频协议类型 See merge request yunteng/thingskit-front!1292
Showing
3 changed files
with
13 additions
and
3 deletions
1 | <script setup lang="ts"> | 1 | <script setup lang="ts"> |
2 | - import Player, { Events, IError } from 'xgplayer'; | 2 | + import Player, { Events } from 'xgplayer'; |
3 | import { FlvPlugin } from 'xgplayer-flv'; | 3 | import { FlvPlugin } from 'xgplayer-flv'; |
4 | import Mp4Plugin from 'xgplayer-mp4'; | 4 | import Mp4Plugin from 'xgplayer-mp4'; |
5 | import { HlsPlugin } from 'xgplayer-hls'; | 5 | import { HlsPlugin } from 'xgplayer-hls'; |
@@ -26,8 +26,16 @@ | @@ -26,8 +26,16 @@ | ||
26 | (eventName: 'onUnmounted', player: PresetPlayer): void; | 26 | (eventName: 'onUnmounted', player: PresetPlayer): void; |
27 | }>(); | 27 | }>(); |
28 | 28 | ||
29 | + function parsePlayUrl(url: string) { | ||
30 | + try { | ||
31 | + return new URL(url).pathname; | ||
32 | + } catch { | ||
33 | + return url; | ||
34 | + } | ||
35 | + } | ||
36 | + | ||
29 | function getStreamTypeByUrl(url = ''): StreamType | undefined { | 37 | function getStreamTypeByUrl(url = ''): StreamType | undefined { |
30 | - url = url || ''; | 38 | + url = parsePlayUrl(url) || ''; |
31 | if (url.endsWith('.m3u8')) return 'hls'; | 39 | if (url.endsWith('.m3u8')) return 'hls'; |
32 | else if (url.endsWith('.mp4')) return 'mp4'; | 40 | else if (url.endsWith('.mp4')) return 'mp4'; |
33 | else if (url.endsWith('.flv')) { | 41 | else if (url.endsWith('.flv')) { |
@@ -18,6 +18,7 @@ | @@ -18,6 +18,7 @@ | ||
18 | import { useFingerprint } from '/@/utils/useFingerprint'; | 18 | import { useFingerprint } from '/@/utils/useFingerprint'; |
19 | import { GetResult } from '@fingerprintjs/fingerprintjs'; | 19 | import { GetResult } from '@fingerprintjs/fingerprintjs'; |
20 | import XGPlayer from '/@/components/Video/src/XGPlayer.vue'; | 20 | import XGPlayer from '/@/components/Video/src/XGPlayer.vue'; |
21 | + import { isNullOrUnDef } from '/@/utils/is'; | ||
21 | 22 | ||
22 | const props = defineProps({ | 23 | const props = defineProps({ |
23 | mode: { | 24 | mode: { |
@@ -90,7 +91,7 @@ | @@ -90,7 +91,7 @@ | ||
90 | 91 | ||
91 | const { getResult } = useFingerprint(); | 92 | const { getResult } = useFingerprint(); |
92 | const beforeVideoPlay = async (record: CameraRecordItem) => { | 93 | const beforeVideoPlay = async (record: CameraRecordItem) => { |
93 | - if (!record.accessMode) return; | 94 | + if (isNullOrUnDef(record.accessMode)) return; |
94 | const { url, type } = await getPlayUrl(record); | 95 | const { url, type } = await getPlayUrl(record); |
95 | record.playSourceUrl = url; | 96 | record.playSourceUrl = url; |
96 | record.streamType = type; | 97 | record.streamType = type; |
@@ -96,6 +96,7 @@ export enum ArticulationEnumType { | @@ -96,6 +96,7 @@ export enum ArticulationEnumType { | ||
96 | HIGH_DEFINITION = 1, | 96 | HIGH_DEFINITION = 1, |
97 | SMOOTH = 2, | 97 | SMOOTH = 2, |
98 | } | 98 | } |
99 | + | ||
99 | export enum ArticulationEnumNameType { | 100 | export enum ArticulationEnumNameType { |
100 | HIGH_DEFINITION = '高清', | 101 | HIGH_DEFINITION = '高清', |
101 | SMOOTH = '流畅', | 102 | SMOOTH = '流畅', |