public static void ConvertTask(TASK Task, FORMAT formatToConvert) { try { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().UpdateTask(Task); FFMpegService.Execute(Task.FILE_URL_TEMP, formatToConvert.FORMAT_FFMPEG_VALUE, Task.FILE_URL_DESTINATION); bool fileIsAvailable = CheckFileIsAvailable(Task.FILE_URL_DESTINATION); if (!fileIsAvailable) { throw new Exception(); } Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; } catch (Exception e) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().UpdateTask(Task); TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, DESCRIPTION = e.Message + " " + e.InnerException + " " + e.InnerException, METHOD = "Conversion FFMPEG Convert Task", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); } }
public static int GetNumberOfSplits(TASK task) { var listParam = new PARAM_LENGTH_Service().GetAll().OrderByDescending(q => q.PK_ID_PARAM_LENGTH); try { double megabytes = ConverterUtil.ConvertBytesToMegabytes((double)task.LENGTH); foreach (var param in listParam) { if (megabytes >= param.LENGTH) { return((int)param.NB_OF_SPLITS); } } return(1); } catch (Exception e) { task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().UpdateTask(task); TRACE trace = new TRACE() { FK_ID_TASK = task.PK_ID_TASK, FK_ID_SERVER = 1, METHOD = "GetNumberOfSplits problème lors de la recupération de la length", TYPE = "ERROR", DESCRIPTION = e.Message + " " + e.InnerException, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName }; new TRACE_Service().AddTrace(trace); return(0); } }
public static bool DoFFmpegConversion(TASK Task) { InitWorkspace(); FORMAT formatToConvert = new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_TO_CONVERT); try { if (Task.STATUS == (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().AddOrUpdateTask(Task); List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask(Task.PK_ID_TASK); bool isMerged = FFmpegMergeSplits(Task, listOfSubTaskByParent); if (isMerged) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; } } else if (!GetTaskAndSetIfTaskIsSplitted(Task, formatToConvert)) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().AddOrUpdateTask(Task); FFMpegService.Execute(Task.FILE_URL_TEMP, formatToConvert.FORMAT_FFMPEG_VALUE, Task.FILE_URL_DESTINATION); Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; // Verification si c'est une sous tache // On vérifie si les sous taches ont été effectué ou pas. if (Task.FK_ID_PARENT_TASK != null) { List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask((int)Task.FK_ID_PARENT_TASK); int totalEffectue = listOfSubTaskByParent.Count(x => x.STATUS == (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE); if (totalEffectue.Equals(listOfSubTaskByParent.Count)) { TASK MotherTask = new TASK_Service().GetTaskById((int)Task.FK_ID_PARENT_TASK); MotherTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER; new TASK_Service().AddOrUpdateTask(MotherTask); } } } new TASK_Service().AddOrUpdateTask(Task); return(true); } catch (Exception e) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().AddOrUpdateTask(Task); TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, DESCRIPTION = e.Message, METHOD = "CONVERSION FFMPEG", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); return(false); } }
public static void Main(String[] args) { // Remove default listener if you want // Debug.Listeners.Remove("Default"); Debug.Listeners.Add(new TraceWinListener()); TRACE.WL("Hello, world"); TRACE.WL("Today is {0}", DateTime.Now); TRACE.WL("Ciao!"); }
/*--- メソッド:Public ------------------------------------------------------------------------------------------------------------------------------------------*/ /// <summary> プロパティ/フィールドを初期化します。 /// </summary> public void InitData(LogStatusDefinition in_LD, LoggerSetting in_LS) { this.FATAL = new FATAL(in_LD, in_LS); this.ERROR = new ERROR(in_LD, in_LS); this.WARNING = new WARNING(in_LD, in_LS); this.NOTICE = new NOTICE(in_LD, in_LS); this.INFO = new INFO(in_LD, in_LS); this.MEMO = new MEMO(in_LD, in_LS); this.DEBUG = new DEBUG(in_LD, in_LS); this.TRACE = new TRACE(in_LD, in_LS); }
public static bool GetTaskAndSetIfTaskIsSplitted(TASK Task, FORMAT Format) { bool result = false; try { TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, METHOD = "CREATION DES FICHIERS TEMPORAIRES", TYPE = "INFO" }; new TRACE_Service().AddTrace(Trace); string fileUrl = Task.FILE_URL; int count = (fileUrl.LastIndexOf(@"\") + 1); string fileName = fileName = fileUrl.Substring(count); // si le fichier n'a pas été encore splitté if (Task.FILE_URL_TEMP == null) { Task.FILE_URL_TEMP = sourceFolder + @"\" + fileName; if (File.Exists(fileUrl)) { if (File.Exists(Task.FILE_URL_TEMP)) { File.Delete(Task.FILE_URL_TEMP); } File.Copy(fileUrl, Task.FILE_URL_TEMP); } } if (VerifyTaskLengthAndSplitTask(Task)) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.DECOUPE; result = true; } else { count = (fileName.LastIndexOf('.') + 1); fileName = fileName.Substring(0, count); Task.FILE_URL_DESTINATION = destinationFolder + @"\" + fileName + Format.FORMAT_NAME; result = false; } new TASK_Service().AddOrUpdateTask(Task); return(result); } catch (Exception e) { TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, DESCRIPTION = e.Message, METHOD = "CREATION DES FICHIERS TEMPORAIRES", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); return(false); } }
public bool AddTrace(TRACE trace) { if (UoW.TRACE_Repository.Insert(trace)) { UoW.Save(); return(true); } else { return(false); } }
public static void CreateWorkDirectories(string folder) { try { if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); } } catch (Exception e) { TRACE Trace = new TRACE { FK_ID_SERVER = 1, DESCRIPTION = e.Message + " " + e.InnerException, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, METHOD = "CREATION DES REPERTOIRES " + folder, TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); } }
public static bool GetTaskAndSetIfTaskIsSplitted(TASK Task, FORMAT Format) { bool result = false; try { TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, NOM_SERVER = System.Environment.MachineName, DATE_TRACE = DateTime.Now, METHOD = "GetTaskAndSetIfTaskIsSplitted", TYPE = "INFO" }; new TRACE_Service().AddTrace(Trace); string fileName = GetFileName(Task); // si le fichier n'a pas été encore copié, on le copie dans notre repertoire temporaire. CopyFileInTempFolder(fileName, Task); // On verifie si la tache doit être splittée ou non, si c'est le cas nous la splittons bool isSplitted = VerifyTaskLengthAndSplitTask(Task); if (isSplitted) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.DECOUPE; result = true; } else { int count = (fileName.LastIndexOf('.') + 1); fileName = fileName.Substring(0, count); Task.FILE_URL_DESTINATION = destinationFolder + @"\" + fileName + Format.FORMAT_NAME; result = false; } new TASK_Service().UpdateTask(Task); return(result); } catch (Exception e) { TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, DESCRIPTION = e.Message + " " + e.InnerException + " " + e.InnerException, METHOD = "CREATION DES FICHIERS TEMPORAIRES", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); return(false); } }
public static bool FFmpegMergeSplits(TASK Task, List <TASK> ListSubTasks) { try { // On récupère la liste des urls d'acces des sous taches pour reassemblage List <string> listOfUrls = new List <string>(); foreach (var item in ListSubTasks) { listOfUrls.Add(item.FILE_URL_DESTINATION); } // On va former l'url de destination du fichier de base string fileUrl = Task.FILE_URL_TEMP; int count = (fileUrl.LastIndexOf(@"\") + 1); string fileName = fileName = fileUrl.Substring(count); count = (fileName.LastIndexOf('.') + 1); fileName = fileName.Substring(0, count); Task.FILE_URL_DESTINATION = destinationFolder + @"\" + fileName + new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_TO_CONVERT).FORMAT_NAME; // On merge les splits VideoFile.MergeVideoWithSplits(listOfUrls, Task.FILE_URL_DESTINATION); return(true); } catch (Exception e) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().UpdateTask(Task); TRACE trace = new TRACE() { FK_ID_TASK = Task.PK_ID_TASK, FK_ID_SERVER = 1, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, METHOD = "FFMPEG Merge Split", TYPE = "ERROR", DESCRIPTION = e.Message + " " + e.InnerException }; new TRACE_Service().AddTrace(trace); return(false); } }
public static bool ExtractAudioSegment(TASK Task) { try { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; Task.DATE_BEGIN_CONVERSION = DateTime.Now; string fileName = GetFileName(Task); CopyFileInTempFolder(fileName, Task); new TASK_Service().UpdateTask(Task); VideoFile VideoFile = new VideoFile(Task.FILE_URL_TEMP); VideoFile.GetVideoInfo(); // On set le debut du premier split TimeSpan begin = new TimeSpan(0); // on récupère la durée totale de la video long durationTotal = VideoFile.Duration.Ticks; int count = (fileName.LastIndexOf('.') + 1); fileName = fileName.Substring(0, count); Task.FILE_URL_DESTINATION = destinationFolder + @"\" + fileName + Task.FORMAT.FORMAT_NAME; // A voir pour l'extraction d'un morceau de son particulier VideoFile.ExtractAudioSegment(begin.Ticks, durationTotal, Task.FORMAT.FORMAT_NAME, Task.FILE_URL_DESTINATION); Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; Task.DATE_END_CONVERSION = DateTime.Now; new TASK_Service().UpdateTask(Task); return(true); } catch (Exception e) { Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; Task.DATE_END_CONVERSION = DateTime.Now; new TASK_Service().UpdateTask(Task); var trace = new TRACE() { FK_ID_TASK = Task.PK_ID_TASK, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, DESCRIPTION = e.Message + " " + e.InnerException, METHOD = "Erreur lors de l'extraction audio", TYPE = "ERROR" }; new TRACE_Service().AddTrace(trace); return(false); } }
public static void SendMail(string typeDemande, TASK task = null, PanierViewModel panier = null) { try { SmtpClient client = new SmtpClient(); client.EnableSsl = true; MailMessage mm = task != null?GenerateMailMessage(typeDemande, task) : GenerateMailMessage(typeDemande, null, panier); client.Send(mm); //TRACE Trace = new TRACE { FK_ID_TASK = task.PK_ID_TASK, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, FK_ID_SERVER = 1, DESCRIPTION = mm.ToString(), METHOD = "MAIL APRES CONVERSION", TYPE = "INFO" }; //new TRACE_Service().AddTrace(Trace); } catch (Exception e) { TRACE Trace = new TRACE { FK_ID_TASK = task != null ? task.PK_ID_TASK : panier.TransactionId, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, FK_ID_SERVER = 1, DESCRIPTION = e.Message, METHOD = "MAIL APRES DEMANDE/CONVERSION", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); } }
public static void CreateSplit(TASK SubTask, PARAM_SPLIT ParamSplit) { try { VideoFile split = new VideoFile(SubTask.FILE_URL); int count = SubTask.FILE_URL.LastIndexOf('.'); string leftPart = SubTask.FILE_URL.Substring(0, count); string format = SubTask.FILE_URL.Substring(count); string fullName = leftPart + "_" + SubTask.PK_ID_TASK.ToString() + format; SubTask.FILE_URL = fullName; SubTask.FILE_URL_TEMP = fullName; // On met un statut temporaire a 0 pour initialiser la tache SubTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.SPLIT_EN_COURS; new TASK_Service().UpdateTask(SubTask); // on extrait notre split split.ExtractVideoSegment(fullName, Convert.ToInt64(ParamSplit.BEGIN_PARAM_SPLIT), Convert.ToInt64(ParamSplit.END_PARAM_SPLIT), Core.Transcoder.FFmpegWrapper.Videos.VideoFormat.avi); SubTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.A_FAIRE; new TASK_Service().UpdateTask(SubTask); } catch (Exception e) { SubTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().UpdateTask(SubTask); TRACE trace = new TRACE() { FK_ID_TASK = SubTask.PK_ID_TASK, FK_ID_SERVER = 1, METHOD = "FFMPEG Split", TYPE = "ERROR", DESCRIPTION = e.Message + " " + e.InnerException, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName }; new TRACE_Service().AddTrace(trace); } }
/// <summary> /// Initializes a new instance of the <see cref="MBUS_message"/> class. /// </summary> /// <param name="homePool">The home pool.</param> internal MBUS_message(IBufferLink homePool) : base(300, homePool, true) { myTrace = new TRACE(MBUSTrace); }
//ConfigurationManager.AppSettings["TranscoderTempRootDestination"]; public static bool DoFFmpegConversion(TASK Task) { InitWorkspace(); // on récupère le format de conversion de la tache FORMAT formatToConvert = new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_TO_CONVERT); FORMAT formatBase = new FORMAT_Service().GetFormatById((int)Task.FK_ID_FORMAT_BASE); var formatTypeBase = new FORMAT_TYPE_Service().findById((int)formatBase.FK_ID_FORMAT_TYPE); FORMAT_TYPE formatTypeDestination = new FORMAT_TYPE_Service().findById((int)Task.FORMAT.FK_ID_FORMAT_TYPE); // S'il s'agit d'une extraction audio if (formatTypeDestination != null && formatTypeBase.PK_ID_FORMAT_TYPE == (int)EnumManager.FORMAT_TYPE.VIDEO && formatTypeDestination.PK_ID_FORMAT_TYPE == (int)EnumManager.FORMAT_TYPE.AUDIO) { return(ExtractAudioSegment(Task)); } try { // On vérifie si la tache est à reassembler ou pas if (Task.STATUS == (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER) { // On met le statut en cours Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EN_COURS; new TASK_Service().UpdateTask(Task); // On liste les sous taches List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask(Task.PK_ID_TASK); // On va merge les sous taches pour renvoyer la conversion complete bool isMerged = FFmpegMergeSplits(Task, listOfSubTaskByParent); // si le merge s'est bien passé on change le statut de notre Tache. if (isMerged) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE; // On envoie la notification par mail MailUtil.SendMail(StringManager.CONVERSION_TERMINEE, Task); } } else // Dans le cas ou la tache n'a pas besoin d'etre splitté, on fait le traitement habituel. if (!GetTaskAndSetIfTaskIsSplitted(Task, formatToConvert)) { // On lance la conversion ConvertTask(Task, formatToConvert); // Verification si c'est une sous tache // On vérifie si les sous taches ont été effectuées ou pas. if (Task.FK_ID_PARENT_TASK != null) { List <TASK> listOfSubTaskByParent = new TASK_Service().GetSubTaskByMotherTask((int)Task.FK_ID_PARENT_TASK); int totalEffectue = listOfSubTaskByParent.Count(x => x.STATUS == (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE); if (totalEffectue.Equals(listOfSubTaskByParent.Count)) { TASK MotherTask = new TASK_Service().GetTaskById((int)Task.FK_ID_PARENT_TASK); MotherTask.STATUS = (int)EnumManager.PARAM_TASK_STATUS.A_REASSEMBLER; new TASK_Service().UpdateTask(MotherTask); } } if (Task.STATUS == (int)EnumManager.PARAM_TASK_STATUS.EFFECTUE && Task.FK_ID_PARENT_TASK == null) { // On envoie la notification par mail MailUtil.SendMail(StringManager.CONVERSION_TERMINEE, Task); } } new TASK_Service().UpdateTask(Task); return(true); } catch (Exception e) { Task.DATE_END_CONVERSION = DateTime.Now; Task.STATUS = (int)EnumManager.PARAM_TASK_STATUS.ERREUR; new TASK_Service().UpdateTask(Task); TRACE Trace = new TRACE { FK_ID_TASK = Task.PK_ID_TASK, DATE_TRACE = DateTime.Now, NOM_SERVER = System.Environment.MachineName, FK_ID_SERVER = 1, DESCRIPTION = e.Message + " " + e.InnerException, METHOD = "CONVERSION FFMPEG", TYPE = "ERROR" }; new TRACE_Service().AddTrace(Trace); return(false); } }