Commit 0bb46f35a4c7d5730278b485f6ae945c552dde6d

Authored by xp.Huang
2 parents bddcb179 fd49ec09

Merge branch 'perf/camera-manage' into 'main_dev'

perf: 优化手动输入流地址携带参数时无法获取视频协议类型

See merge request yunteng/thingskit-front!1292
1 1 <script setup lang="ts">
2   - import Player, { Events, IError } from 'xgplayer';
  2 + import Player, { Events } from 'xgplayer';
3 3 import { FlvPlugin } from 'xgplayer-flv';
4 4 import Mp4Plugin from 'xgplayer-mp4';
5 5 import { HlsPlugin } from 'xgplayer-hls';
... ... @@ -26,8 +26,16 @@
26 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 37 function getStreamTypeByUrl(url = ''): StreamType | undefined {
30   - url = url || '';
  38 + url = parsePlayUrl(url) || '';
31 39 if (url.endsWith('.m3u8')) return 'hls';
32 40 else if (url.endsWith('.mp4')) return 'mp4';
33 41 else if (url.endsWith('.flv')) {
... ...
... ... @@ -18,6 +18,7 @@
18 18 import { useFingerprint } from '/@/utils/useFingerprint';
19 19 import { GetResult } from '@fingerprintjs/fingerprintjs';
20 20 import XGPlayer from '/@/components/Video/src/XGPlayer.vue';
  21 + import { isNullOrUnDef } from '/@/utils/is';
21 22
22 23 const props = defineProps({
23 24 mode: {
... ... @@ -90,7 +91,7 @@
90 91
91 92 const { getResult } = useFingerprint();
92 93 const beforeVideoPlay = async (record: CameraRecordItem) => {
93   - if (!record.accessMode) return;
  94 + if (isNullOrUnDef(record.accessMode)) return;
94 95 const { url, type } = await getPlayUrl(record);
95 96 record.playSourceUrl = url;
96 97 record.streamType = type;
... ...
... ... @@ -96,6 +96,7 @@ export enum ArticulationEnumType {
96 96 HIGH_DEFINITION = 1,
97 97 SMOOTH = 2,
98 98 }
  99 +
99 100 export enum ArticulationEnumNameType {
100 101 HIGH_DEFINITION = '高清',
101 102 SMOOTH = '流畅',
... ...