Reload the video after waiting for the files lock

pull/5593/head
Chocobozzz 2023-05-05 13:41:48 +02:00 committed by Chocobozzz
parent e7d8e2b245
commit a687879e94
10 changed files with 27 additions and 11 deletions

View File

@ -35,6 +35,9 @@ async function doCreateAction (payload: ManageVideoTorrentPayload & { action: 'c
const fileMutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
try {
await video.reload()
await file.reload()
await createTorrentAndSetInfoHash(video, file)
// Refresh videoFile because the createTorrentAndSetInfoHash could be long

View File

@ -19,17 +19,18 @@ export async function processMoveToObjectStorage (job: Job) {
const payload = job.data as MoveObjectStoragePayload
logger.info('Moving video %s in job %s.', payload.videoUUID, job.id)
const fileMutexReleaser = await VideoPathManager.Instance.lockFiles(payload.videoUUID)
const video = await VideoModel.loadWithFiles(payload.videoUUID)
// No video, maybe deleted?
if (!video) {
logger.info('Can\'t process job %d, video does not exist.', job.id, lTagsBase(payload.videoUUID))
fileMutexReleaser()
return undefined
}
const lTags = lTagsBase(video.uuid, video.url)
const fileMutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
try {
if (video.VideoFiles) {
logger.debug('Moving %d webtorrent files for video %s.', video.VideoFiles.length, video.uuid, lTags)

View File

@ -218,6 +218,7 @@ async function assignReplayFilesToVideo (options: {
for (const concatenatedTsFile of concatenatedTsFiles) {
const inputFileMutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
await video.reload()
const concatenatedTsFilePath = join(replayDirectory, concatenatedTsFile)

View File

@ -72,7 +72,6 @@ export async function onHLSVideoFileTranscoding (options: {
const mutexReleaser = await VideoPathManager.Instance.lockFiles(video.uuid)
try {
// VOD transcoding is a long task, refresh video attributes
await video.reload()
const videoFilePath = VideoPathManager.Instance.getFSVideoFileOutputPath(playlist, videoFile)

View File

@ -40,6 +40,9 @@ export class TranscodingJobQueueBuilder extends AbstractJobBuilder {
: await VideoPathManager.Instance.lockFiles(video.uuid)
try {
await video.reload()
await videoFile.reload()
await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), async videoFilePath => {
const probe = await ffprobePromise(videoFilePath)

View File

@ -36,6 +36,9 @@ export class TranscodingRunnerJobBuilder extends AbstractJobBuilder {
: await VideoPathManager.Instance.lockFiles(video.uuid)
try {
await video.reload()
await videoFile.reload()
await VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), async videoFilePath => {
const probe = await ffprobePromise(videoFilePath)

View File

@ -183,8 +183,10 @@ describe('Test Live transcoding in peertube-runner program', function () {
})
after(async function () {
await peertubeRunner.unregisterPeerTubeInstance({ server: servers[0] })
peertubeRunner.kill()
if (peertubeRunner) {
await peertubeRunner.unregisterPeerTubeInstance({ server: servers[0] })
peertubeRunner.kill()
}
await cleanupTests(servers)
})

View File

@ -108,8 +108,10 @@ describe('Test studio transcoding in peertube-runner program', function () {
})
after(async function () {
await peertubeRunner.unregisterPeerTubeInstance({ server: servers[0] })
peertubeRunner.kill()
if (peertubeRunner) {
await peertubeRunner.unregisterPeerTubeInstance({ server: servers[0] })
peertubeRunner.kill()
}
await cleanupTests(servers)
})

View File

@ -334,8 +334,10 @@ describe('Test VOD transcoding in peertube-runner program', function () {
})
after(async function () {
await peertubeRunner.unregisterPeerTubeInstance({ server: servers[0] })
peertubeRunner.kill()
if (peertubeRunner) {
await peertubeRunner.unregisterPeerTubeInstance({ server: servers[0] })
peertubeRunner.kill()
}
await cleanupTests(servers)
})

View File

@ -21,8 +21,8 @@ function sendRTMPStream (options: {
command.outputOption('-c copy')
} else {
command.outputOption('-c:v libx264')
command.outputOption('-g 50')
command.outputOption('-keyint_min 2')
command.outputOption('-g 120')
command.outputOption('-x264-params "no-scenecut=1"')
command.outputOption('-r 60')
}