Use the parent clip last frame and new-segment join for extensions, not the stitched file's first frame. Show this account's library storage in Settings.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs'
|
||||
import { join } from 'node:path'
|
||||
import type { Job } from '~/server/utils/jobs'
|
||||
import { extractFirstFrameFromBuffer } from '~/server/utils/ffmpeg'
|
||||
import { mergePermanenceRefs } from '~/utils/globalLocks'
|
||||
|
||||
export interface PendingJob {
|
||||
@@ -270,11 +271,17 @@ export async function completePendingIfReady(pending: PendingJob) {
|
||||
if (inFlight()) return null
|
||||
const afterDownload = alreadySaved()
|
||||
if (afterDownload) return afterDownload
|
||||
let segmentFirstFrame: Buffer | undefined
|
||||
if (pending.extendPart1Path && pending.extendTmpDir) {
|
||||
if (!existsSync(pending.extendPart1Path)) {
|
||||
removeExtendTemp(pending.extendTmpDir)
|
||||
throw createError({ statusCode: 500, statusMessage: 'Extension source clip was missing during stitch' })
|
||||
}
|
||||
try {
|
||||
segmentFirstFrame = await extractFirstFrameFromBuffer(buffer, pending.extendTmpDir)
|
||||
} catch {
|
||||
// ensureClipFirstFrame will seek to the join if this frame is missing
|
||||
}
|
||||
try {
|
||||
buffer = await stitchExtension({
|
||||
part1Path: pending.extendPart1Path,
|
||||
@@ -310,7 +317,8 @@ export async function completePendingIfReady(pending: PendingJob) {
|
||||
stillId: pending.stillId,
|
||||
sound: pending.sound,
|
||||
globalLocks: pending.globalLocks,
|
||||
permanenceRefs: mergePermanenceRefs(pending.permanenceRefs, pending.shotPermanenceRefs?.[pending.chainIndex || 0])
|
||||
permanenceRefs: mergePermanenceRefs(pending.permanenceRefs, pending.shotPermanenceRefs?.[pending.chainIndex || 0]),
|
||||
segmentFirstFrame
|
||||
})
|
||||
await purgeComfyArtifacts({
|
||||
video,
|
||||
|
||||
Reference in New Issue
Block a user