aboutsummaryrefslogtreecommitdiffhomepage
path: root/packages/models/src/videos/transcoding
diff options
context:
space:
mode:
Diffstat (limited to 'packages/models/src/videos/transcoding')
-rw-r--r--packages/models/src/videos/transcoding/index.ts3
-rw-r--r--packages/models/src/videos/transcoding/video-transcoding-create.model.ts5
-rw-r--r--packages/models/src/videos/transcoding/video-transcoding-fps.model.ts9
-rw-r--r--packages/models/src/videos/transcoding/video-transcoding.model.ts65
4 files changed, 82 insertions, 0 deletions
diff --git a/packages/models/src/videos/transcoding/index.ts b/packages/models/src/videos/transcoding/index.ts
new file mode 100644
index 000000000..e1d931bd5
--- /dev/null
+++ b/packages/models/src/videos/transcoding/index.ts
@@ -0,0 +1,3 @@
1export * from './video-transcoding-create.model.js'
2export * from './video-transcoding-fps.model.js'
3export * from './video-transcoding.model.js'
diff --git a/packages/models/src/videos/transcoding/video-transcoding-create.model.ts b/packages/models/src/videos/transcoding/video-transcoding-create.model.ts
new file mode 100644
index 000000000..6c2dbefa6
--- /dev/null
+++ b/packages/models/src/videos/transcoding/video-transcoding-create.model.ts
@@ -0,0 +1,5 @@
1export interface VideoTranscodingCreate {
2 transcodingType: 'hls' | 'webtorrent' | 'web-video' // TODO: remove webtorrent in v7
3
4 forceTranscoding?: boolean // Default false
5}
diff --git a/packages/models/src/videos/transcoding/video-transcoding-fps.model.ts b/packages/models/src/videos/transcoding/video-transcoding-fps.model.ts
new file mode 100644
index 000000000..9a330ac94
--- /dev/null
+++ b/packages/models/src/videos/transcoding/video-transcoding-fps.model.ts
@@ -0,0 +1,9 @@
1export type VideoTranscodingFPS = {
2 MIN: number
3 STANDARD: number[]
4 HD_STANDARD: number[]
5 AUDIO_MERGE: number
6 AVERAGE: number
7 MAX: number
8 KEEP_ORIGIN_FPS_RESOLUTION_MIN: number
9}
diff --git a/packages/models/src/videos/transcoding/video-transcoding.model.ts b/packages/models/src/videos/transcoding/video-transcoding.model.ts
new file mode 100644
index 000000000..e2c2a56e5
--- /dev/null
+++ b/packages/models/src/videos/transcoding/video-transcoding.model.ts
@@ -0,0 +1,65 @@
1// Types used by plugins and ffmpeg-utils
2
3export type EncoderOptionsBuilderParams = {
4 input: string
5
6 resolution: number
7
8 // If PeerTube applies a filter, transcoding profile must not copy input stream
9 canCopyAudio: boolean
10 canCopyVideo: boolean
11
12 fps: number
13
14 // Could be undefined if we could not get input bitrate (some RTMP streams for example)
15 inputBitrate: number
16 inputRatio: number
17
18 // For lives
19 streamNum?: number
20}
21
22export type EncoderOptionsBuilder = (params: EncoderOptionsBuilderParams) => Promise<EncoderOptions> | EncoderOptions
23
24export interface EncoderOptions {
25 copy?: boolean // Copy stream? Default to false
26
27 scaleFilter?: {
28 name: string
29 }
30
31 inputOptions?: string[]
32 outputOptions?: string[]
33}
34
35// All our encoders
36
37export interface EncoderProfile <T> {
38 [ profile: string ]: T
39
40 default: T
41}
42
43export type AvailableEncoders = {
44 available: {
45 live: {
46 [ encoder: string ]: EncoderProfile<EncoderOptionsBuilder>
47 }
48
49 vod: {
50 [ encoder: string ]: EncoderProfile<EncoderOptionsBuilder>
51 }
52 }
53
54 encodersToTry: {
55 vod: {
56 video: string[]
57 audio: string[]
58 }
59
60 live: {
61 video: string[]
62 audio: string[]
63 }
64 }
65}