diff options
Diffstat (limited to 'server/lib')
-rw-r--r-- | server/lib/video-transcoding.ts | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/server/lib/video-transcoding.ts b/server/lib/video-transcoding.ts index 9243d1742..9dd54837f 100644 --- a/server/lib/video-transcoding.ts +++ b/server/lib/video-transcoding.ts | |||
@@ -81,12 +81,52 @@ async function transcodeNewResolution (video: MVideoWithFile, resolution: VideoR | |||
81 | const videoOutputPath = getVideoFilePath(video, newVideoFile) | 81 | const videoOutputPath = getVideoFilePath(video, newVideoFile) |
82 | const videoTranscodedPath = join(transcodeDirectory, getVideoFilename(video, newVideoFile)) | 82 | const videoTranscodedPath = join(transcodeDirectory, getVideoFilename(video, newVideoFile)) |
83 | 83 | ||
84 | const transcodeOptions = resolution === VideoResolution.H_NOVIDEO | ||
85 | ? { | ||
86 | type: 'split-audio' as 'split-audio', | ||
87 | inputPath: videoInputPath, | ||
88 | outputPath: videoTranscodedPath, | ||
89 | resolution, | ||
90 | } | ||
91 | : { | ||
92 | type: 'video' as 'video', | ||
93 | inputPath: videoInputPath, | ||
94 | outputPath: videoTranscodedPath, | ||
95 | resolution, | ||
96 | isPortraitMode: isPortrait | ||
97 | } | ||
98 | |||
99 | await transcode(transcodeOptions) | ||
100 | |||
101 | return onVideoFileTranscoding(video, newVideoFile, videoTranscodedPath, videoOutputPath) | ||
102 | } | ||
103 | |||
104 | /** | ||
105 | * Extract audio into a separate audio-only mp4. | ||
106 | */ | ||
107 | async function splitAudioFile (video: MVideoWithFile) { | ||
108 | const videosDirectory = CONFIG.STORAGE.VIDEOS_DIR | ||
109 | const transcodeDirectory = CONFIG.STORAGE.TMP_DIR | ||
110 | const extname = '.mp4' | ||
111 | const resolution = VideoResolution.H_NOVIDEO | ||
112 | |||
113 | // We are sure it's x264 in mp4 because optimizeOriginalVideofile was already executed | ||
114 | const videoInputPath = join(videosDirectory, video.getVideoFilename(video.getOriginalFile())) | ||
115 | |||
116 | const newVideoFile = new VideoFileModel({ | ||
117 | resolution, | ||
118 | extname, | ||
119 | size: 0, | ||
120 | videoId: video.id | ||
121 | }) | ||
122 | const videoOutputPath = join(CONFIG.STORAGE.VIDEOS_DIR, video.getVideoFilename(newVideoFile)) | ||
123 | const videoTranscodedPath = join(transcodeDirectory, video.getVideoFilename(newVideoFile)) | ||
124 | |||
84 | const transcodeOptions = { | 125 | const transcodeOptions = { |
85 | type: 'video' as 'video', | 126 | type: 'split-audio' as 'split-audio', |
86 | inputPath: videoInputPath, | 127 | inputPath: videoInputPath, |
87 | outputPath: videoTranscodedPath, | 128 | outputPath: videoTranscodedPath, |
88 | resolution, | 129 | resolution |
89 | isPortraitMode: isPortrait | ||
90 | } | 130 | } |
91 | 131 | ||
92 | await transcode(transcodeOptions) | 132 | await transcode(transcodeOptions) |