From 9b41a0001c67421493a5ac17caf8b37e56c2156d Mon Sep 17 00:00:00 2001 From: Bluebull32 Date: Sat, 31 Jan 2015 14:44:26 -0500 Subject: [PATCH] Update MediaEncoder.cs Currently, the extraction routine is giving ffmpeg 2 minutes to get all the thumbnails from a video. For most videos, this is not enough time. Updating the routine here to poll thumbnail output every 2 minutes, and assume that ffmpeg is still doing well if new jpegs are being created. --- .../Encoder/MediaEncoder.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index e800b4254a..a4ab1c5514 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -501,7 +501,21 @@ namespace MediaBrowser.MediaEncoding.Encoder process.Start(); - var ranToCompletion = process.WaitForExit(120000); + // Need to give ffmpeg enough time to make all the thumbnails, which could be a while, + // but we still need to detect if the process hangs. + // Making the assumption that as long as new jpegs are showing up, everything is good. + + bool isResponsive = true; + int lastCount = 0; + + while (isResponsive && !process.WaitForExit(120000)) + { + int jpegCount = Directory.GetFiles(targetDirectory, "*.jpg").Count(); + isResponsive = (jpegCount > lastCount); + lastCount = jpegCount; + } + + bool ranToCompletion = process.HasExited; if (!ranToCompletion) {