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 = '流畅', |