feat: 对接各个视频数据

This commit is contained in:
zhongyidian committed 2025-12-30 19:42:47 +08:00
1 parent 6103453e32
commit 6ab98c4764
339 files changed
+17316 -1531

No files matched your search

+19 -180
View File
@@ -1,5 +1,15 @@
import { createRouter, createWebHashHistory } from 'vue-router'
import type { RouteRecordRaw } from 'vue-router'
import { BasicElements, Film, Interview, Vlog } from './modules'
const NotFound = {
path: '/:pathMatch(.*)*',
name: 'NotFound',
component: () => import('@/views/not-found.vue'),
meta: {
title: '404'
}
}
const routes: RouteRecordRaw[] = [
{
@@ -10,14 +20,14 @@ const routes: RouteRecordRaw[] = [
title: '首页'
}
},
{
path: '/guide',
name: 'Guide',
component: () => import('@/views/guide/index.vue'),
meta: {
title: '使用引导'
}
},
//vlog模块
...Vlog,
//电影感模块
...Film,
//访谈感模块
...Interview,
//三大基础要素
...BasicElements,
{
path: '/action',
name: 'Action',
@@ -26,32 +36,6 @@ const routes: RouteRecordRaw[] = [
title: '开始拍摄'
}
},
// vlog 发现与记录
{
path: '/vlog',
name: 'Vlog',
component: () => import('@/views/vlog/index.vue'),
meta: {
title: '发现与记录'
}
},
// vlog 发现与记录
{
path: '/work',
name: 'Work',
component: () => import('@/views/vlog/work/index.vue'),
meta: {
title: '发现与记录'
}
},
{
path: '/video',
name: 'Video',
component: () => import('@/views/vlog/video/index.vue'),
meta: {
title: '视频'
}
},
//技能树
{
path: '/skill',
@@ -69,152 +53,7 @@ const routes: RouteRecordRaw[] = [
title: '技能树视频'
}
},
//中期拍摄
{
path: '/midterm',
name: 'midterm',
component: () => import('@/views/midterm-shooting/midterm/index.vue'),
meta: {
title: '中期拍摄'
}
},
{
path: '/equipment',
name: 'equipment',
component: () => import('@/views/midterm-shooting/equipment/index.vue'),
meta: {
title: '设备准备'
}
},
{
path: '/prepare',
name: 'Prepare',
component: () => import('@/views/prepare/index.vue'),
meta: {
title: '脚本准备'
}
},
{
path: '/shooting',
name: 'shooting',
component: () => import('@/views/midterm-shooting/shooting/index.vue'),
meta: {
title: '设备准备'
}
},
{
path: '/filmingLocation-a',
name: 'filmingLocation-a',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-a/index.vue'),
meta: {
title: '设备准备'
}
},
{
path: '/filmingLocation-b',
name: 'filmingLocation-b',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-b/index.vue'),
meta: {
title: ''
}
},
{
path: '/a-1',
name: 'a-1',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-a/a-1.vue'),
meta: {
title: ''
}
},
{
path: '/a-2',
name: 'a-2',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-a/a-2.vue'),
meta: {
title: ''
}
},
{
path: '/a-3',
name: 'a-3',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-a/a-3.vue'),
meta: {
title: ''
}
},
{
path: '/b-1',
name: 'b-1',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-b/b-1.vue'),
meta: {
title: ''
}
},
{
path: '/b-2',
name: 'b-2',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-b/b-2.vue'),
meta: {
title: ''
}
},
{
path: '/b-3',
name: 'b-3',
component: () => import('@/views/midterm-shooting/shooting/filmingLocation-b/b-3.vue'),
meta: {
title: ''
}
},
{
path: '/preparedetail',
name: 'Preparedetail',
component: () => import('@/views/preparedetail/index.vue'),
meta: {
title: '脚本准备详情'
}
},
// 后期剪辑
{
path: '/afterditing',
name: 'afterditing',
component: () => import('@/views/afterditing/index.vue'),
meta: {
title: '后期剪辑'
}
},
{
path: '/editing',
name: 'editing',
component: () => import('@/views/afterditing/editing.vue'),
meta: {
title: '剪辑'
}
},
{
path: '/adjustmentColor',
name: 'adjustmentColor',
component: () => import('@/views/afterditing/adjustmentColor.vue'),
meta: {
title: '调色'
}
},
{
path: '/script-writing',
name: 'script-writing',
component: () => import('@/views/prepare/script-writing/index.vue'),
meta: {
title: '脚本撰写'
}
},
{
path: '/color',
name: 'Color',
component: () => import('@/views/afterditing/color.vue'),
meta: {
title: '调色'
}
}
NotFound
]
const router = createRouter({
+57
View File
@@ -0,0 +1,57 @@
import type { RouteRecordRaw } from 'vue-router'
/**Basic Elements */
const BasicElements: RouteRecordRaw[] = [
//构图
{
path: '/basic-elements/composition',
name: 'Composition',
props: { label: '构图' },
component: () => import('@/views/basic-elements/composition/index.vue'),
meta: {
title: '构图'
}
},
//光
{
path: '/basic-elements/light',
props: { label: '光' },
name: 'Light',
component: () => import('@/views/basic-elements/light/index.vue'),
meta: {
title: '光'
}
},
//运镜
{
path: '/basic-elements/camera-movement',
name: 'CameraMovement',
props: { label: '运镜' },
component: () => import('@/views/basic-elements/camera-movement/index.vue'),
meta: {
title: '运镜'
}
},
//基础拍摄技巧
{
path: '/basic-elements/basic-shooting-skills',
name: 'BasicShootingSkills',
props: { label: '基础拍摄技巧' },
component: () => import('@/views/basic-elements/basic-shooting-skills/index.vue'),
meta: {
title: '基础拍摄技巧'
}
},
//短视频剪辑技巧
{
path: '/basic-elements/short-video-editing-skills',
name: 'ShortVideoEditingSkills',
props: { label: '短视频剪辑技巧' },
component: () => import('@/views/basic-elements/short-video-editing-skills/index.vue'),
meta: {
title: '短视频剪辑技巧'
}
}
]
export default BasicElements
+272
View File
@@ -0,0 +1,272 @@
import type { RouteRecordRaw } from 'vue-router'
/**film */
const Film: RouteRecordRaw[] = [
// film 发现与记录
{
path: '/film',
name: 'Film',
component: () => import('@/views/film/index.vue'),
meta: {
title: '发现与记录'
}
},
// film 发现与记录
{
path: '/film/work',
name: 'FilmWork',
component: () => import('@/views/film/work/index.vue'),
meta: {
title: '发现与记录'
}
},
{
path: '/film/video',
name: 'FilmVideo',
component: () => import('@/views/film/video/index.vue'),
meta: {
title: '发现与记录-视频'
}
},
//前期准备
{
path: '/film/resource',
name: 'FilmResource',
component: () => import('@/views/film/resource/index.vue'),
meta: {
title: '资源筹备'
}
},
{
path: '/film/creative',
name: 'FilmCreative',
component: () => import('@/views/film/creative/index.vue'),
meta: {
title: '创意构想'
}
},
{
path: '/film/script-writing',
name: 'FilmScriptWriting',
component: () => import('@/views/film/script-writing/index.vue'),
meta: {
title: '脚本撰写'
}
},
{
path: '/film/storyboard',
name: 'FilmStoryboard',
component: () => import('@/views/film/storyboard/index.vue'),
meta: {
title: '分镜制作'
}
},
//中期拍摄
{
path: '/film/equipment',
name: 'FilmMidtermEquipment',
component: () => import('@/views/film/midterm-shooting/equipment/index.vue'),
meta: {
title: '设备准备'
}
},
{
path: '/film/shooting',
name: 'FilmMidtermShooting',
component: () => import('@/views/film/midterm-shooting/shooting/index.vue'),
meta: {
title: '实地取景'
}
},
{
path: '/film/on-site-shooting',
name: 'FilmOnsiteShooting',
component: () => import('@/views/film/midterm-shooting/on-site/index.vue'),
meta: {
title: '现场拍摄'
}
},
{
path: '/film/on-site-shooting/time-lapse',
name: 'FilmOnsiteTimeLapse',
component: () => import('@/views/film/midterm-shooting/on-site/time-lapse.vue'),
meta: {
title: '现场拍摄-延时拍摄'
}
},
{
path: '/film/on-site-shooting/slider',
name: 'FilmOnsiteSlider',
component: () => import('@/views/film/midterm-shooting/on-site/slider.vue'),
meta: {
title: '现场拍摄-滑轨拍摄'
}
},
{
path: '/film/on-site-shooting/slow-shutter-day',
name: 'FilmOnsiteSlowShutterDay',
component: () => import('@/views/film/midterm-shooting/on-site/slow-shutter-day.vue'),
meta: {
title: '现场拍摄-慢门拍摄(白天)'
}
},
{
path: '/film/on-site-shooting/slow-shutter-night',
name: 'FilmOnsiteSlowShutterNight',
component: () => import('@/views/film/midterm-shooting/on-site/slow-shutter-night.vue'),
meta: {
title: '现场拍摄-慢门拍摄(夜晚)'
}
},
{
path: '/film/on-site-shooting/low-angle',
name: 'FilmOnsiteLowAngle',
component: () => import('@/views/film/midterm-shooting/on-site/low-angle.vue'),
meta: {
title: '现场拍摄-低角度拍摄'
}
},
{
path: '/film/on-site-shooting/random',
name: 'FilmOnsiteRandom',
component: () => import('@/views/film/midterm-shooting/on-site/random.vue'),
meta: {
title: '现场拍摄-创作随机性'
}
},
{
path: '/film/filmingLocation-a',
name: 'FilmFilmingLocationA',
component: () => import('@/views/film/midterm-shooting/shooting/filmingLocation-a/index.vue'),
meta: {
title: '实地取景-取景地A'
}
},
{
path: '/film/filmingLocation-b',
name: 'FilmFilmingLocationB',
component: () => import('@/views/film/midterm-shooting/shooting/filmingLocation-b/index.vue'),
meta: {
title: '实地取景-取景地B'
}
},
// 后期剪辑
{
path: '/film/editing',
name: 'FilmEditing',
component: () => import('@/views/film/after-editing/editing/index.vue'),
meta: {
title: '后期剪辑-剪辑'
}
},
{
path: '/film/editing/start',
name: 'FilmEditingStart',
component: () => import('@/views/film/after-editing/editing/start.vue'),
meta: {
title: '剪辑-剪辑从哪里开始'
}
},
{
path: '/film/editing/rhythm',
name: 'FilmEditingRhythm',
component: () => import('@/views/film/after-editing/editing/rhythm.vue'),
meta: {
title: '剪辑-节奏型剪辑'
}
},
{
path: '/film/editing/sound-transition',
name: 'FilmEditingSoundTransition',
component: () => import('@/views/film/after-editing/editing/sound-transition.vue'),
meta: {
title: '剪辑-声音转场'
}
},
{
path: '/film/editing/cut',
name: 'FilmEditingCut',
component: () => import('@/views/film/after-editing/editing/cut.vue'),
meta: {
title: '剪辑-快切'
}
},
{
path: '/film/editing/association',
name: 'FilmEditingAssociation',
component: () => import('@/views/film/after-editing/editing/association.vue'),
meta: {
title: '剪辑-关联剪辑'
}
},
{
path: '/film/editing/continuity',
name: 'FilmEditingContinuity',
component: () => import('@/views/film/after-editing/editing/continuity.vue'),
meta: {
title: '剪辑-连续剪辑'
}
},
{
path: '/film/color',
name: 'FilmColor',
component: () => import('@/views/film/after-editing/color.vue'),
meta: {
title: '后期剪辑-调色'
}
},
{
path: '/film/color-practice',
name: 'FilmColorPractice',
component: () => import('@/views/film/after-editing/color-practice.vue'),
meta: {
title: '后期剪辑-调色实践'
}
},
{
path: '/film/sound-effect',
name: 'FilmSoundEffect',
component: () => import('@/views/film/after-editing/sound-effect/index.vue'),
meta: {
title: '后期剪辑-音效'
}
},
{
path: '/film/export-publish',
name: 'FilmExportPublish',
component: () => import('@/views/film/after-editing/export-publish/index.vue'),
meta: {
title: '后期剪辑-导出发布'
}
},
// 实战操作台
{
path: '/film/practice',
name: 'FilmPractice',
component: () => import('@/views/film/practice/index.vue'),
meta: {
title: '实战操作台'
}
},
// 我的创作笔记
{
path: '/film/practice/my-notes',
name: 'FilmMyNotes',
component: () => import('@/views/film/practice/my-notes/index.vue'),
meta: {
title: '我的创作笔记'
}
},
// 他人实战作品
{
path: '/film/practice/video/:path',
name: 'FilmPracticeVideo',
props: true,
component: () => import('@/views/film/practice/video/index.vue'),
meta: {
title: '他人实战作品'
}
}
]
export default Film
+8
View File
@@ -0,0 +1,8 @@
//Vlog
export { default as Vlog } from './vlog'
//interview
export { default as Interview } from './interview'
//film
export { default as Film } from './film'
//basic elements
export { default as BasicElements } from './basic-elements'
+130
View File
@@ -0,0 +1,130 @@
import type { RouteRecordRaw } from 'vue-router'
/**interview */
const Interview: RouteRecordRaw[] = [
// interview 发现与记录
{
path: '/interview',
name: 'Interview',
component: () => import('@/views/interview/index.vue'),
meta: {
title: '发现与记录'
}
},
// interview 发现与记录
{
path: '/interview/work',
name: 'InterviewWork',
component: () => import('@/views/interview/work/index.vue'),
meta: {
title: '发现与记录'
}
},
{
path: '/interview/video',
name: 'InterviewVideo',
component: () => import('@/views/interview/video/index.vue'),
meta: {
title: '发现与记录-视频'
}
},
//前期准备
{
path: '/interview/script-writing',
name: 'InterviewScriptWriting',
component: () => import('@/views/interview/script-writing/index.vue'),
meta: {
title: '脚本撰写'
}
},
//中期拍摄
{
path: '/interview/equipment',
name: 'InterviewEquipment',
component: () => import('@/views/interview/midterm-shooting/equipment/index.vue'),
meta: {
title: '设备准备'
}
},
{
path: '/interview/shooting',
name: 'InterviewShooting',
component: () => import('@/views/interview/midterm-shooting/shooting/index.vue'),
meta: {
title: '实地取景'
}
},
{
path: '/interview/filmingLocation-a',
name: 'InterviewFilmingLocationA',
component: () =>
import('@/views/interview/midterm-shooting/shooting/filmingLocation-a/index.vue'),
meta: {
title: '实地取景-取景地A'
}
},
{
path: '/interview/filmingLocation-b',
name: 'InterviewFilmingLocationA',
component: () =>
import('@/views/interview/midterm-shooting/shooting/filmingLocation-b/index.vue'),
meta: {
title: '实地取景-取景地B'
}
},
// 后期剪辑
{
path: '/interview/editing',
name: 'InterviewEditing',
component: () => import('@/views/interview/after-editing/editing.vue'),
meta: {
title: '剪辑'
}
},
// {
// path: '/interview/adjustmentColor',
// name: 'InterviewAdjustmentColor',
// component: () => import('@/views/interview/after-editing/adjustmentColor.vue'),
// meta: {
// title: '调色'
// }
// },
{
path: '/interview/color',
name: 'InterviewColor',
component: () => import('@/views/interview/after-editing/color.vue'),
meta: {
title: '调色'
}
},
// 实战操作台
{
path: '/interview/practice',
name: 'InterviewPractice',
component: () => import('@/views/interview/practice/index.vue'),
meta: {
title: '实战操作台'
}
},
// 我的创作笔记
{
path: '/interview/practice/my-notes',
name: 'InterviewMyNotes',
component: () => import('@/views/interview/practice/my-notes/index.vue'),
meta: {
title: '我的创作笔记'
}
},
// 他人实战作品
{
path: '/interview/practice/video/:path',
name: 'InterviewPracticeVideo',
props: true,
component: () => import('@/views/interview/practice/video/index.vue'),
meta: {
title: '他人实战作品'
}
}
]
export default Interview
+184
View File
@@ -0,0 +1,184 @@
import type { RouteRecordRaw } from 'vue-router'
/**vlog */
const Vlog: RouteRecordRaw[] = [
// vlog 发现与记录
{
path: '/vlog',
name: 'Vlog',
component: () => import('@/views/vlog/index.vue'),
meta: {
title: '发现与记录'
}
},
// vlog 任务取景框
{
path: '/vlog/work',
name: 'VlogWork',
component: () => import('@/views/vlog/work/index.vue'),
meta: {
title: '发现与记录'
}
},
{
path: '/vlog/video',
name: 'VlogVideo',
component: () => import('@/views/vlog/video/index.vue'),
meta: {
title: '发现与记录-视频'
}
},
//前期准备-脚本撰写
{
path: '/vlog/script-writing',
name: 'VlogScriptWriting',
component: () => import('@/views/vlog/script-writing/index.vue'),
meta: {
title: '脚本撰写'
}
},
//中期拍摄
{
path: '/vlog/equipment',
name: 'VlogMidtermEquipment',
component: () => import('@/views/vlog/midterm-shooting/equipment/index.vue'),
meta: {
title: '设备准备'
}
},
{
path: '/vlog/shooting',
name: 'VlogMidtermShooting',
component: () => import('@/views/vlog/midterm-shooting/shooting/index.vue'),
meta: {
title: '实地取景'
}
},
{
path: '/vlog/on-site-shooting',
name: 'VlogShooting',
component: () => import('@/views/vlog/midterm-shooting/on-site/index.vue'),
meta: {
title: '现场拍摄'
}
},
{
path: '/vlog/on-site-shooting/time-lapse',
name: 'VlogOnsiteTimeLapse',
component: () => import('@/views/vlog/midterm-shooting/on-site/time-lapse.vue'),
meta: {
title: '现场拍摄-延时拍摄'
}
},
{
path: '/vlog/on-site-shooting/slider',
name: 'VlogOnsiteSlider',
component: () => import('@/views/vlog/midterm-shooting/on-site/slider.vue'),
meta: {
title: '现场拍摄-滑轨拍摄'
}
},
{
path: '/vlog/on-site-shooting/slow-shutter-day',
name: 'VlogOnsiteSlowShutterDay',
component: () => import('@/views/vlog/midterm-shooting/on-site/slow-shutter-day.vue'),
meta: {
title: '现场拍摄-慢门拍摄(白天)'
}
},
{
path: '/vlog/on-site-shooting/slow-shutter-night',
name: 'VlogOnsiteSlowShutterNight',
component: () => import('@/views/vlog/midterm-shooting/on-site/slow-shutter-night.vue'),
meta: {
title: '现场拍摄-慢门拍摄(夜晚)'
}
},
{
path: '/vlog/on-site-shooting/low-angle',
name: 'VlogOnsiteLowAngle',
component: () => import('@/views/vlog/midterm-shooting/on-site/low-angle.vue'),
meta: {
title: '现场拍摄-低角度拍摄'
}
},
{
path: '/vlog/on-site-shooting/random',
name: 'VlogOnsiteRandom',
component: () => import('@/views/vlog/midterm-shooting/on-site/random.vue'),
meta: {
title: '现场拍摄-创作随机性'
}
},
{
path: '/vlog/filmingLocation-a',
name: 'VlogFilmingLocationA',
component: () => import('@/views/vlog/midterm-shooting/shooting/filmingLocation-a/index.vue'),
meta: {
title: '实地取景-取景地A'
}
},
{
path: '/vlog/filmingLocation-b',
name: 'VlogFilmingLocationB',
component: () => import('@/views/vlog/midterm-shooting/shooting/filmingLocation-b/index.vue'),
meta: {
title: '实地取景-取景地B'
}
},
// 后期剪辑
{
path: '/vlog/editing',
name: 'VlogEditing',
component: () => import('@/views/vlog/after-editing/editing.vue'),
meta: {
title: '后期剪辑-剪辑'
}
},
// {
// path: '/vlog/adjustmentColor',
// name: 'VlogAdjustmentColor',
// component: () => import('@/views/vlog/after-editing/adjustmentColor.vue'),
// meta: {
// title: '后期剪辑-调色'
// }
// },
{
path: '/vlog/color',
name: 'VlogColor',
component: () => import('@/views/vlog/after-editing/color.vue'),
meta: {
title: '后期剪辑-调色'
}
},
// 实战操作台
{
path: '/vlog/practice',
name: 'VlogPractice',
component: () => import('@/views/vlog/practice/index.vue'),
meta: {
title: '实战操作台'
}
},
// 我的创作笔记
{
path: '/vlog/practice/my-notes',
name: 'VlogMyNotes',
component: () => import('@/views/vlog/practice/my-notes/index.vue'),
meta: {
title: '我的创作笔记'
}
},
// 他人实战作品
{
path: '/vlog/practice/video/:path',
name: 'VlogPracticeVideo',
props: true,
component: () => import('@/views/vlog/practice/video/index.vue'),
meta: {
title: '他人实战作品'
}
}
]
export default Vlog