diff --git a/src/packages/components/Informations/Mores/Video/config.ts b/src/packages/components/Informations/Mores/Video/config.ts
index 43c38cc1..c3c9474a 100644
--- a/src/packages/components/Informations/Mores/Video/config.ts
+++ b/src/packages/components/Informations/Mores/Video/config.ts
@@ -3,15 +3,22 @@ import { CreateComponentType } from '@/packages/index.d'
 import { VideoConfig } from './index'
 import cloneDeep from 'lodash/cloneDeep'
 
+export const VideoList = [
+  { label: '数字楼宇', value: 'https://video.699pic.com/videos/76/09/36/b_D4DKnb48qdCI1631760936.mp4' },
+  { label: '旋转魔方', value: 'https://video.699pic.com/videos/90/02/69/b_YjJAJZMT6vRK1554900269.mp4' },
+  { label: '旋转地球', value: 'https://video.699pic.com/videos/32/13/12/b_7dng21IHECP51553321312.mp4' },
+  { label: '声音示例', value: 'https://video.699pic.com/videos/80/62/39/a_qmbxMqNvK9jr1583806239.mp4' }
+]
+
 export const option = {
   // 视频路径
   dataset: '',
-  // 适应方式
-  fit: 'contain',
-  // 圆角
-  borderRadius: 0,
-  // 透明度
-  opacity: 1
+  // 循环播放
+  loop: true,
+  // 自动播放
+  autoplay: true,
+  // 静音
+  muted: true
 }
 
 export default class Config extends PublicConfigClass implements CreateComponentType {
diff --git a/src/packages/components/Informations/Mores/Video/config.vue b/src/packages/components/Informations/Mores/Video/config.vue
index 7ece81b8..512fc26a 100644
--- a/src/packages/components/Informations/Mores/Video/config.vue
+++ b/src/packages/components/Informations/Mores/Video/config.vue
@@ -1,26 +1,40 @@
+<!-- eslint-disable vue/multi-word-component-names -->
+<!-- eslint-disable vue/no-mutating-props -->
 <template>
-  <collapse-item name="属性" :expanded="true">
-    <setting-item-box name="路径" :alone="true">
-      <setting-item>
+  <collapse-item name="视频" expanded>
+    <setting-item-box name="源" alone>
+      <setting-item name="自定义视频源">
         <n-input v-model:value="optionData.dataset" size="small"></n-input>
       </setting-item>
-      <setting-item>
-        <n-upload action="https://www.mocky.io/v2/5e4bafc63100007100d8b70f" @finish="handleFinish">
+      <setting-item name="使用内置视频">
+        <n-select
+          v-model:value="optionData.dataset"
+          size="small"
+          placeholder="自定义或选择内置视频"
+          clearable
+          :options="VideoList"
+        ></n-select>
+      </setting-item>
+      <!-- <setting-item>
+        <n-upload
+          action="https://www.mocky.io/v2/5e4bafc63100007100d8b70f"
+          accept="video/*"
+          @finish="finishHandleFinish"
+        >
           <n-button size="small">本地上传</n-button>
         </n-upload>
-      </setting-item>
+      </setting-item> -->
     </setting-item-box>
-    <setting-item-box name="样式">
-      <setting-item name="类型">
-        <n-select v-model:value="optionData.fit" size="small" :options="fitList"></n-select>
+
+    <setting-item-box name="控制">
+      <setting-item>
+        <n-checkbox v-model:checked="optionData.autoplay" size="small">自动播放</n-checkbox>
       </setting-item>
-      <setting-item name="圆角">
-        <n-input-number
-          v-model:value="optionData.borderRadius"
-          size="small"
-          :min="0"
-          placeholder="圆角"
-        ></n-input-number>
+      <setting-item>
+        <n-checkbox v-model:checked="optionData.loop" size="small">循环播放</n-checkbox>
+      </setting-item>
+      <setting-item>
+        <n-checkbox v-model:checked="optionData.muted" size="small">静音</n-checkbox>
       </setting-item>
     </setting-item-box>
   </collapse-item>
@@ -28,9 +42,10 @@
 
 <script setup lang="ts">
 import { PropType } from 'vue'
-import { option } from './config'
+import { option, VideoList } from './config'
 import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
 
+// eslint-disable-next-line no-unused-vars
 const props = defineProps({
   optionData: {
     type: Object as PropType<typeof option>,
@@ -38,27 +53,8 @@ const props = defineProps({
   }
 })
 
-// 适应类型
-const fitList = [
-  {
-    value: 'fill',
-    label: 'fill'
-  },
-  {
-    value: 'contain',
-    label: 'contain'
-  },
-  {
-    value: 'cover',
-    label: 'cover'
-  },
-  {
-    value: 'scale-down',
-    label: 'scale-down'
-  },
-  {
-    value: 'none',
-    label: 'none'
-  }
-]
+// eslint-disable-next-line no-unused-vars
+const finishHandleFinish = () => {
+  // console.log()
+}
 </script>
diff --git a/src/packages/components/Informations/Mores/Video/index.vue b/src/packages/components/Informations/Mores/Video/index.vue
index 2a4c0ac2..0e488250 100644
--- a/src/packages/components/Informations/Mores/Video/index.vue
+++ b/src/packages/components/Informations/Mores/Video/index.vue
@@ -1,25 +1,25 @@
+<!-- eslint-disable vue/multi-word-component-names -->
 <template>
-  <div :style="getStyle(borderRadius)">
-    <video
-      class="video-background"
-      preload="auto"
-      loop
-      playsinline
-      autoplay
-      muted
-      src="https://video.699pic.com/videos/76/09/36/b_D4DKnb48qdCI1631760936.mp4"
-      :width="w"
-      :height="h"
-    ></video>
-  </div>
+  <video
+    ref="vVideoRef"
+    class="go-video"
+    preload="auto"
+    playsinline
+    :loop="option.loop"
+    :autoplay="option.autoplay"
+    :muted="option.muted"
+    :width="w"
+    :height="h"
+    :src="option.dataset"
+  ></video>
 </template>
 
 <script setup lang="ts">
-import { PropType, shallowReactive, watch, toRefs } from 'vue'
+import { PropType, toRefs, shallowReactive, watch, ref } from 'vue'
 import { useChartDataFetch } from '@/hooks'
 import { CreateComponentType } from '@/packages/index.d'
 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
-import { option } from './config'
+import { option as configOption } from './config'
 
 const props = defineProps({
   chartConfig: {
@@ -29,41 +29,40 @@ const props = defineProps({
 })
 
 const { w, h } = toRefs(props.chartConfig.attr)
-const { dataset, fit, borderRadius } = toRefs(props.chartConfig.option)
+let option = shallowReactive({ ...configOption })
 
-const option = shallowReactive({
-  dataset: ''
+// 预览更新
+const vVideoRef = ref(null)
+useChartDataFetch(props.chartConfig, useChartEditStore, (newData: any) => {
+  option = newData
 })
 
-const getStyle = (radius: number) => {
-  return {
-    borderRadius: `${radius}px`,
-    overflow: 'hidden'
-  }
-}
-
 // 编辑更新
 watch(
-  () => props.chartConfig.option.dataset,
+  () => props.chartConfig.option,
   (newData: any) => {
-    option.dataset = newData
+    option = newData
+    if (!vVideoRef.value) return
+    const video: any = vVideoRef.value
+    video.loop = option.loop
+    video.autoplay = option.autoplay
+    video.muted = option.muted
+
+    // 控制是否播放还是停止在第一帧
+    !option.autoplay && (video.pause(), (video.currentTime = 0))
+    option.autoplay && video.play()
   },
   {
     immediate: true,
-    deep: false
+    deep: true
   }
 )
-
-// 预览更新
-useChartDataFetch(props.chartConfig, useChartEditStore, (newData: any) => {
-  option.dataset = newData
-})
 </script>
 
 <style lang="scss" scoped>
-.video-background {
+@include go('video') {
+  display: block;
   object-fit: cover;
   mix-blend-mode: screen;
-  opacity: 1;
 }
 </style>