@ -60,10 +60,6 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
var downloadInfo = _ffmpegInstallInfo ;
var version = downloadInfo . Version ;
if ( string . Equals ( version , "0" , StringComparison . OrdinalIgnoreCase ) )
{
return new FFMpegInfo ( ) ;
}
if ( string . Equals ( version , "path" , StringComparison . OrdinalIgnoreCase ) )
{
@ -75,6 +71,11 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
} ;
}
if ( string . Equals ( version , "0" , StringComparison . OrdinalIgnoreCase ) )
{
return new FFMpegInfo ( ) ;
}
var rootEncoderPath = Path . Combine ( _appPaths . ProgramDataPath , "ffmpeg" ) ;
var versionedDirectoryPath = Path . Combine ( rootEncoderPath , version ) ;
@ -97,7 +98,11 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
// No older version. Need to download and block until complete
if ( existingVersion = = null )
{
await DownloadFFMpeg ( downloadInfo , versionedDirectoryPath , progress ) . ConfigureAwait ( false ) ;
var success = await DownloadFFMpeg ( downloadInfo , versionedDirectoryPath , progress ) . ConfigureAwait ( false ) ;
if ( ! success )
{
return new FFMpegInfo ( ) ;
}
}
else
{
@ -179,7 +184,7 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
return null ;
}
private async Task DownloadFFMpeg ( FFMpegInstallInfo downloadinfo , string directory , IProgress < double > progress )
private async Task < bool > DownloadFFMpeg ( FFMpegInstallInfo downloadinfo , string directory , IProgress < double > progress )
{
foreach ( var url in downloadinfo . DownloadUrls )
{
@ -196,20 +201,14 @@ namespace MediaBrowser.Server.Startup.Common.FFMpeg
} ) . ConfigureAwait ( false ) ;
ExtractFFMpeg ( downloadinfo , tempFile , directory ) ;
return ;
return true ;
}
catch ( Exception ex )
{
_logger . ErrorException ( "Error downloading {0}" , ex , url ) ;
}
}
if ( downloadinfo . DownloadUrls . Length = = 0 )
{
throw new ApplicationException ( "ffmpeg unvailable. Please install it and start the server with two command line arguments: -ffmpeg \"{PATH}\" and -ffprobe \"{PATH}\"" ) ;
}
throw new ApplicationException ( "Unable to download required components. Please try again later." ) ;
return false ;
}
private void ExtractFFMpeg ( FFMpegInstallInfo downloadinfo , string tempFile , string targetFolder )