]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - shared/models/videos/transcoding/video-transcoding.model.ts
Bumped to version v5.2.1
[github/Chocobozzz/PeerTube.git] / shared / models / videos / transcoding / video-transcoding.model.ts
... / ...
CommitLineData
1import { VideoResolution } from '../file/video-resolution.enum'
2
3// Types used by plugins and ffmpeg-utils
4
5export 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
24export type EncoderOptionsBuilder = (params: EncoderOptionsBuilderParams) => Promise<EncoderOptions> | EncoderOptions
25
26export 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
39export interface EncoderProfile <T> {
40 [ profile: string ]: T
41
42 default: T
43}
44
45export 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}