blob: 95168745dacd21de175443ae77453e096c9a9ae1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
import EventEmitter from 'events'
import { LoggerTagsFn } from '@server/helpers/logger'
import { MStreamingPlaylistVideo, MVideoLiveVideo } from '@server/types/models'
import { LiveVideoError } from '@shared/models'
interface TranscodingWrapperEvents {
'end': () => void
'error': (options: { err: Error }) => void
}
declare interface AbstractTranscodingWrapper {
on<U extends keyof TranscodingWrapperEvents>(
event: U, listener: TranscodingWrapperEvents[U]
): this
emit<U extends keyof TranscodingWrapperEvents>(
event: U, ...args: Parameters<TranscodingWrapperEvents[U]>
): boolean
}
interface AbstractTranscodingWrapperOptions {
streamingPlaylist: MStreamingPlaylistVideo
videoLive: MVideoLiveVideo
lTags: LoggerTagsFn
sessionId: string
inputLocalUrl: string
inputPublicUrl: string
fps: number
toTranscode: {
resolution: number
fps: number
}[]
bitrate: number
ratio: number
hasAudio: boolean
segmentListSize: number
segmentDuration: number
outDirectory: string
}
abstract class AbstractTranscodingWrapper extends EventEmitter {
protected readonly videoLive: MVideoLiveVideo
protected readonly toTranscode: {
resolution: number
fps: number
}[]
protected readonly sessionId: string
protected readonly inputLocalUrl: string
protected readonly inputPublicUrl: string
protected readonly fps: number
protected readonly bitrate: number
protected readonly ratio: number
protected readonly hasAudio: boolean
protected readonly segmentListSize: number
protected readonly segmentDuration: number
protected readonly videoUUID: string
protected readonly outDirectory: string
protected readonly lTags: LoggerTagsFn
protected readonly streamingPlaylist: MStreamingPlaylistVideo
constructor (options: AbstractTranscodingWrapperOptions) {
super()
this.lTags = options.lTags
this.videoLive = options.videoLive
this.videoUUID = options.videoLive.Video.uuid
this.streamingPlaylist = options.streamingPlaylist
this.sessionId = options.sessionId
this.inputLocalUrl = options.inputLocalUrl
this.inputPublicUrl = options.inputPublicUrl
this.fps = options.fps
this.toTranscode = options.toTranscode
this.bitrate = options.bitrate
this.ratio = options.ratio
this.hasAudio = options.hasAudio
this.segmentListSize = options.segmentListSize
this.segmentDuration = options.segmentDuration
this.outDirectory = options.outDirectory
}
abstract run (): Promise<void>
abstract abort (error?: LiveVideoError): void
}
export {
AbstractTranscodingWrapper,
AbstractTranscodingWrapperOptions
}
|