public virtual OperationStatus GenerateVideo() { try { var converter = new NReco.VideoConverter.FFMpegConverter(); converter.LogReceived += Converter_LogReceived; var commandString = config.toCommandString(); converter.Invoke(commandString); return(new OperationStatus(true, "Successfully Converted")); } catch (Exception ex) { return(new OperationStatus(false, "Exception Occoured", "Exception: " + ex.Message)); } }
private bool Rotate(FileEntry fileEntry, int rotateDegrees, ref string error) { bool coverted = false; Metadata metadata = databaseAndCacheMetadataExiftool.ReadMetadataFromCacheOrDatabase(new FileEntryBroker(fileEntry, MetadataBrokerType.ExifTool)); if (metadata == null) { error += (error == "" ? "" : "\r\n") + "Failed to rotated: " + fileEntry.FileFullPath + "\r\nMetadata was missing, need load metadata first."; } else if (ImageAndMovieFileExtentions.ImageAndMovieFileExtentionsUtility.IsImageFormat(fileEntry.FileFullPath)) { try { ImageAndMovieFileExtentions.ImageAndMovieFileExtentionsUtility.RoateImage(fileEntry.FileFullPath, rotateDegrees); coverted = true; } catch (Exception ex) { coverted = false; error += (error == "" ? "" : "\r\n") + "Failed to rotated: " + fileEntry.FileFullPath + "\r\nError message: " + ex.Message; } } else if (ImageAndMovieFileExtentions.ImageAndMovieFileExtentionsUtility.IsVideoFormat(fileEntry.FileFullPath)) { string outputFolder = Path.GetDirectoryName(fileEntry.FileFullPath); string tempOutputfile = Path.Combine(outputFolder, "temp_" + Guid.NewGuid().ToString() + Path.GetExtension(fileEntry.FileFullPath)); try { timerSaveProgessRemoveProgress.Start(); var ffMpeg = new NReco.VideoConverter.FFMpegConverter(); durationMpegVideoConvertion = new TimeSpan(-1); ffMpeg.ConvertProgress += FfMpeg_ConvertProgress; ffMpeg.LogReceived += FfMpeg_LogReceived; switch (rotateDegrees) { case 90: ffMpeg.Invoke("-y -i \"" + fileEntry.FileFullPath + "\" -vf \"transpose=1\" \"" + tempOutputfile + "\""); break; case 180: ffMpeg.Invoke("-y -i \"" + fileEntry.FileFullPath + "\" -vf \"transpose=2,transpose=2\" \"" + tempOutputfile + "\""); break; case 270: ffMpeg.Invoke("-y -i \"" + fileEntry.FileFullPath + "\" -vf \"transpose=2\" \"" + tempOutputfile + "\""); break; default: throw new NotImplementedException(); } coverted = true; } catch (Exception ex) { coverted = false; error += (error == "" ? "" : "\r\n") + "Failed to rotated: " + fileEntry.FileFullPath + "\r\nError message: " + ex.Message; } try { if (coverted && new System.IO.FileInfo(tempOutputfile).Length > 0) { FileHandler.Delete(fileEntry.FileFullPath, Properties.Settings.Default.MoveToRecycleBin); FileHandler.Move(tempOutputfile, fileEntry.FileFullPath); } else { File.Delete(tempOutputfile); } } catch (Exception ex) { error += (error == "" ? "" : "\r\n") + ex.Message; } } if (coverted) //Replicate metadata and save back to media file { Metadata metadataOriginal = new Metadata(MetadataBrokerType.Empty); if (metadata != null) { Metadata metadataToSave = new Metadata(metadata); metadataToSave.PersonalRegionRotate(rotateDegrees); AddQueueSaveUsingExiftoolMetadataUpdatedByUserLock(metadataToSave, metadataOriginal); } } return(coverted); }