/// ------------------------------------------------------------------------------------ public static IEnumerable <FFmpegConversionInfo> GetConversions(string fileToConvert) { var iniFile = FileLocator.GetFileDistributedWithApplication("FFmpegConversions.ini"); var ffmpegConversions = new IniDocument(iniFile); var typeToShow = string.Empty; if (FileUtils.AudioFileExtensions.Contains(Path.GetExtension(fileToConvert))) { typeToShow = "audio"; } else if (FileUtils.VideoFileExtensions.Contains(Path.GetExtension(fileToConvert))) { typeToShow = "video"; } for (int i = 0; i < ffmpegConversions.Sections.Count; i++) { var applicableFileType = ffmpegConversions.Sections[i].GetValue("applicableFileType"); if (applicableFileType != null && applicableFileType.Contains(typeToShow)) { yield return(new FFmpegConversionInfo { Name = ffmpegConversions.Sections[i].Name, OutputExtension = ffmpegConversions.Sections[i].GetValue("outputFileExtension"), CommandLine = ffmpegConversions.Sections[i].GetValue("commandLine"), Comments = ffmpegConversions.Sections[i].GetValue("comments"), ApplicableFileType = ffmpegConversions.Sections[i].GetValue("applicableFileType") }); } } if (typeToShow == "video") { yield return(new FFmpegConversionInfo { Name = ConvertMediaDlg.GetFactoryConvertToH263Mp4ConversionName(), OutputExtension = "mp4", CommandLine = "-vb {vb} -codec:v mpeg4 -ab {ab} -codec:a aac -strict -2", ApplicableFileType = "video" }); } yield return(new FFmpegConversionInfo { Name = ConvertMediaDlg.GetFactoryExtractToStandardPcmConversionName(), OutputExtension = "wav", CommandLine = "-vn -codec:a {pcm}", ApplicableFileType = "audio/video" }); yield return(new FFmpegConversionInfo { Name = ConvertMediaDlg.GetFactoryExtractToMp3AudioConversionName(), OutputExtension = "mp3", CommandLine = "-vn -codec:a libmp3lame -ac 1", ApplicableFileType = "audio/video" }); }
/// ------------------------------------------------------------------------------------ private static bool DoPcmConversion(string inputMediaFile, string outputAudioFile, WaveFormat preferredOutputFormat) { string output; var result = MPlayerHelper.CreatePcmAudioFromMediaFile(inputMediaFile, outputAudioFile, preferredOutputFormat, out output); if ((result & MPlayerHelper.ConversionResult.FinishedConverting) != 0) { // Possibly succeeded if ((result & MPlayerHelper.ConversionResult.PossibleError) > 0) { ReportPossibleConversionProblem(output); } return(true); } // If ffmpeg is available, then try it as a fallback, since Mplayer had problems. if (!FFmpegDownloadHelper.DoesFFmpegForSayMoreExist) { return(false); } var model = new ConvertMediaDlgViewModel(inputMediaFile, ConvertMediaDlg.GetFactoryExtractToStandardPcmConversionName()); model.BeginConversion(null, outputAudioFile, preferredOutputFormat); var finishedState = model.ConversionState & ConvertMediaUIState.AllFinishedStates; if (finishedState == ConvertMediaUIState.FinishedConverting) { if ((model.ConversionState & ConvertMediaUIState.PossibleError) > 0) { ReportPossibleConversionProblem(model.ConversionOutput); } return(File.Exists(outputAudioFile)); } if (finishedState == ConvertMediaUIState.ConversionFailed) { var e = model.ConversionException; if (e != null) { throw e; } } return(false); }