diff --git a/frontend/package.json b/frontend/package.json
index e0c6fa78f8..a1d0d4da34 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -27,6 +27,7 @@
"file-save": "^0.2.0",
"file-saver": "^2.0.5",
"fit2cloud-ui": "1.5.4",
+ "flv.js": "^1.6.2",
"html2canvasde": "^v1.1.4-de",
"jquery": "^3.1.1",
"js-base64": "^3.7.2",
diff --git a/frontend/src/components/canvas/components/Editor/StreamMediaLinks.vue b/frontend/src/components/canvas/components/Editor/StreamMediaLinks.vue
new file mode 100644
index 0000000000..d06d19b54c
--- /dev/null
+++ b/frontend/src/components/canvas/components/Editor/StreamMediaLinks.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+ FLV
+
+
+
+
+
+
+
+ Tips:{{ $t('panel.live_tips') }}
+
+
+
+
+ {{ $t('panel.play_once') }}
+ {{ $t('panel.play_circle') }}
+
+
+
+
+ {{ $t('panel.yes') }}
+ {{ $t('panel.no') }}
+
+
+
+
+
+
+ {{ $t('panel.confirm') }}
+ {{ $t('panel.cancel') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/components/canvas/components/TextAttr.vue b/frontend/src/components/canvas/components/TextAttr.vue
index 3f89341cc8..ec18af4c13 100644
--- a/frontend/src/components/canvas/components/TextAttr.vue
+++ b/frontend/src/components/canvas/components/TextAttr.vue
@@ -134,6 +134,12 @@
+
+
+
+
+
+
@@ -159,12 +165,13 @@
import { mapState } from 'vuex'
import Hyperlinks from '@/components/canvas/components/Editor/Hyperlinks'
import VideoLinks from '@/components/canvas/components/Editor/VideoLinks'
+import StreamMediaLinks from '@/components/canvas/components/Editor/StreamMediaLinks'
import DateFormat from '@/components/canvas/components/Editor/DateFormat'
import { COLOR_PANEL } from '@/views/chart/chart/chart'
import FrameLinks from '@/components/canvas/components/Editor/FrameLinks'
export default {
- components: { FrameLinks, Hyperlinks, DateFormat, VideoLinks },
+ components: { FrameLinks, Hyperlinks, DateFormat, VideoLinks, StreamMediaLinks },
props: {
scrollLeft: {
type: Number,
@@ -294,11 +301,14 @@ export default {
'backgroundColor',
'hyperlinks'
],
- // 文本组件显示的属性
'de-video': [
'opacity',
'videoLinks'
],
+ 'de-stream-media': [
+ 'opacity',
+ 'streamMediaLinks'
+ ],
'de-frame': [
'opacity',
'frameLinks'
diff --git a/frontend/src/components/canvas/custom-component/DeStreamMedia.vue b/frontend/src/components/canvas/custom-component/DeStreamMedia.vue
new file mode 100644
index 0000000000..c1920f07db
--- /dev/null
+++ b/frontend/src/components/canvas/custom-component/DeStreamMedia.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ {{ $t('panel.stream_media_add_tips') }}
+
+
+
+
+
+
+
diff --git a/frontend/src/components/canvas/custom-component/component-list.js b/frontend/src/components/canvas/custom-component/component-list.js
index 78dfb8cd48..397f696cbf 100644
--- a/frontend/src/components/canvas/custom-component/component-list.js
+++ b/frontend/src/components/canvas/custom-component/component-list.js
@@ -96,7 +96,18 @@ export const VIDEOLINKS = {
}
}
}
+}
+// 流媒体视频信息配置
+export const STREAMMEDIALINKS = {
+ videoType: 'flv',
+ flv: {
+ type: 'flv',
+ isLive: false,
+ cors: true, // 允许跨域
+ loop: true
+ // url: null // 网络动画视频
+ }
}
// 嵌套页面信息
@@ -148,6 +159,14 @@ export const pictureList = [
label: '视频',
icon: 'iconfont icon-video',
defaultClass: 'text-filter'
+ },
+ {
+ id: '20003',
+ component: 'stream-media',
+ type: 'stream-media',
+ label: '流媒体',
+ icon: 'iconfont icon-a-liumeitimeitiliebiao',
+ defaultClass: 'text-filter'
}
]
@@ -441,6 +460,27 @@ const list = [
sizey: 5,
miniSizex: 1,
miniSizey: 1
+ },
+ {
+ id: '20003',
+ component: 'de-stream-media',
+ type: 'de-stream-media',
+ label: '',
+ icon: 'iconfont icon-picture',
+ defaultClass: 'text-filter',
+ mobileStyle: BASE_MOBILE_STYLE,
+ style: {
+ width: 400,
+ height: 200,
+ borderRadius: ''
+ },
+ streamMediaLinks: STREAMMEDIALINKS,
+ x: 1,
+ y: 1,
+ sizex: 10,
+ sizey: 5,
+ miniSizex: 1,
+ miniSizey: 1
}
]
diff --git a/frontend/src/components/canvas/custom-component/index.js b/frontend/src/components/canvas/custom-component/index.js
index 6316c79087..6d9145a740 100644
--- a/frontend/src/components/canvas/custom-component/index.js
+++ b/frontend/src/components/canvas/custom-component/index.js
@@ -8,7 +8,9 @@ import RectShape from '@/components/canvas/custom-component/RectShape'
import UserView from '@/components/canvas/custom-component/UserView'
import DeVideo from '@/components/canvas/custom-component/DeVideo'
import DeFrame from '@/components/canvas/custom-component/DeFrame'
+import DeStreamMedia from '@/components/canvas/custom-component/DeStreamMedia'
+Vue.component('DeStreamMedia', DeStreamMedia)
Vue.component('Picture', Picture)
Vue.component('VText', VText)
Vue.component('VButton', VButton)
diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js
index 82636e1774..9758b4c53b 100644
--- a/frontend/src/lang/en.js
+++ b/frontend/src/lang/en.js
@@ -1392,6 +1392,11 @@ export default {
sure_bt: 'Confirm'
},
panel: {
+ is_live: 'Is Live',
+ yes: 'Yes',
+ no: 'No',
+ live_tips: 'User Https First',
+ stream_media_add_tips: 'Please Add Stream Media Info...',
json_params_error: 'Third Party Parameters Parsing Failed. Please Check Whether The Parameters Format Is Correct',
inner_padding: 'Inner Padding',
board_radio: 'Board Radio',
diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js
index 45d46c9c11..8a8bfa1c4b 100644
--- a/frontend/src/lang/tw.js
+++ b/frontend/src/lang/tw.js
@@ -1393,6 +1393,11 @@ export default {
sure_bt: '確定'
},
panel: {
+ is_live: '是否直播',
+ yes: '是',
+ no: '否',
+ live_tips: '优先HTTPS链接',
+ stream_media_add_tips: '请点击添加配置流媒体信息...',
json_params_error: '第三方参数解析失败,请检查参数格式是否正确',
inner_padding: '内边距',
board_radio: '边框半径',
diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js
index e20dc71f45..f29106533f 100644
--- a/frontend/src/lang/zh.js
+++ b/frontend/src/lang/zh.js
@@ -1401,6 +1401,11 @@ export default {
sure_bt: '确定'
},
panel: {
+ is_live: '是否直播',
+ yes: '是',
+ no: '否',
+ live_tips: '优先HTTPS链接',
+ stream_media_add_tips: '请点击添加配置流媒体信息...',
json_params_error: '第三方参数解析失败,请检查参数格式是否正确',
inner_padding: '内边距',
board_radio: '边框半径',
diff --git a/frontend/src/styles/deicon/demo_index.html b/frontend/src/styles/deicon/demo_index.html
index e4e8b61d73..5b5669ac90 100644
--- a/frontend/src/styles/deicon/demo_index.html
+++ b/frontend/src/styles/deicon/demo_index.html
@@ -54,6 +54,12 @@
+ -
+
+
流媒体,媒体列表
+ 
+
+
-
iframe
@@ -522,9 +528,9 @@
@font-face {
font-family: 'iconfont';
- src: url('iconfont.woff2?t=1648367037728') format('woff2'),
- url('iconfont.woff?t=1648367037728') format('woff'),
- url('iconfont.ttf?t=1648367037728') format('truetype');
+ src: url('iconfont.woff2?t=1648734668996') format('woff2'),
+ url('iconfont.woff?t=1648734668996') format('woff'),
+ url('iconfont.ttf?t=1648734668996') format('truetype');
}
第二步:定义使用 iconfont 的样式
@@ -550,6 +556,15 @@