mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-04 10:19:35 +02:00
Fix next video state after optimize/audio merge
This commit is contained in:
parent
1772b383de
commit
cc2abbc320
5 changed files with 43 additions and 26 deletions
|
@ -76,9 +76,10 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
|
|||
|
||||
nextTranscodingSequentialJobPayloads = [ ...nextTranscodingSequentialJobPayloads, ...lowerResolutionJobPayloads ]
|
||||
|
||||
const hasChildren = nextTranscodingSequentialJobPayloads.length !== 0
|
||||
mergeOrOptimizePayload = videoFile.isAudio()
|
||||
? this.buildMergeAudioPayload({ videoUUID: video.uuid, isNewVideo })
|
||||
: this.buildOptimizePayload({ videoUUID: video.uuid, isNewVideo, quickTranscode })
|
||||
? this.buildMergeAudioPayload({ videoUUID: video.uuid, isNewVideo, hasChildren })
|
||||
: this.buildOptimizePayload({ videoUUID: video.uuid, isNewVideo, quickTranscode, hasChildren })
|
||||
})
|
||||
} finally {
|
||||
mutexReleaser()
|
||||
|
@ -100,7 +101,9 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
|
|||
|
||||
const mergeOrOptimizeJob = await this.buildTranscodingJob({ payload: mergeOrOptimizePayload, user })
|
||||
|
||||
return JobQueue.Instance.createSequentialJobFlow(...[ mergeOrOptimizeJob, transcodingJobBuilderJob ])
|
||||
await JobQueue.Instance.createSequentialJobFlow(...[ mergeOrOptimizeJob, transcodingJobBuilderJob ])
|
||||
|
||||
await VideoJobInfoModel.increaseOrCreate(video.uuid, 'pendingTranscode')
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
@ -279,15 +282,17 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
|
|||
private buildMergeAudioPayload (options: {
|
||||
videoUUID: string
|
||||
isNewVideo: boolean
|
||||
hasChildren: boolean
|
||||
}): MergeAudioTranscodingPayload {
|
||||
const { videoUUID, isNewVideo } = options
|
||||
const { videoUUID, isNewVideo, hasChildren } = options
|
||||
|
||||
return {
|
||||
type: 'merge-audio-to-webtorrent',
|
||||
resolution: DEFAULT_AUDIO_RESOLUTION,
|
||||
fps: VIDEO_TRANSCODING_FPS.AUDIO_MERGE,
|
||||
videoUUID,
|
||||
isNewVideo
|
||||
isNewVideo,
|
||||
hasChildren
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -295,13 +300,15 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
|
|||
videoUUID: string
|
||||
quickTranscode: boolean
|
||||
isNewVideo: boolean
|
||||
hasChildren: boolean
|
||||
}): OptimizeTranscodingPayload {
|
||||
const { videoUUID, quickTranscode, isNewVideo } = options
|
||||
const { videoUUID, quickTranscode, isNewVideo, hasChildren } = options
|
||||
|
||||
return {
|
||||
type: 'optimize-to-webtorrent',
|
||||
videoUUID,
|
||||
isNewVideo,
|
||||
hasChildren,
|
||||
quickTranscode
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import { buildFileMetadata } from '../video-file'
|
|||
import { VideoPathManager } from '../video-path-manager'
|
||||
import { buildFFmpegVOD } from './shared'
|
||||
import { computeResolutionsToTranscode } from './transcoding-resolutions'
|
||||
import { VideoModel } from '@server/models/video/video'
|
||||
|
||||
// Optimize the original video file and replace it. The resolution is not changed.
|
||||
export async function optimizeOriginalVideofile (options: {
|
||||
|
@ -32,6 +33,7 @@ export async function optimizeOriginalVideofile (options: {
|
|||
|
||||
try {
|
||||
await video.reload()
|
||||
await inputVideoFile.reload()
|
||||
|
||||
const fileWithVideoOrPlaylist = inputVideoFile.withVideoOrPlaylist(video)
|
||||
|
||||
|
@ -88,16 +90,15 @@ export async function transcodeNewWebTorrentResolution (options: {
|
|||
fps: number
|
||||
job: Job
|
||||
}) {
|
||||
const { video, resolution, fps, job } = options
|
||||
const { video: videoArg, resolution, fps, job } = options
|
||||
|
||||
const transcodeDirectory = CONFIG.STORAGE.TMP_DIR
|
||||
const newExtname = '.mp4'
|
||||
|
||||
const inputFileMutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
|
||||
const inputFileMutexReleaser = await VideoPathManager.Instance.lockFiles(videoArg.uuid)
|
||||
|
||||
try {
|
||||
await video.reload()
|
||||
|
||||
const video = await VideoModel.loadFull(videoArg.uuid)
|
||||
const file = video.getMaxQualityFile().withVideoOrPlaylist(video)
|
||||
|
||||
const result = await VideoPathManager.Instance.makeAvailableVideoFile(file, async videoInputPath => {
|
||||
|
@ -141,16 +142,15 @@ export async function mergeAudioVideofile (options: {
|
|||
fps: number
|
||||
job: Job
|
||||
}) {
|
||||
const { video, resolution, fps, job } = options
|
||||
const { video: videoArg, resolution, fps, job } = options
|
||||
|
||||
const transcodeDirectory = CONFIG.STORAGE.TMP_DIR
|
||||
const newExtname = '.mp4'
|
||||
|
||||
const inputFileMutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
|
||||
const inputFileMutexReleaser = await VideoPathManager.Instance.lockFiles(videoArg.uuid)
|
||||
|
||||
try {
|
||||
await video.reload()
|
||||
|
||||
const video = await VideoModel.loadFull(videoArg.uuid)
|
||||
const inputVideoFile = video.getMinQualityFile()
|
||||
|
||||
const fileWithVideoOrPlaylist = inputVideoFile.withVideoOrPlaylist(video)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue