Don't use the max quality file when transcoding to a new resolution

pull/2330/head
Chocobozzz 2019-12-11 09:51:17 +01:00
parent 63247475a1
commit 92e0f42e8c
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 13 additions and 5 deletions

View File

@ -105,7 +105,7 @@ async function mergeAudioVideofile (video: MVideoWithAllFiles, resolution: Video
const transcodeDirectory = CONFIG.STORAGE.TMP_DIR
const newExtname = '.mp4'
const inputVideoFile = video.getMaxQualityFile()
const inputVideoFile = video.getMinQualityFile()
const audioInputPath = getVideoFilePath(video, inputVideoFile)
const videoTranscodedPath = join(transcodeDirectory, video.id + '-transcoded' + newExtname)

View File

@ -1,5 +1,5 @@
import * as Bluebird from 'bluebird'
import { maxBy } from 'lodash'
import { maxBy, minBy } from 'lodash'
import { join } from 'path'
import {
CountOptions,
@ -1802,9 +1802,9 @@ export class VideoModel extends Model<VideoModel> {
this.VideoChannel.Account.isBlocked()
}
getMaxQualityFile <T extends MVideoWithFile> (this: T): MVideoFileVideo | MVideoFileStreamingPlaylistVideo {
getQualityFileBy <T extends MVideoWithFile> (this: T, fun: (files: MVideoFile[], it: (file: MVideoFile) => number) => MVideoFile) {
if (Array.isArray(this.VideoFiles) && this.VideoFiles.length !== 0) {
const file = maxBy(this.VideoFiles, file => file.resolution)
const file = fun(this.VideoFiles, file => file.resolution)
return Object.assign(file, { Video: this })
}
@ -1813,13 +1813,21 @@ export class VideoModel extends Model<VideoModel> {
if (Array.isArray(this.VideoStreamingPlaylists) && this.VideoStreamingPlaylists.length !== 0) {
const streamingPlaylistWithVideo = Object.assign(this.VideoStreamingPlaylists[0], { Video: this })
const file = maxBy(streamingPlaylistWithVideo.VideoFiles, file => file.resolution)
const file = fun(streamingPlaylistWithVideo.VideoFiles, file => file.resolution)
return Object.assign(file, { VideoStreamingPlaylist: streamingPlaylistWithVideo })
}
return undefined
}
getMaxQualityFile <T extends MVideoWithFile> (this: T): MVideoFileVideo | MVideoFileStreamingPlaylistVideo {
return this.getQualityFileBy(maxBy)
}
getMinQualityFile <T extends MVideoWithFile> (this: T): MVideoFileVideo | MVideoFileStreamingPlaylistVideo {
return this.getQualityFileBy(minBy)
}
getWebTorrentFile <T extends MVideoWithFile> (this: T, resolution: number): MVideoFileVideo {
if (Array.isArray(this.VideoFiles) === false) return undefined