//Pack Zip File private void PrepareJobForZip() { //Remove trailing digits from output pic (e.g. pic0000.jpg -> pic.jpg) //CAVE! four trailing digits are expected! string sourceDirectory = JobPathHelper.GetLocalJobRenderOutputPathForZip(job); if (!Directory.Exists(sourceDirectory)) { return; } DirectoryInfo dirInfo = new DirectoryInfo(sourceDirectory); FileInfo[] fileInfos = dirInfo.GetFiles(); foreach (FileInfo fileInfo in fileInfos) { string sourceFullName = fileInfo.FullName; string extension = Path.GetExtension(sourceFullName); string dir = Path.GetDirectoryName(sourceFullName); string sourceFileNameWithoutExtension = Path.GetFileNameWithoutExtension(sourceFullName); int len = sourceFileNameWithoutExtension.Length; if (char.IsDigit(sourceFileNameWithoutExtension[len - 4]) && char.IsDigit(sourceFileNameWithoutExtension[len - 1])) { string targetNameWithoutExtension = sourceFileNameWithoutExtension.Substring(0, len - 4); string targetName = Path.Combine(dir, targetNameWithoutExtension + extension); File.Move(sourceFullName, targetName); } } job.Status = JobStatus.JS_ENCODING_DONE; Work(); }
private int ModifyOutputs() { int result = 0; job.OutputExtension = GetOutputExtension(); if (ErrorStatus != JobErrorStatus.JES_NONE) { return(-1); } string outputPath; Dictionary <int, string> loaderFileNameArr = null; if (job.IsZip) { loaderFileNameArr = GetLoaders(); outputPath = JobPathHelper.GetLocalJobRenderOutputPathForZip(job); } else { outputPath = JobPathHelper.GetLocalJobRenderOutputMask(job); } if (SetValueInTool("OutputClips", "", outputPath)) { result++; } int saverResult = 0; for (int i = 0; i < saverCount; i++) { bool subResult = false; if (job.IsZip) { subResult = SetValueInTool(string.Format("Saver{0}", i + 1), "Filename", Path.Combine(outputPath, loaderFileNameArr[i + 1]), false); } else { subResult = SetValueInTool(string.Format("Saver{0}", i + 1), "Filename", outputPath, false); } if (subResult == true) { saverResult++; } } if (saverResult > 0) { result++; } return(result); }
private void CreateDirectories() { bool success = true; List <string> directoryPaths = new List <string>(); // main production folder (e.g. "render_temp\productions\virtualcampaign\12345") directoryPaths.Add(ProductionPathHelper.GetLocalProductionDirectory(production)); //motif folder (e.g. "render_temp\productions\virtualcampaign\12345\motifs") directoryPaths.Add(ProductionPathHelper.GetProductionMotifDirectory(production)); //preview output folder if (production.IsPreview == false) { //hash output folder directoryPaths.Add(ProductionPathHelper.GetLocalProductionHashDirectory(production)); //production preview directory directoryPaths.Add(ProductionPathHelper.GetLocalProductionPreviewDirectory(production)); } else { //product preview directory directoryPaths.Add(ProductionPathHelper.GetLocalProductPreviewProductionDirectory(production)); } //folders for each clip foreach (Job job in production.JobList) { //main clip folder (e.g. "render_temp\productions\virtualcampaign\12345\54321") directoryPaths.Add(JobPathHelper.GetLocalJobDirectory(job)); directoryPaths.Add(JobPathHelper.GetLocalJobRenderOutputDirectory(job)); if (job.IsZip) { //subfolder for each zip production directoryPaths.Add(JobPathHelper.GetLocalJobRenderOutputPathForZip(job)); } } //create all folders foreach (string directoryPath in directoryPaths) { success = success && IOHelper.CreateDirectory(directoryPath); if (!success) { production.ErrorStatus = ProductionErrorStatus.PES_CREATE_DIRECTORIES; return; } } production.Status = ProductionStatus.PS_START_JOBS; Work(); }
private static bool SavePreviewImage(Job job) { if (job.IsDicative) { return(true); } string directoryName; if (job.Production.IsPreview == false) { directoryName = ProductionPathHelper.GetLocalProductionPreviewDirectory(job.Production); } else { directoryName = ProductionPathHelper.GetLocalProductPreviewProductionDirectory(job.Production); } string fileName; if (job.Production.IsZipProduction == false) { job.PreviewFrame = 20; fileName = Path.Combine(new string[] { JobPathHelper.GetLocalJobRenderOutputDirectory(job), "F" + String.Format("{0:D4}", (job.PreviewFrame + job.InFrame)) + job.OutputExtension }); } else { fileName = Directory.GetFiles(JobPathHelper.GetLocalJobRenderOutputPathForZip(job))[0]; } Dictionary <string, string> previewPicDict = new Dictionary <string, string> { { "hdpi.jpg", "640:360" }, { "mdpi.jpg", "320:180" }, { "ldpi.jpg", "160:90" } }; string cmd = " -y -i " + fileName; foreach (KeyValuePair <string, string> kv in previewPicDict) { if (job.Production.IsPreview == false) { cmd += string.Format(" -vf scale={0} {1}", kv.Value, Path.Combine(directoryName, string.Format("film_{0}_preview_{1}", job.Production.FilmID, kv.Key))); } else { cmd += string.Format(" -vf scale={0} {1}", kv.Value, Path.Combine(directoryName, string.Format("{0:0000}_{1}", job.ProductID, kv.Key))); } } //create previews for krpano productions if (job.Production.ContainsPano) { directoryName = ProductionPathHelper.GetLocalProductionHashDirectory(job.Production); IOHelper.CreateDirectory(directoryName); FilmOutputFormat outputFormat = job.Production.Film.FilmOutputFormatList.First(item => item.Name.Contains("K360")); //full size string scale = outputFormat.Width + ":" + outputFormat.Height; cmd += string.Format(" -vf scale={0} {1}", scale, Path.Combine(directoryName, string.Format("film_{0}_preview_{1}.jpg", job.Production.FilmID, scale.Replace(":", "x")))); //quarter size scale = (int)Math.Round(outputFormat.Width / 2d) + ":" + (int)Math.Round(outputFormat.Height / 2d); cmd += string.Format(" -vf scale={0} {1}", scale, Path.Combine(directoryName, string.Format("film_{0}_preview_{1}.jpg", job.Production.FilmID, scale.Replace(":", "x")))); } Encode(job, cmd); return(true); }