diff options
author | Chocobozzz <me@florianbigard.com> | 2022-02-11 10:51:33 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2022-02-28 10:42:19 +0100 |
commit | c729caf6cc34630877a0e5a1bda1719384cd0c8a (patch) | |
tree | 1d2e13722e518c73d2c9e6f0969615e29d51cf8c /shared/server-commands | |
parent | a24bf4dc659cebb65d887862bf21d7a35e9ec791 (diff) | |
download | PeerTube-c729caf6cc34630877a0e5a1bda1719384cd0c8a.tar.gz PeerTube-c729caf6cc34630877a0e5a1bda1719384cd0c8a.tar.zst PeerTube-c729caf6cc34630877a0e5a1bda1719384cd0c8a.zip |
Add basic video editor support
Diffstat (limited to 'shared/server-commands')
-rw-r--r-- | shared/server-commands/server/config-command.ts | 34 | ||||
-rw-r--r-- | shared/server-commands/server/server.ts | 3 | ||||
-rw-r--r-- | shared/server-commands/videos/index.ts | 1 | ||||
-rw-r--r-- | shared/server-commands/videos/video-editor-command.ts | 67 |
4 files changed, 104 insertions, 1 deletions
diff --git a/shared/server-commands/server/config-command.ts b/shared/server-commands/server/config-command.ts index 797231b1d..c0042060b 100644 --- a/shared/server-commands/server/config-command.ts +++ b/shared/server-commands/server/config-command.ts | |||
@@ -59,6 +59,9 @@ export class ConfigCommand extends AbstractCommand { | |||
59 | newConfig: { | 59 | newConfig: { |
60 | transcoding: { | 60 | transcoding: { |
61 | enabled: false | 61 | enabled: false |
62 | }, | ||
63 | videoEditor: { | ||
64 | enabled: false | ||
62 | } | 65 | } |
63 | } | 66 | } |
64 | }) | 67 | }) |
@@ -69,6 +72,10 @@ export class ConfigCommand extends AbstractCommand { | |||
69 | newConfig: { | 72 | newConfig: { |
70 | transcoding: { | 73 | transcoding: { |
71 | enabled: true, | 74 | enabled: true, |
75 | |||
76 | allowAudioFiles: true, | ||
77 | allowAdditionalExtensions: true, | ||
78 | |||
72 | resolutions: ConfigCommand.getCustomConfigResolutions(true), | 79 | resolutions: ConfigCommand.getCustomConfigResolutions(true), |
73 | 80 | ||
74 | webtorrent: { | 81 | webtorrent: { |
@@ -82,6 +89,28 @@ export class ConfigCommand extends AbstractCommand { | |||
82 | }) | 89 | }) |
83 | } | 90 | } |
84 | 91 | ||
92 | enableMinimumTranscoding (webtorrent = true, hls = true) { | ||
93 | return this.updateExistingSubConfig({ | ||
94 | newConfig: { | ||
95 | transcoding: { | ||
96 | enabled: true, | ||
97 | resolutions: { | ||
98 | ...ConfigCommand.getCustomConfigResolutions(false), | ||
99 | |||
100 | '240p': true | ||
101 | }, | ||
102 | |||
103 | webtorrent: { | ||
104 | enabled: webtorrent | ||
105 | }, | ||
106 | hls: { | ||
107 | enabled: hls | ||
108 | } | ||
109 | } | ||
110 | } | ||
111 | }) | ||
112 | } | ||
113 | |||
85 | getConfig (options: OverrideCommandOptions = {}) { | 114 | getConfig (options: OverrideCommandOptions = {}) { |
86 | const path = '/api/v1/config' | 115 | const path = '/api/v1/config' |
87 | 116 | ||
@@ -148,7 +177,7 @@ export class ConfigCommand extends AbstractCommand { | |||
148 | async updateExistingSubConfig (options: OverrideCommandOptions & { | 177 | async updateExistingSubConfig (options: OverrideCommandOptions & { |
149 | newConfig: DeepPartial<CustomConfig> | 178 | newConfig: DeepPartial<CustomConfig> |
150 | }) { | 179 | }) { |
151 | const existing = await this.getCustomConfig(options) | 180 | const existing = await this.getCustomConfig({ ...options, expectedStatus: HttpStatusCode.OK_200 }) |
152 | 181 | ||
153 | return this.updateCustomConfig({ ...options, newCustomConfig: merge({}, existing, options.newConfig) }) | 182 | return this.updateCustomConfig({ ...options, newCustomConfig: merge({}, existing, options.newConfig) }) |
154 | } | 183 | } |
@@ -282,6 +311,9 @@ export class ConfigCommand extends AbstractCommand { | |||
282 | } | 311 | } |
283 | } | 312 | } |
284 | }, | 313 | }, |
314 | videoEditor: { | ||
315 | enabled: false | ||
316 | }, | ||
285 | import: { | 317 | import: { |
286 | videos: { | 318 | videos: { |
287 | concurrency: 3, | 319 | concurrency: 3, |
diff --git a/shared/server-commands/server/server.ts b/shared/server-commands/server/server.ts index da89fd876..af4423e8d 100644 --- a/shared/server-commands/server/server.ts +++ b/shared/server-commands/server/server.ts | |||
@@ -25,6 +25,7 @@ import { | |||
25 | PlaylistsCommand, | 25 | PlaylistsCommand, |
26 | ServicesCommand, | 26 | ServicesCommand, |
27 | StreamingPlaylistsCommand, | 27 | StreamingPlaylistsCommand, |
28 | VideoEditorCommand, | ||
28 | VideosCommand | 29 | VideosCommand |
29 | } from '../videos' | 30 | } from '../videos' |
30 | import { CommentsCommand } from '../videos/comments-command' | 31 | import { CommentsCommand } from '../videos/comments-command' |
@@ -124,6 +125,7 @@ export class PeerTubeServer { | |||
124 | login?: LoginCommand | 125 | login?: LoginCommand |
125 | users?: UsersCommand | 126 | users?: UsersCommand |
126 | objectStorage?: ObjectStorageCommand | 127 | objectStorage?: ObjectStorageCommand |
128 | videoEditor?: VideoEditorCommand | ||
127 | videos?: VideosCommand | 129 | videos?: VideosCommand |
128 | 130 | ||
129 | constructor (options: { serverNumber: number } | { url: string }) { | 131 | constructor (options: { serverNumber: number } | { url: string }) { |
@@ -394,5 +396,6 @@ export class PeerTubeServer { | |||
394 | this.users = new UsersCommand(this) | 396 | this.users = new UsersCommand(this) |
395 | this.videos = new VideosCommand(this) | 397 | this.videos = new VideosCommand(this) |
396 | this.objectStorage = new ObjectStorageCommand(this) | 398 | this.objectStorage = new ObjectStorageCommand(this) |
399 | this.videoEditor = new VideoEditorCommand(this) | ||
397 | } | 400 | } |
398 | } | 401 | } |
diff --git a/shared/server-commands/videos/index.ts b/shared/server-commands/videos/index.ts index 68a188b21..154aed9a6 100644 --- a/shared/server-commands/videos/index.ts +++ b/shared/server-commands/videos/index.ts | |||
@@ -12,4 +12,5 @@ export * from './playlists-command' | |||
12 | export * from './services-command' | 12 | export * from './services-command' |
13 | export * from './streaming-playlists-command' | 13 | export * from './streaming-playlists-command' |
14 | export * from './comments-command' | 14 | export * from './comments-command' |
15 | export * from './video-editor-command' | ||
15 | export * from './videos-command' | 16 | export * from './videos-command' |
diff --git a/shared/server-commands/videos/video-editor-command.ts b/shared/server-commands/videos/video-editor-command.ts new file mode 100644 index 000000000..485edce8e --- /dev/null +++ b/shared/server-commands/videos/video-editor-command.ts | |||
@@ -0,0 +1,67 @@ | |||
1 | import { HttpStatusCode, VideoEditorTask } from '@shared/models' | ||
2 | import { AbstractCommand, OverrideCommandOptions } from '../shared' | ||
3 | |||
4 | export class VideoEditorCommand extends AbstractCommand { | ||
5 | |||
6 | static getComplexTask (): VideoEditorTask[] { | ||
7 | return [ | ||
8 | // Total duration: 2 | ||
9 | { | ||
10 | name: 'cut', | ||
11 | options: { | ||
12 | start: 1, | ||
13 | end: 3 | ||
14 | } | ||
15 | }, | ||
16 | |||
17 | // Total duration: 7 | ||
18 | { | ||
19 | name: 'add-outro', | ||
20 | options: { | ||
21 | file: 'video_short.webm' | ||
22 | } | ||
23 | }, | ||
24 | |||
25 | { | ||
26 | name: 'add-watermark', | ||
27 | options: { | ||
28 | file: 'thumbnail.png' | ||
29 | } | ||
30 | }, | ||
31 | |||
32 | // Total duration: 9 | ||
33 | { | ||
34 | name: 'add-intro', | ||
35 | options: { | ||
36 | file: 'video_very_short_240p.mp4' | ||
37 | } | ||
38 | } | ||
39 | ] | ||
40 | } | ||
41 | |||
42 | createEditionTasks (options: OverrideCommandOptions & { | ||
43 | videoId: number | string | ||
44 | tasks: VideoEditorTask[] | ||
45 | }) { | ||
46 | const path = '/api/v1/videos/' + options.videoId + '/editor/edit' | ||
47 | const attaches: { [id: string]: any } = {} | ||
48 | |||
49 | for (let i = 0; i < options.tasks.length; i++) { | ||
50 | const task = options.tasks[i] | ||
51 | |||
52 | if (task.name === 'add-intro' || task.name === 'add-outro' || task.name === 'add-watermark') { | ||
53 | attaches[`tasks[${i}][options][file]`] = task.options.file | ||
54 | } | ||
55 | } | ||
56 | |||
57 | return this.postUploadRequest({ | ||
58 | ...options, | ||
59 | |||
60 | path, | ||
61 | attaches, | ||
62 | fields: { tasks: options.tasks }, | ||
63 | implicitToken: true, | ||
64 | defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204 | ||
65 | }) | ||
66 | } | ||
67 | } | ||