Commit fd49ec09bf49f942787eeca919cfe2ed90b4f6bd

Authored by ww
1 parent bddcb179

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

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