aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2020-12-03 09:38:24 +0100
committerChocobozzz <me@florianbigard.com>2020-12-03 10:05:10 +0100
commit4a54a93941d1c095bf249331df799c51e39c3774 (patch)
tree3a2b2958bf6f845e375790818ec475a1cb2dc23c
parent09c55770bcc96785fb1f199b4cd8ce66b545486a (diff)
downloadPeerTube-4a54a93941d1c095bf249331df799c51e39c3774.tar.gz
PeerTube-4a54a93941d1c095bf249331df799c51e39c3774.tar.zst
PeerTube-4a54a93941d1c095bf249331df799c51e39c3774.zip
Fix live invalid save replay duration
-rw-r--r--server/helpers/ffprobe-utils.ts2
-rw-r--r--server/lib/job-queue/handlers/video-live-ending.ts8
2 files changed, 6 insertions, 4 deletions
diff --git a/server/helpers/ffprobe-utils.ts b/server/helpers/ffprobe-utils.ts
index 1cf397767..4dea6283c 100644
--- a/server/helpers/ffprobe-utils.ts
+++ b/server/helpers/ffprobe-utils.ts
@@ -164,7 +164,7 @@ async function getVideoFileBitrate (path: string, existingProbe?: ffmpeg.Ffprobe
164async function getDurationFromVideoFile (path: string, existingProbe?: ffmpeg.FfprobeData) { 164async function getDurationFromVideoFile (path: string, existingProbe?: ffmpeg.FfprobeData) {
165 const metadata = await getMetadataFromFile(path, existingProbe) 165 const metadata = await getMetadataFromFile(path, existingProbe)
166 166
167 return Math.floor(metadata.format.duration) 167 return Math.round(metadata.format.duration)
168} 168}
169 169
170async function getVideoStreamFromFile (path: string, existingProbe?: ffmpeg.FfprobeData) { 170async function getVideoStreamFromFile (path: string, existingProbe?: ffmpeg.FfprobeData) {
diff --git a/server/lib/job-queue/handlers/video-live-ending.ts b/server/lib/job-queue/handlers/video-live-ending.ts
index 55bee0b83..d3c84ce75 100644
--- a/server/lib/job-queue/handlers/video-live-ending.ts
+++ b/server/lib/job-queue/handlers/video-live-ending.ts
@@ -89,7 +89,7 @@ async function saveLive (video: MVideo, live: MVideoLive) {
89 hlsPlaylist.VideoFiles = [] 89 hlsPlaylist.VideoFiles = []
90 90
91 const replayFiles = await readdir(replayDirectory) 91 const replayFiles = await readdir(replayDirectory)
92 let duration: number 92 let durationDone: boolean
93 93
94 for (const playlistFile of playlistFiles) { 94 for (const playlistFile of playlistFiles) {
95 const playlistPath = join(replayDirectory, playlistFile) 95 const playlistPath = join(replayDirectory, playlistFile)
@@ -109,9 +109,11 @@ async function saveLive (video: MVideo, live: MVideoLive) {
109 isPortraitMode 109 isPortraitMode
110 }) 110 })
111 111
112 if (!duration) { 112 if (!durationDone) {
113 videoWithFiles.duration = await getDurationFromVideoFile(outputPath) 113 videoWithFiles.duration = await getDurationFromVideoFile(outputPath)
114 await videoWithFiles.save() 114 await videoWithFiles.save()
115
116 durationDone = true
115 } 117 }
116 } 118 }
117 119
@@ -126,7 +128,7 @@ async function saveLive (video: MVideo, live: MVideoLive) {
126 await generateVideoMiniature(videoWithFiles, videoWithFiles.getMaxQualityFile(), ThumbnailType.PREVIEW) 128 await generateVideoMiniature(videoWithFiles, videoWithFiles.getMaxQualityFile(), ThumbnailType.PREVIEW)
127 } 129 }
128 130
129 await publishAndFederateIfNeeded(video, true) 131 await publishAndFederateIfNeeded(videoWithFiles, true)
130} 132}
131 133
132async function cleanupLive (video: MVideo, streamingPlaylist: MStreamingPlaylist) { 134async function cleanupLive (video: MVideo, streamingPlaylist: MStreamingPlaylist) {