2021-11-18 14:35:08 +01:00
|
|
|
import { VideoResolution } from '../file/video-resolution.enum'
|
2021-01-28 15:52:44 +01:00
|
|
|
|
|
|
|
// Types used by plugins and ffmpeg-utils
|
|
|
|
|
2021-08-06 13:35:25 +02:00
|
|
|
export type EncoderOptionsBuilderParams = {
|
2021-01-28 15:52:44 +01:00
|
|
|
input: string
|
2021-08-06 13:35:25 +02:00
|
|
|
|
2021-01-28 15:52:44 +01:00
|
|
|
resolution: VideoResolution
|
2021-08-06 13:35:25 +02:00
|
|
|
|
2022-02-11 10:51:33 +01:00
|
|
|
// If PeerTube applies a filter, transcoding profile must not copy input stream
|
|
|
|
canCopyAudio: boolean
|
|
|
|
canCopyVideo: boolean
|
|
|
|
|
|
|
|
fps: number
|
2021-08-06 13:35:25 +02:00
|
|
|
|
|
|
|
// Could be undefined if we could not get input bitrate (some RTMP streams for example)
|
|
|
|
inputBitrate: number
|
|
|
|
inputRatio: number
|
|
|
|
|
|
|
|
// For lives
|
2021-01-28 15:52:44 +01:00
|
|
|
streamNum?: number
|
2021-08-06 13:35:25 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export type EncoderOptionsBuilder = (params: EncoderOptionsBuilderParams) => Promise<EncoderOptions> | EncoderOptions
|
2021-01-28 15:52:44 +01:00
|
|
|
|
|
|
|
export interface EncoderOptions {
|
|
|
|
copy?: boolean // Copy stream? Default to false
|
|
|
|
|
2021-04-09 10:36:21 +02:00
|
|
|
scaleFilter?: {
|
|
|
|
name: string
|
|
|
|
}
|
|
|
|
|
2021-04-03 23:51:37 +02:00
|
|
|
inputOptions?: string[]
|
|
|
|
outputOptions?: string[]
|
2021-01-28 15:52:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
// All our encoders
|
|
|
|
|
|
|
|
export interface EncoderProfile <T> {
|
|
|
|
[ profile: string ]: T
|
|
|
|
|
|
|
|
default: T
|
|
|
|
}
|
|
|
|
|
|
|
|
export type AvailableEncoders = {
|
|
|
|
available: {
|
|
|
|
live: {
|
|
|
|
[ encoder: string ]: EncoderProfile<EncoderOptionsBuilder>
|
|
|
|
}
|
|
|
|
|
|
|
|
vod: {
|
|
|
|
[ encoder: string ]: EncoderProfile<EncoderOptionsBuilder>
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
encodersToTry: {
|
|
|
|
vod: {
|
|
|
|
video: string[]
|
|
|
|
audio: string[]
|
|
|
|
}
|
|
|
|
|
|
|
|
live: {
|
|
|
|
video: string[]
|
|
|
|
audio: string[]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|