aboutsummaryrefslogtreecommitdiffhomepage
path: root/packages/models/src/videos/transcoding/video-transcoding.model.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/models/src/videos/transcoding/video-transcoding.model.ts')
-rw-r--r--packages/models/src/videos/transcoding/video-transcoding.model.ts65
1 files changed, 65 insertions, 0 deletions
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}