]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/models/videos/transcoding/video-transcoding.model.ts
Support studio transcoding in peertube runner
[github/Chocobozzz/PeerTube.git] / shared / models / videos / transcoding / video-transcoding.model.ts
1 import { VideoResolution } from '../file/video-resolution.enum'
2
3 // Types used by plugins and ffmpeg-utils
4
5 export type EncoderOptionsBuilderParams = {
6 input: string
7
8 resolution: VideoResolution
9
10 // If PeerTube applies a filter, transcoding profile must not copy input stream
11 canCopyAudio: boolean
12 canCopyVideo: boolean
13
14 fps: number
15
16 // Could be undefined if we could not get input bitrate (some RTMP streams for example)
17 inputBitrate: number
18 inputRatio: number
19
20 // For lives
21 streamNum?: number
22 }
23
24 export type EncoderOptionsBuilder = (params: EncoderOptionsBuilderParams) => Promise<EncoderOptions> | EncoderOptions
25
26 export interface EncoderOptions {
27 copy?: boolean // Copy stream? Default to false
28
29 scaleFilter?: {
30 name: string
31 }
32
33 inputOptions?: string[]
34 outputOptions?: string[]
35 }
36
37 // All our encoders
38
39 export interface EncoderProfile <T> {
40 [ profile: string ]: T
41
42 default: T
43 }
44
45 export type AvailableEncoders = {
46 available: {
47 live: {
48 [ encoder: string ]: EncoderProfile<EncoderOptionsBuilder>
49 }
50
51 vod: {
52 [ encoder: string ]: EncoderProfile<EncoderOptionsBuilder>
53 }
54 }
55
56 encodersToTry: {
57 vod: {
58 video: string[]
59 audio: string[]
60 }
61
62 live: {
63 video: string[]
64 audio: string[]
65 }
66 }
67 }