Moved ffmpeg to the controller project and added ffprobe

This commit is contained in:
LukePulverenti Luke Pulverenti luke pulverenti 2012-08-18 16:47:10 -04:00
parent 59a3dcc8c1
commit 3e86104641
8 changed files with 100 additions and 64 deletions

View File

@ -197,61 +197,5 @@ namespace MediaBrowser.Api
return null; return null;
} }
private static string _FFMpegDirectory = null;
/// <summary>
/// Gets the folder path to ffmpeg
/// </summary>
public static string FFMpegDirectory
{
get
{
if (_FFMpegDirectory == null)
{
_FFMpegDirectory = System.IO.Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "ffmpeg");
if (!Directory.Exists(_FFMpegDirectory))
{
Directory.CreateDirectory(_FFMpegDirectory);
}
}
return _FFMpegDirectory;
}
}
private static string _FFMpegPath = null;
/// <summary>
/// Gets the path to ffmpeg.exe
/// </summary>
public static string FFMpegPath
{
get
{
if (_FFMpegPath == null)
{
string filename = "ffmpeg.exe";
_FFMpegPath = Path.Combine(FFMpegDirectory, filename);
// Always re-extract the first time to handle new versions
if (File.Exists(_FFMpegPath))
{
File.Delete(_FFMpegPath);
}
// Extract ffprobe
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Api.FFMpeg." + filename))
{
using (FileStream fileStream = new FileStream(_FFMpegPath, FileMode.Create))
{
stream.CopyTo(fileStream);
}
}
}
return _FFMpegPath;
}
}
} }
} }

View File

@ -164,8 +164,8 @@ namespace MediaBrowser.Api.HttpHandlers
startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true; startInfo.RedirectStandardError = true;
startInfo.FileName = ApiService.FFMpegPath; startInfo.FileName = Kernel.Instance.ApplicationPaths.FFMpegPath;
startInfo.WorkingDirectory = ApiService.FFMpegDirectory; startInfo.WorkingDirectory = Kernel.Instance.ApplicationPaths.FFMpegDirectory;
startInfo.Arguments = GetCommandLineArguments(); startInfo.Arguments = GetCommandLineArguments();
Logger.LogInfo(startInfo.FileName + " " + startInfo.Arguments); Logger.LogInfo(startInfo.FileName + " " + startInfo.Arguments);

View File

@ -86,12 +86,6 @@
<Name>MediaBrowser.Model</Name> <Name>MediaBrowser.Model</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FFMpeg\ffmpeg.exe" />
</ItemGroup>
<ItemGroup>
<Content Include="FFMpeg\readme.txt" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>

View File

@ -1,4 +1,5 @@
using System.IO; using System.IO;
using System.Reflection;
using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Configuration;
namespace MediaBrowser.Controller.Configuration namespace MediaBrowser.Controller.Configuration
@ -150,5 +151,94 @@ namespace MediaBrowser.Controller.Configuration
} }
} }
private string _FFMpegDirectory = null;
/// <summary>
/// Gets the folder path to ffmpeg
/// </summary>
public string FFMpegDirectory
{
get
{
if (_FFMpegDirectory == null)
{
_FFMpegDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "FFMpeg");
if (!Directory.Exists(_FFMpegDirectory))
{
Directory.CreateDirectory(_FFMpegDirectory);
}
}
return _FFMpegDirectory;
}
}
private string _FFMpegPath = null;
/// <summary>
/// Gets the path to ffmpeg.exe
/// </summary>
public string FFMpegPath
{
get
{
if (_FFMpegPath == null)
{
string filename = "ffmpeg.exe";
_FFMpegPath = Path.Combine(FFMpegDirectory, filename);
// Always re-extract the first time to handle new versions
if (File.Exists(_FFMpegPath))
{
File.Delete(_FFMpegPath);
}
// Extract exe
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Controller.FFMpeg." + filename))
{
using (FileStream fileStream = new FileStream(_FFMpegPath, FileMode.Create))
{
stream.CopyTo(fileStream);
}
}
}
return _FFMpegPath;
}
}
private string _FFProbePath = null;
/// <summary>
/// Gets the path to ffprobe.exe
/// </summary>
public string FFProbePath
{
get
{
if (_FFProbePath == null)
{
string filename = "ffprobe.exe";
_FFProbePath = Path.Combine(FFMpegDirectory, filename);
// Always re-extract the first time to handle new versions
if (File.Exists(_FFProbePath))
{
File.Delete(_FFProbePath);
}
// Extract exe
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Controller.FFMpeg." + filename))
{
using (FileStream fileStream = new FileStream(_FFProbePath, FileMode.Create))
{
stream.CopyTo(fileStream);
}
}
}
return _FFProbePath;
}
}
} }
} }

View File

@ -0,0 +1 @@
a304265e8410291c1f696e74a4f9b84970bb5753

View File

@ -79,6 +79,13 @@
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FFMpeg\ffmpeg.exe" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="FFMpeg\ffprobe.exe" />
<Content Include="FFMpeg\readme.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.